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. -Matt Matthew Dillon <dil...@backplane.com>