Re: [PATCH] kswapd shall not sleep during page shortage

Nick Piggin
2004-11-10T03:12:21Z

Andrew Morton wrote:

>Nick Piggin <piggin@cyberone.com.au> wrote:
>
>>Shall we crank up min_free_kbytes a bit?
>>
>
>May as well. or we could do something fancy in register_netdevice().
>
>

OK. If you look at my tables, in practice 2.6.8 will actually be
keeping more memory free anyway, in the form of ZONE_DMA free. So
we could quadruple min_free_kbytes, *but* 2.6.10's kswapd will
then free a lot further than 2.6.8.

So I'd advocate doubling min_free_kbytes, *and* squashing watermarks
together.

>> We could also compress the watermarks, while increasing pages_min? That
>> will increase the GFP_ATOMIC buffer as well, without having free memory
>> run away on us (eg pages_min = 2*x, pages_low = 5*x/2, pages_high = 3*x)?
>>
>
>There are also hidden intermediate levels for rt-policy tasks.
>
>
>

Yep, they all get keyed off pages_min - so if we just double pages_min,
we're effectively doubling that GFP_ATOMIC buffer and the rt_task
buffer(*), while halving the asynch reclaim marks (pages_low and
pages_high).

Now combine that with doubling min_free_kbytes, and we have our
quadrupled GFP_ATOMIC buffer, restoring parity with 2.6.8, while also
keeping the asynch reclaim marks in the same place. Make sense?

(*) The rt_task buffer was broken in 2.6.8 anyway because rt tasks could
allocate far more than GFP_ATOMIC allocations.