Re: [RFC] per thread page reservation patch

From: Marcelo Tosatti
Date: Sun Jan 09 2005 - 09:30:11 EST


On Fri, Jan 07, 2005 at 03:43:05PM -0800, Andrew Morton wrote:
> Nikita Danilov <nikita@xxxxxxxxxxxxx> wrote:
> >
> > >
> > > Why does the filesystem risk going oom during the rebalance anyway? Is it
> > > doing atomic allocations?
> >
> > No, just __alloc_pages(GFP_KERNEL, 0, ...) returns NULL. When this
> > happens, the only thing balancing can do is to panic.
>
> __alloc_pages(GFP_KERNEL, ...) doesn't return NULL. It'll either succeed
> or never return ;) That behaviour may change at any time of course, but it
> does make me wonder why we're bothering with this at all. Maybe it's
> because of the possibility of a GFP_IO failure under your feet or
> something?
>
> What happens if reiser4 simply doesn't use this code?
>
>
> If we introduce this mechanism, people will end up using it all over the
> place. Probably we could remove radix_tree_preload(), which is the only
> similar code I can I can immediately think of.
>
> Page reservation is not a bad thing per-se, but it does need serious
> thought.

Whenever scheme comes up I dont think the current check in __alloc_pages() is
any good:

if (order == 0) {
page = perthread_pages_alloc();
if (page != NULL)
return page;
}

Two things:

- all instances of an allocator from the current thread will eat from the perthread
reserves, you probably want only a few special allocations to eat from the reserves?
Thing is its not really a reservation intended for emergency situations,
rather a "generic per-thread pool" the way things are now.

- its a real fast path, we're adding quite some instructions there which are only
used by reiserfs now.

I think in a "final" implementation emergency allocations should be explicitly stated
as such by the callers ?

> How does reiser4 end up deciding how many pages to reserve? Gross
> overkill?
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo@xxxxxxxxxx For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"aart@xxxxxxxxx";> aart@xxxxxxxxx </a>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/