All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Menage <menage@google.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: miaox@cn.fujitsu.com, mingo@elte.hu,
	linux-kernel@vger.kernel.org, cl@linux-foundation.org,
	nickpiggin@yahoo.com.au
Subject: Re: [PATCH] cpuset: fix allocating page cache/slab object on the  unallowed node when memory spread is set
Date: Tue, 3 Feb 2009 14:49:15 -0800	[thread overview]
Message-ID: <6599ad830902031449j1fa3dd08re842b57f8700b389@mail.gmail.com> (raw)
In-Reply-To: <20090203141645.91c7ea18.akpm@linux-foundation.org>

On Tue, Feb 3, 2009 at 2:16 PM, Andrew Morton <akpm@linux-foundation.org> wrote:
> On Tue, 03 Feb 2009 11:25:25 +0800
> Miao Xie <miaox@cn.fujitsu.com> wrote:
>
>> on 2009-1-28 6:42 Andrew Morton wrote:
>> > On Wed, 21 Jan 2009 16:06:20 +0800
>> > Miao Xie <miaox@cn.fujitsu.com> wrote:
>> >
>> >> The task still allocated the page caches on old node after modifying its
>> >> cpuset's mems when 'memory_spread_page' was set, it is caused by the old
>> >> mem_allowed_list of the task, the current kernel doesn't updates it unless some
>> >> function invokes cpuset_update_task_memory_state(), it is too late sometimes.
>> >> We must update the mem_allowed_list of the tasks in time.
>> >>
>> >> Slab has the same problem.
>> >>
>> >> We fixes the bug by updating tasks' mem_allowed_list and spread flag after
>> >> its cpuset's mems or spread flag is changed.
>> >>
>> >>
>> >> ...
>> >>
>> >> --- a/kernel/kthread.c
>> >> +++ b/kernel/kthread.c
>> >> @@ -242,6 +242,7 @@ int kthreadd(void *unused)
>> >>    set_user_nice(tsk, KTHREAD_NICE_LEVEL);
>> >>    set_cpus_allowed_ptr(tsk, CPU_MASK_ALL_PTR);
>> >>
>> >> +  current->mems_allowed = node_possible_map;
>> >>    current->flags |= PF_NOFREEZE | PF_FREEZER_NOSIG;
>> >
>> > Why this change?  kthreadd() is called from rest_init(), before anyone
>> > has had a chance to alter ->mems_allowed?
>>
>> I found that after mems_allowed of kthreadd was not initialized applying this patch,
>> every bit of it is 1, so...
>> Maybe it is redundant.
>
> I think it is redundant.  kthreadd's mems_allowed _should_ be all-ones.
> Or at least, all-nodes-allowed.
>
> I wasn't able to find out where the setting of init'smems_allowed
> happens, after a bit of grepping and hunting.  It should be done within
> INIT_TASK, but isn't.
>
> Still, kthreadd is reliably parented by swapper, and there shold be no
> need to alter its mems_allowed.
>
> Similarly, what was the reason for setting current->mems_allowed in
> kernel_init()?  That also should be unneeded.
>
> Finally, I've somewhat lost track of where we are with this patch.
> Paul, do you see any other remaining issues?

AFAICS this patch still has a race between a thread reading its
mems_allowed, and another thread updating it. The current architecture
of having task->mems_allowed be only updatable by current was PaulJ's
code originally, and I'm a bit loathe to touch it. But if we're going
to, we'll need at the minimum to add a lock for any code that touches
current->mems_allowed.

Paul

  reply	other threads:[~2009-02-03 22:49 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-21  8:06 [PATCH] cpuset: fix allocating page cache/slab object on the unallowed node when memory spread is set Miao Xie
2009-01-21  8:30 ` Nick Piggin
2009-01-21 10:41 ` Paul Menage
2009-02-03  3:05   ` Miao Xie
2009-01-27 22:42 ` Andrew Morton
2009-01-28 16:38   ` Christoph Lameter
2009-02-03  3:25   ` Miao Xie
2009-02-03 22:16     ` Andrew Morton
2009-02-03 22:49       ` Paul Menage [this message]
2009-02-04  9:31         ` Miao Xie
2009-02-06 19:19           ` Paul Menage
2009-02-09  4:02             ` Nick Piggin
2009-02-10 11:37               ` Paul Menage
2009-02-12  0:54                 ` Nick Piggin
2009-02-12  1:19                   ` Paul Menage
2009-02-12  1:55                     ` Nick Piggin
2009-02-12  1:58                       ` Paul Menage
2009-02-12  8:23                       ` Miao Xie
2009-02-12 21:53                         ` Paul Menage
2009-02-12  8:27                       ` Miao Xie
2009-02-12 10:40                         ` Nick Piggin
2009-02-12  5:57                     ` Miao Xie
2009-02-12 11:06                       ` Paul Jackson
2009-02-04  9:03       ` Miao Xie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6599ad830902031449j1fa3dd08re842b57f8700b389@mail.gmail.com \
    --to=menage@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=miaox@cn.fujitsu.com \
    --cc=mingo@elte.hu \
    --cc=nickpiggin@yahoo.com.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.