[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20100512104817.beeee3b5.akpm@linux-foundation.org>
Date: Wed, 12 May 2010 10:48:17 -0700
From: Andrew Morton <akpm@...ux-foundation.org>
To: miaox@...fujitsu.com
Cc: David Rientjes <rientjes@...gle.com>,
Lee Schermerhorn <lee.schermerhorn@...com>,
Nick Piggin <npiggin@...e.de>, Paul Menage <menage@...gle.com>,
Linux-Kernel <linux-kernel@...r.kernel.org>,
Linux-MM <linux-mm@...ck.org>
Subject: Re: [PATCH -mm] cpuset,mm: fix no node to alloc memory when
changing cpuset's mems - fix2
On Wed, 12 May 2010 17:00:45 +0800
Miao Xie <miaox@...fujitsu.com> wrote:
> on 2010-5-12 12:32, Andrew Morton wrote:
> > On Wed, 12 May 2010 15:20:51 +0800 Miao Xie <miaox@...fujitsu.com> wrote:
> >
> >> @@ -985,6 +984,7 @@ repeat:
> >> * for the read-side.
> >> */
> >> while (ACCESS_ONCE(tsk->mems_allowed_change_disable)) {
> >> + task_unlock(tsk);
> >> if (!task_curr(tsk))
> >> yield();
> >> goto repeat;
> >
> > Oh, I meant to mention that. No yield()s, please. Their duration is
> > highly unpredictable. Can we do something more deterministic here?
>
> Maybe we can use wait_for_completion().
That would work.
> >
> > Did you consider doing all this with locking? get_mems_allowed() does
> > mutex_lock(current->lock)?
>
> do you means using a real lock(such as: mutex) to protect mempolicy and mem_allowed?
yes.
> It may cause the performance regression, so I do my best to abstain from using a real
> lock.
Well, the code as-is is pretty exotic with lots of open-coded tricky
barriers - it's best to avoid inventing new primitives if possible.
For example, there's no lockdep support for this new "lock".
mutex_lock() is pretty quick - basically a simgle atomic op. How
frequently do these operations occur?
The code you have at present is fairly similar to sequence locks. I
wonder if there's some way of (ab)using sequence locks for this.
seqlocks don't have lockdep support either...
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists