Re: [patch 03/11] mm, mempolicy: remove per-process flag

Andrew Morton
2014-03-07T20:48:31Z

On Fri, 07 Mar 2014 09:20:39 -0800 Andi Kleen <andi@firstfloor.org> wrote:

> David Rientjes <rientjes@google.com> writes:
> >
> > Per-process flags are a scarce resource so we should free them up
> > whenever possible and make them available. We'll be using it shortly for
> > memcg oom reserves.
>
> I'm not convinced TCP_RR is a meaningfull benchmark for slab.
>
> The shortness seems like an artificial problem.
>
> Just add another flag word to the task_struct? That would seem
> to be the obvious way. People will need it sooner or later anyways.
>

This is basically what the patch does:

@@ -3259,7 +3259,7 @@ __do_cache_alloc(struct kmem_cache *cach
{
void *objp;

- if (unlikely(current->flags & (PF_SPREAD_SLAB | PF_MEMPOLICY))) {
+ if (current->mempolicy || unlikely(current->flags & PF_SPREAD_SLAB)) {
objp = alternate_node_alloc(cache, flags);
if (objp)
goto out;

It runs when slab goes into the page allocator for backing store (ie:
relatively rarely). It adds one test-n-branch when a mempolicy is
active and actually removes instructions when no mempolicy is active.

This patch won't be making any difference to anything.