From: Oleg Nesterov <oleg@redhat.com>
To: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Galbraith <efault@gmx.de>, Ingo Molnar <mingo@elte.hu>,
linux-mm <linux-mm@kvack.org>,
Christoph Lameter <cl@linux-foundation.org>,
lkml <linux-kernel@vger.kernel.org>
Subject: Re: [rfc] lru_add_drain_all() vs isolation
Date: Mon, 7 Sep 2009 16:18:18 +0200 [thread overview]
Message-ID: <20090907141818.GA8394@redhat.com> (raw)
In-Reply-To: <1252331599.7959.33.camel@laptop>
On 09/07, Peter Zijlstra wrote:
>
> On Mon, 2009-09-07 at 15:35 +0200, Oleg Nesterov wrote:
> >
> > Failed to google the previous discussion. Could you please point me?
> > What is the problem?
>
> Ah, the general problem is that when we carve up the machine into
> partitions using cpusets, we still get machine wide tickles on all cpus
> from workqueue stuff like schedule_on_each_cpu() and flush_workqueue(),
> even if some cpus don't actually used their workqueue.
>
> So the below limits lru_add_drain() activity to cpus that actually have
> pages in their per-cpu lists.
Thanks Peter!
> flush_workqueue() could limit itself to cpus that had work queued since
> the last flush_workqueue() invocation, etc.
But "work queued since the last flush_workqueue() invocation" just means
"has work queued". Please note that flush_cpu_workqueue() does nothing
if there are no works, except it does lock/unlock of cwq->lock.
IIRC, flush_cpu_workqueue() has to lock/unlock to avoid the races with
CPU hotplug, but _perhaps_ flush_workqueue() can do the check lockless.
Afaics, we can add the workqueue_struct->cpu_map_has_works to help
flush_workqueue(), but this means we should complicate insert_work()
and run_workqueue() which should set/clear the bit. But given that
flush_workqueue() should be avoided anyway, I am not sure.
Oleg.
WARNING: multiple messages have this Message-ID (diff)
From: Oleg Nesterov <oleg@redhat.com>
To: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Galbraith <efault@gmx.de>, Ingo Molnar <mingo@elte.hu>,
linux-mm <linux-mm@kvack.org>,
Christoph Lameter <cl@linux-foundation.org>,
lkml <linux-kernel@vger.kernel.org>
Subject: Re: [rfc] lru_add_drain_all() vs isolation
Date: Mon, 7 Sep 2009 16:18:18 +0200 [thread overview]
Message-ID: <20090907141818.GA8394@redhat.com> (raw)
In-Reply-To: <1252331599.7959.33.camel@laptop>
On 09/07, Peter Zijlstra wrote:
>
> On Mon, 2009-09-07 at 15:35 +0200, Oleg Nesterov wrote:
> >
> > Failed to google the previous discussion. Could you please point me?
> > What is the problem?
>
> Ah, the general problem is that when we carve up the machine into
> partitions using cpusets, we still get machine wide tickles on all cpus
> from workqueue stuff like schedule_on_each_cpu() and flush_workqueue(),
> even if some cpus don't actually used their workqueue.
>
> So the below limits lru_add_drain() activity to cpus that actually have
> pages in their per-cpu lists.
Thanks Peter!
> flush_workqueue() could limit itself to cpus that had work queued since
> the last flush_workqueue() invocation, etc.
But "work queued since the last flush_workqueue() invocation" just means
"has work queued". Please note that flush_cpu_workqueue() does nothing
if there are no works, except it does lock/unlock of cwq->lock.
IIRC, flush_cpu_workqueue() has to lock/unlock to avoid the races with
CPU hotplug, but _perhaps_ flush_workqueue() can do the check lockless.
Afaics, we can add the workqueue_struct->cpu_map_has_works to help
flush_workqueue(), but this means we should complicate insert_work()
and run_workqueue() which should set/clear the bit. But given that
flush_workqueue() should be avoided anyway, I am not sure.
Oleg.
--
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:[~2009-09-07 14:22 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <dgRNo-3uc-5@gated-at.bofh.it>
[not found] ` <dhb9j-1hp-5@gated-at.bofh.it>
[not found] ` <dhcf5-263-13@gated-at.bofh.it>
2009-09-06 2:32 ` question on sched-rt group allocation cap: sched_rt_runtime_us Ani
2009-09-06 6:32 ` Mike Galbraith
2009-09-06 10:18 ` Mike Galbraith
[not found] ` <DDFD17CC94A9BD49A82147DDF7D545C54DC482@exchange.ZeugmaSystems.local>
2009-09-06 15:09 ` Mike Galbraith
2009-09-07 0:41 ` Anirban Sinha
[not found] ` <1252311463.7586.26.camel@marge.simson.net>
2009-09-07 11:06 ` [rfc] lru_add_drain_all() vs isolation Peter Zijlstra
2009-09-07 11:06 ` Peter Zijlstra
2009-09-07 13:35 ` Oleg Nesterov
2009-09-07 13:35 ` Oleg Nesterov
2009-09-07 13:53 ` Peter Zijlstra
2009-09-07 13:53 ` Peter Zijlstra
2009-09-07 14:18 ` Oleg Nesterov [this message]
2009-09-07 14:18 ` Oleg Nesterov
2009-09-07 14:25 ` Peter Zijlstra
2009-09-07 14:25 ` Peter Zijlstra
2009-09-07 23:56 ` KOSAKI Motohiro
2009-09-07 23:56 ` KOSAKI Motohiro
2009-09-08 8:20 ` Peter Zijlstra
2009-09-08 8:20 ` Peter Zijlstra
2009-09-08 10:06 ` KOSAKI Motohiro
2009-09-08 10:06 ` KOSAKI Motohiro
2009-09-08 10:20 ` Peter Zijlstra
2009-09-08 10:20 ` Peter Zijlstra
2009-09-08 11:41 ` KOSAKI Motohiro
2009-09-08 11:41 ` KOSAKI Motohiro
2009-09-08 12:05 ` Peter Zijlstra
2009-09-08 12:05 ` Peter Zijlstra
2009-09-08 14:03 ` Christoph Lameter
2009-09-08 14:03 ` Christoph Lameter
2009-09-08 14:20 ` Peter Zijlstra
2009-09-08 14:20 ` Peter Zijlstra
2009-09-08 15:22 ` Christoph Lameter
2009-09-08 15:22 ` Christoph Lameter
2009-09-08 15:27 ` Peter Zijlstra
2009-09-08 15:27 ` Peter Zijlstra
2009-09-08 15:32 ` Christoph Lameter
2009-09-08 15:32 ` Christoph Lameter
2009-09-09 4:27 ` KOSAKI Motohiro
2009-09-09 4:27 ` KOSAKI Motohiro
2009-09-09 14:08 ` Christoph Lameter
2009-09-09 14:08 ` Christoph Lameter
2009-09-09 23:43 ` KOSAKI Motohiro
2009-09-09 23:43 ` KOSAKI Motohiro
2009-09-10 18:03 ` Christoph Lameter
2009-09-10 18:03 ` Christoph Lameter
2009-09-09 15:39 ` Minchan Kim
2009-09-09 15:39 ` Minchan Kim
2009-09-09 16:18 ` Lee Schermerhorn
2009-09-09 16:18 ` Lee Schermerhorn
2009-09-09 16:46 ` Minchan Kim
2009-09-09 16:46 ` Minchan Kim
2009-09-09 23:58 ` KOSAKI Motohiro
2009-09-09 23:58 ` KOSAKI Motohiro
2009-09-10 1:00 ` Minchan Kim
2009-09-10 1:00 ` Minchan Kim
2009-09-10 1:15 ` KOSAKI Motohiro
2009-09-10 1:15 ` KOSAKI Motohiro
2009-09-10 1:23 ` Minchan Kim
2009-09-10 1:23 ` Minchan Kim
2009-09-09 2:06 ` KOSAKI Motohiro
2009-09-09 2:06 ` KOSAKI Motohiro
[not found] ` <DDFD17CC94A9BD49A82147DDF7D545C54DC483@exchange.ZeugmaSystems.local>
[not found] ` <DDFD17CC94A9BD49A82147DDF7D545C54DC485@exchange.ZeugmaSystems.local>
2009-09-07 0:28 ` question on sched-rt group allocation cap: sched_rt_runtime_us Anirban Sinha
2009-09-07 6:54 ` Mike Galbraith
[not found] ` <DDFD17CC94A9BD49A82147DDF7D545C54DC489@exchange.ZeugmaSystems.local>
2009-09-08 7:10 ` Anirban Sinha
2009-09-08 9:26 ` Mike Galbraith
2009-09-07 7:59 ` Peter Zijlstra
2009-09-07 8:24 ` Mike Galbraith
[not found] ` <DDFD17CC94A9BD49A82147DDF7D545C54DC487@exchange.ZeugmaSystems.local>
2009-09-08 7:08 ` Anirban Sinha
2009-09-08 8:42 ` Peter Zijlstra
2009-09-08 14:41 ` Anirban Sinha
[not found] ` <DDFD17CC94A9BD49A82147DDF7D545C54DC48B@exchange.ZeugmaSystems.local>
2009-09-08 17:41 ` Anirban Sinha
2009-09-08 19:06 ` Mike Galbraith
2009-09-08 19:34 ` Anirban Sinha
2009-09-09 4:10 ` Mike Galbraith
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=20090907141818.GA8394@redhat.com \
--to=oleg@redhat.com \
--cc=a.p.zijlstra@chello.nl \
--cc=cl@linux-foundation.org \
--cc=efault@gmx.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mingo@elte.hu \
/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.