Re: [PATCH 04/10] mm: slub: add knowledge of reserve pages

Matt Mackall
2007-08-08T01:45:03Z

On Tue, Aug 07, 2007 at 05:13:52PM -0700, Christoph Lameter wrote:
> On Mon, 6 Aug 2007, Peter Zijlstra wrote:
>
> > Restrict objects from reserve slabs (ALLOC_NO_WATERMARKS) to allocation
> > contexts that are entitled to it.
>
> Is this patch actually necessary?
>
> If you are in an atomic context and bound to a cpu then a per cpu slab is
> assigned to you and no one else can take object aways from that process
> since nothing else can run on the cpu.

Servicing I/O over the network requires an allocation to send a buffer
and an allocation to later receive the acknowledgement. We can't free
our send buffer (or the memory it's supposed to clean) until the
relevant ack is received. We have to hold our reserves privately
throughout, even if an interrupt that wants to do GFP_ATOMIC
allocation shows up in-between.

> If you are not in an atomic context and are preemptable or can switch
> allocation context then you can create another context in which reclaim
> could be run to remove some clean pages and get you more memory. Again no
> need for the patch.

By the point that this patch is relevant, there are already no clean
pages. The only way to free up more memory is via I/O.

--
Mathematics is the supreme nostalgia of our time.