DragonFly kernel List (threaded) for 2009-09
I/O scheduler updates to help HAMMER.
I am trying very hard to improve HAMMER's performance for this release.
One of the issues we've had is that HAMMER really likes to cache dirty
buffers. A great deal of the flushing of dirty buffers is disconnected
from the processes issuing the original I/O and pushed to disk by
the HAMMER flusher threads.
Up until now this meant that when the system buffer cache was full of
dirty buffers, the system did not discriminate between processes trying
to write a small amount of data verses a lot of data, and so the
processes writing small amounts of data wound up getting stalled along
with the processes writing large amounts of data. For example, when
'vi' would create a backup file.
Now with the scheduler the system will penalize the processes responsible
for the heavier write loads by making them wait for a larger portion
of the dirty buffers in the buffer cache to flush before letting them
continue. And, at the same time the system will allow processes with
low write loads to continue creating dirty buffers even if the number
of dirty buffers in the system is higher then desired.
This will not magically make light-weight programs (ls, etc) work
perfectly in the face of a heavy write load from, e.g. a tar extraction,
but it should improve their performance significantly.