From: Andrew Morton <akpm@linux-foundation.org>
To: miaox@cn.fujitsu.com
Cc: David Rientjes <rientjes@google.com>,
Lee Schermerhorn <lee.schermerhorn@hp.com>,
Nick Piggin <npiggin@suse.de>, Paul Menage <menage@google.com>,
Linux-Kernel <linux-kernel@vger.kernel.org>,
Linux-MM <linux-mm@kvack.org>
Subject: Re: [PATCH -mm] cpuset,mm: fix no node to alloc memory when changing cpuset's mems - fix2
Date: Wed, 12 May 2010 10:48:17 -0700 [thread overview]
Message-ID: <20100512104817.beeee3b5.akpm@linux-foundation.org> (raw)
In-Reply-To: <4BEA6E3D.10503@cn.fujitsu.com>
On Wed, 12 May 2010 17:00:45 +0800
Miao Xie <miaox@cn.fujitsu.com> wrote:
> on 2010-5-12 12:32, Andrew Morton wrote:
> > On Wed, 12 May 2010 15:20:51 +0800 Miao Xie <miaox@cn.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...
WARNING: multiple messages have this Message-ID (diff)
From: Andrew Morton <akpm@linux-foundation.org>
To: miaox@cn.fujitsu.com
Cc: David Rientjes <rientjes@google.com>,
Lee Schermerhorn <lee.schermerhorn@hp.com>,
Nick Piggin <npiggin@suse.de>, Paul Menage <menage@google.com>,
Linux-Kernel <linux-kernel@vger.kernel.org>,
Linux-MM <linux-mm@kvack.org>
Subject: Re: [PATCH -mm] cpuset,mm: fix no node to alloc memory when changing cpuset's mems - fix2
Date: Wed, 12 May 2010 10:48:17 -0700 [thread overview]
Message-ID: <20100512104817.beeee3b5.akpm@linux-foundation.org> (raw)
In-Reply-To: <4BEA6E3D.10503@cn.fujitsu.com>
On Wed, 12 May 2010 17:00:45 +0800
Miao Xie <miaox@cn.fujitsu.com> wrote:
> on 2010-5-12 12:32, Andrew Morton wrote:
> > On Wed, 12 May 2010 15:20:51 +0800 Miao Xie <miaox@cn.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, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2010-05-12 17:49 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-12 7:20 [PATCH -mm] cpuset,mm: fix no node to alloc memory when changing cpuset's mems - fix2 Miao Xie
2010-05-12 7:20 ` Miao Xie
2010-05-12 4:32 ` Andrew Morton
2010-05-12 4:32 ` Andrew Morton
2010-05-12 9:00 ` Miao Xie
2010-05-12 9:00 ` Miao Xie
2010-05-12 17:48 ` Andrew Morton [this message]
2010-05-12 17:48 ` Andrew Morton
2010-05-13 6:16 ` Miao Xie
2010-05-13 6:16 ` Miao Xie
2010-05-13 19:11 ` Andrew Morton
2010-05-13 19:11 ` Andrew Morton
2010-05-17 4:01 ` Miao Xie
2010-05-17 4:01 ` 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=20100512104817.beeee3b5.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=lee.schermerhorn@hp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=menage@google.com \
--cc=miaox@cn.fujitsu.com \
--cc=npiggin@suse.de \
--cc=rientjes@google.com \
/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.