[Pvfs2-developers] threaded client-core and the device thread
Murali Vilayannur
murali.vilayannur at gmail.com
Thu Oct 19 00:45:37 EDT 2006
Hi Dean,
Searching for a slot out of a 5 element array should not be that slow (I
hope :))
The only other thing I can think of: by breaking down buffers into 4 KB
chunks (page size chunks that is)
for copying, we could be slowing down when there are many such
buffers/producer threads.
Hmm.. oh well I am handwaving. I will dig a little bit later this week
and see if I can come up with something concrete.
thanks,
Murali
> Yes, this is exactly what we are seeing. I have never tried a single
> buffer, but looking a bit into the kernel code I can see some areas
> that are a little inefficient.
> 1) In wait_for_a_slot <ident?v=pvfs2;i=wait_for_a_slot>, while holding
> a spinlock, a thread must linearly search through all buffers to find
> an available buffer. If one is found, then fine. If all buffers are
> full (which is probably the common case if doing large I/O), it sleeps
> until woken up, at which point it starts all over again, rescanning
> the entire list for a buffer. Technically, we could have starvation
> for a thread, who continually gets unlucky about finding an empty
> buffer. My guess would be that this code is small should happen
> really fast no matter what, but who knows.....
>
> 2) With multiple buffers, the threads will be fighting over using kmap
> to copy the data to the mmapped buffer. From my understanding of the
> kernel (which may be outdated), there are very few kmap spinlocks
> available, effectively serializing the process of copying data into
> the mmapped buffers. As we increase the number of buffers, this
> contention will increase and the time to copy the data for any single
> buffer will increase.
>
More information about the Pvfs2-developers
mailing list