Re: patch for 2.1.50 refill_freelist

Bill Hawes (whawes@star.net)
Fri, 15 Aug 1997 13:13:45 -0400


Gadi Oxman wrote:

> Here is another attempt to address the "couldn't get a free page" effect..
> I think that the basic problem during "bonnie" is:
>
> - We are being flooded with dirty buffers.
>
> - The buffer cache can't recycle unused pages from the page cache
> directly. Instead, grow_buffers() can only reclaim the small
> "completely free pages" pool, and wait for kswapd() to provide
> the dynamic "refill free pages pool" response.
>
> ==> we should sleep in grow_buffers(), to allow kswapd() to
> refill the free pages pool.

Hi Gadi,

There's another constraint in 2.0.31, which is that buffer heads are
needed for swapping, but there's no distinction made between those
needed for swapping and for regular buffers. So in 2.0.31 I'm concerned
that generating swap requests to get buffers might lead to buffer head
deadlocks. This constraint has been removed in the 2.1.xx kernels by
separating async (swapping) buffer heads from the regular case.

I agree that there's a problem with the current code not waking bdflush
soon enough when there are lots of dirty buffers. But I'm not sure how
to handle this best within the 2.0.31 framework ...

Regards,
Bill