Re: Linux-2.2.0 bad VM behaviour "dd if=/dev/zero of=/dev/hdc bs=256k"

Andrea Arcangeli (andrea@e-mind.com)
Wed, 27 Jan 1999 22:24:09 +0100 (CET)


On Wed, 27 Jan 1999, Linus Torvalds wrote:

> In fact we _do_ have support for it there already (in "refile_buffer()" to
> be exact, and we have this "too_many dirty blocks - wake up bdflush"
> thing, but it should be more aggressive I think.

My point is that I don't want more dirty buffers than the maximal number
of write request that can be in fly by ll_rw_block(). So it looked to me
that was the best thing to do... That way I am pretty sure that I'll be
able to alloc memory without any kind of harm. Otherwise I get a fixed
amount of buffers unfreeable because dirty, until the process that is
using the block device stops.

The problem of the kflushd approch is that once we started ll_rw_block()
via kflushd (or `update` bdflush()/sync()) the process _continue_ to write
data and to generate new hogging dirty buffers, and so the number of dirty
buffers remains _constant_ for a long time and all other process stalls
until the process that is playing with the block device (unkillable for a
long time) stops and the number of dirty buffer slowly decrease to a
rasonable value again.

Andrea Arcangeli

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/