All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frederic Weisbecker <fweisbec@gmail.com>
To: Chris Metcalf <cmetcalf@tilera.com>
Cc: Christoph Lameter <cl@linux.com>,
	Gilad Ben-Yossef <gilad@benyossef.com>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	Pekka Enberg <penberg@kernel.org>, Matt Mackall <mpm@selenic.com>,
	Sasha Levin <levinsasha928@gmail.com>,
	Rik van Riel <riel@redhat.com>, Andi Kleen <andi@firstfloor.org>,
	Mel Gorman <mel@csn.ul.ie>,
	Andrew Morton <akpm@linux-foundation.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Avi Kivity <avi@redhat.com>,
	Michal Nazarewicz <mina86@mina86.com>,
	Kosaki Motohiro <kosaki.motohiro@gmail.com>,
	Milton Miller <miltonm@bga.com>
Subject: Re: [v7 0/8] Reduce cross CPU IPI interference
Date: Thu, 9 Feb 2012 19:11:43 +0100	[thread overview]
Message-ID: <20120209181141.GF22552@somewhere.redhat.com> (raw)
In-Reply-To: <4F33ED71.2090304@tilera.com>

On Thu, Feb 09, 2012 at 10:59:45AM -0500, Chris Metcalf wrote:
> On 2/9/2012 10:52 AM, Frederic Weisbecker wrote:
> > On Thu, Feb 02, 2012 at 10:29:57AM -0600, Christoph Lameter wrote:
> >> On Thu, 2 Feb 2012, Frederic Weisbecker wrote:
> >>
> >>>> Some pinned timers might be able to get special treatment as well - take for
> >>>> example the vmstat work being schedule every second, what should we do with
> >>>> it for CPU isolation?
> >>> Right, I remember I saw these vmstat timers on my way when I tried to get 0
> >>> interrupts on a CPU.
> >>>
> >>> I think all these timers need to be carefully reviewed before doing anything.
> >>> But we certainly shouldn't adopt the behaviour of migrating timers by default.
> >>>
> >>> Some timers really needs to stay on the expected CPU. Note that some
> >>> timers may be shutdown by CPU hotplug callbacks. Those wouldn't be migrated
> >>> in case of CPU offlining. We need to keep them.
> >>>
> >>>> It makes sense to me to have that stop scheduling itself when we have the tick
> >>>> disabled for both idle and a nohz task.
> >> The vmstat timer only makes sense when the OS is doing something on the
> >> processor. Otherwise if no counters are incremented and the page and slab
> >> allocator caches are empty then there is no need to run the vmstat timer.
> > So this is a typical example of a timer we want to shutdown when the CPU is idle
> > but we want to keep it running when we run in adaptive tickless mode (ie: shutdown
> > the tick while the CPU is busy).
> 
> We would want to stop the timer as long as the processor is running
> exclusively userspace code.  Christoph's point is that in either the idle
> case or the userspace-only case, the vmstats won't be incrementing anyway. 
> Presumably you'd restart the timer when you enter the kernel, then when it
> fires and does its work, you might notice that when you return to userspace
> no further information will be collected, so stop the timer at that point. 
> Or, perhaps you could just proactively call refresh_cpu_vm_stats() just
> before stopping the tick and returning "permanently" to userspace, to make
> sure the stats are all properly updated.

Ah good point. I believe that many timers considered as deferrable during idle
may also be considered that way for userspace.

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Frederic Weisbecker <fweisbec@gmail.com>
To: Chris Metcalf <cmetcalf@tilera.com>
Cc: Christoph Lameter <cl@linux.com>,
	Gilad Ben-Yossef <gilad@benyossef.com>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	Pekka Enberg <penberg@kernel.org>, Matt Mackall <mpm@selenic.com>,
	Sasha Levin <levinsasha928@gmail.com>,
	Rik van Riel <riel@redhat.com>, Andi Kleen <andi@firstfloor.org>,
	Mel Gorman <mel@csn.ul.ie>,
	Andrew Morton <akpm@linux-foundation.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Avi Kivity <avi@redhat.com>,
	Michal Nazarewicz <mina86@mina86.com>,
	Kosaki Motohiro <kosaki.motohiro@gmail.com>,
	Milton Miller <miltonm@bga.com>
Subject: Re: [v7 0/8] Reduce cross CPU IPI interference
Date: Thu, 9 Feb 2012 19:11:43 +0100	[thread overview]
Message-ID: <20120209181141.GF22552@somewhere.redhat.com> (raw)
In-Reply-To: <4F33ED71.2090304@tilera.com>

On Thu, Feb 09, 2012 at 10:59:45AM -0500, Chris Metcalf wrote:
> On 2/9/2012 10:52 AM, Frederic Weisbecker wrote:
> > On Thu, Feb 02, 2012 at 10:29:57AM -0600, Christoph Lameter wrote:
> >> On Thu, 2 Feb 2012, Frederic Weisbecker wrote:
> >>
> >>>> Some pinned timers might be able to get special treatment as well - take for
> >>>> example the vmstat work being schedule every second, what should we do with
> >>>> it for CPU isolation?
> >>> Right, I remember I saw these vmstat timers on my way when I tried to get 0
> >>> interrupts on a CPU.
> >>>
> >>> I think all these timers need to be carefully reviewed before doing anything.
> >>> But we certainly shouldn't adopt the behaviour of migrating timers by default.
> >>>
> >>> Some timers really needs to stay on the expected CPU. Note that some
> >>> timers may be shutdown by CPU hotplug callbacks. Those wouldn't be migrated
> >>> in case of CPU offlining. We need to keep them.
> >>>
> >>>> It makes sense to me to have that stop scheduling itself when we have the tick
> >>>> disabled for both idle and a nohz task.
> >> The vmstat timer only makes sense when the OS is doing something on the
> >> processor. Otherwise if no counters are incremented and the page and slab
> >> allocator caches are empty then there is no need to run the vmstat timer.
> > So this is a typical example of a timer we want to shutdown when the CPU is idle
> > but we want to keep it running when we run in adaptive tickless mode (ie: shutdown
> > the tick while the CPU is busy).
> 
> We would want to stop the timer as long as the processor is running
> exclusively userspace code.  Christoph's point is that in either the idle
> case or the userspace-only case, the vmstats won't be incrementing anyway. 
> Presumably you'd restart the timer when you enter the kernel, then when it
> fires and does its work, you might notice that when you return to userspace
> no further information will be collected, so stop the timer at that point. 
> Or, perhaps you could just proactively call refresh_cpu_vm_stats() just
> before stopping the tick and returning "permanently" to userspace, to make
> sure the stats are all properly updated.

Ah good point. I believe that many timers considered as deferrable during idle
may also be considered that way for userspace.

  reply	other threads:[~2012-02-09 18:11 UTC|newest]

Thread overview: 154+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-26 10:01 [v7 0/8] Reduce cross CPU IPI interference Gilad Ben-Yossef
2012-01-26 10:01 ` Gilad Ben-Yossef
2012-01-26 10:01 ` [v7 1/8] smp: introduce a generic on_each_cpu_mask function Gilad Ben-Yossef
2012-01-26 10:01   ` Gilad Ben-Yossef
2012-01-29 12:24   ` Gilad Ben-Yossef
2012-01-29 12:24     ` Gilad Ben-Yossef
2012-01-30 21:52     ` Andrew Morton
2012-01-30 21:52       ` Andrew Morton
2012-01-31  6:33       ` Gilad Ben-Yossef
2012-01-31  6:33         ` Gilad Ben-Yossef
2012-01-26 10:01 ` [v7 2/8] arm: move arm over to generic on_each_cpu_mask Gilad Ben-Yossef
2012-01-26 10:01   ` Gilad Ben-Yossef
2012-01-26 10:01 ` [v7 3/8] tile: move tile to use " Gilad Ben-Yossef
2012-01-26 10:01   ` Gilad Ben-Yossef
2012-01-26 10:01 ` [v7 4/8] smp: add func to IPI cpus based on parameter func Gilad Ben-Yossef
2012-01-26 10:01   ` Gilad Ben-Yossef
2012-01-27 23:57   ` Andrew Morton
2012-01-27 23:57     ` Andrew Morton
2012-01-29 12:04     ` Gilad Ben-Yossef
2012-01-29 12:04       ` Gilad Ben-Yossef
2012-01-26 10:01 ` [v7 5/8] slub: only IPI CPUs that have per cpu obj to flush Gilad Ben-Yossef
2012-01-26 10:01   ` Gilad Ben-Yossef
2012-01-26 15:09   ` Christoph Lameter
2012-01-26 15:09     ` Christoph Lameter
2012-01-26 10:01 ` [v7 6/8] fs: only send IPI to invalidate LRU BH when needed Gilad Ben-Yossef
2012-01-26 10:01   ` Gilad Ben-Yossef
2012-01-26 10:02 ` [v7 7/8] mm: only IPI CPUs to drain local pages if they exist Gilad Ben-Yossef
2012-01-26 10:02   ` Gilad Ben-Yossef
2012-01-26 15:13   ` Christoph Lameter
2012-01-26 15:13     ` Christoph Lameter
2012-01-28  0:12   ` Andrew Morton
2012-01-28  0:12     ` Andrew Morton
2012-01-29 12:18     ` Gilad Ben-Yossef
2012-01-29 12:18       ` Gilad Ben-Yossef
2012-01-30 21:49       ` Andrew Morton
2012-01-30 21:49         ` Andrew Morton
2012-01-31  6:32         ` Gilad Ben-Yossef
2012-01-31  6:32           ` Gilad Ben-Yossef
2012-01-30 14:59   ` Mel Gorman
2012-01-30 14:59     ` Mel Gorman
2012-01-30 15:14     ` Gilad Ben-Yossef
2012-01-30 15:14       ` Gilad Ben-Yossef
2012-01-30 15:44       ` Mel Gorman
2012-01-30 15:44         ` Mel Gorman
2012-01-30 15:44         ` Mel Gorman
2012-01-26 10:02 ` [v7 8/8] mm: add vmstat counters for tracking PCP drains Gilad Ben-Yossef
2012-01-26 10:02   ` Gilad Ben-Yossef
2012-01-26 15:19 ` [v7 0/8] Reduce cross CPU IPI interference Peter Zijlstra
2012-01-26 15:19   ` Peter Zijlstra
2012-01-29  8:25   ` Gilad Ben-Yossef
2012-01-29  8:25     ` Gilad Ben-Yossef
2012-02-01 17:04     ` Frederic Weisbecker
2012-02-01 17:04       ` Frederic Weisbecker
2012-02-02  8:46       ` Gilad Ben-Yossef
2012-02-02  8:46         ` Gilad Ben-Yossef
2012-02-02 15:41         ` Chris Metcalf
2012-02-02 15:41           ` Chris Metcalf
2012-02-05 11:46           ` Gilad Ben-Yossef
2012-02-05 11:46             ` Gilad Ben-Yossef
2012-02-10 18:39             ` Peter Zijlstra
2012-02-10 18:39               ` Peter Zijlstra
2012-02-10 20:13               ` Gilad Ben-Yossef
2012-02-10 20:13                 ` Gilad Ben-Yossef
2012-02-10 20:29                 ` Peter Zijlstra
2012-02-10 20:29                   ` Peter Zijlstra
2012-02-10 20:39                   ` Gilad Ben-Yossef
2012-02-10 20:39                     ` Gilad Ben-Yossef
2012-02-10 18:33           ` Peter Zijlstra
2012-02-10 18:33             ` Peter Zijlstra
2012-02-10 20:33             ` Gilad Ben-Yossef
2012-02-10 20:33               ` Gilad Ben-Yossef
2012-02-15 21:50             ` Chris Metcalf
2012-02-15 21:50               ` Chris Metcalf
2012-02-15 22:15               ` Christoph Lameter
2012-02-15 22:15                 ` Christoph Lameter
2012-02-15 23:44                 ` Chris Metcalf
2012-02-15 23:44                   ` Chris Metcalf
2012-02-21  1:34               ` Frederic Weisbecker
2012-02-21  1:34                 ` Frederic Weisbecker
2012-03-01 18:27                 ` Chris Metcalf
2012-03-01 18:27                   ` Chris Metcalf
2012-02-10 18:38           ` Peter Zijlstra
2012-02-10 18:38             ` Peter Zijlstra
2012-02-10 20:24             ` Gilad Ben-Yossef
2012-02-10 20:24               ` Gilad Ben-Yossef
2012-02-15 15:11               ` Peter Zijlstra
2012-02-15 15:11                 ` Peter Zijlstra
2012-02-15 15:19                 ` Gilad Ben-Yossef
2012-02-15 15:19                   ` Gilad Ben-Yossef
2012-02-15 21:51               ` Chris Metcalf
2012-02-15 21:51                 ` Chris Metcalf
2012-02-02 16:24         ` Frederic Weisbecker
2012-02-02 16:24           ` Frederic Weisbecker
2012-02-02 16:29           ` Christoph Lameter
2012-02-09 15:52             ` Frederic Weisbecker
2012-02-09 15:52               ` Frederic Weisbecker
2012-02-09 15:59               ` Chris Metcalf
2012-02-09 15:59                 ` Chris Metcalf
2012-02-09 18:11                 ` Frederic Weisbecker [this message]
2012-02-09 18:11                   ` Frederic Weisbecker
2012-02-09 16:26               ` Christoph Lameter
2012-02-09 16:26                 ` Christoph Lameter
2012-02-09 18:32                 ` Frederic Weisbecker
2012-02-09 18:32                   ` Frederic Weisbecker
2012-02-01 17:35     ` Peter Zijlstra
2012-02-01 17:35       ` Peter Zijlstra
2012-02-01 17:57       ` Peter Zijlstra
2012-02-01 17:57         ` Peter Zijlstra
2012-02-02  9:42         ` Gilad Ben-Yossef
2012-02-02  9:42           ` Gilad Ben-Yossef
2012-02-01 18:40       ` Paul E. McKenney
2012-02-01 18:40         ` Paul E. McKenney
2012-02-01 20:06         ` Christoph Lameter
2012-02-01 20:06           ` Christoph Lameter
2012-02-01 20:13           ` Paul E. McKenney
2012-02-01 20:13             ` Paul E. McKenney
2012-02-02  9:34             ` Avi Kivity
2012-02-02  9:34               ` Avi Kivity
2012-02-02 15:34               ` Paul E. McKenney
2012-02-02 15:34                 ` Paul E. McKenney
2012-02-02 16:14                 ` Avi Kivity
2012-02-02 16:14                   ` Avi Kivity
2012-02-02 17:01                   ` Paul E. McKenney
2012-02-02 17:01                     ` Paul E. McKenney
2012-02-02 17:23                     ` Avi Kivity
2012-02-02 17:23                       ` Avi Kivity
2012-02-02 17:51                       ` Paul E. McKenney
2012-02-02 17:51                         ` Paul E. McKenney
2012-02-05 12:16                         ` Avi Kivity
2012-02-05 12:16                           ` Avi Kivity
2012-02-05 16:59                           ` Paul E. McKenney
2012-02-05 16:59                             ` Paul E. McKenney
2012-02-09 15:22                             ` Frederic Weisbecker
2012-02-09 15:22                               ` Frederic Weisbecker
2012-02-09 16:05                               ` Avi Kivity
2012-02-09 16:05                                 ` Avi Kivity
2012-02-09 18:22                                 ` Frederic Weisbecker
2012-02-09 18:22                                   ` Frederic Weisbecker
2012-02-09 23:41                                   ` Paul E. McKenney
2012-02-09 23:41                                     ` Paul E. McKenney
2012-02-10  1:39                                     ` Frederic Weisbecker
2012-02-10  1:39                                       ` Frederic Weisbecker
2012-02-14 13:18                                       ` Avi Kivity
2012-02-14 13:18                                         ` Avi Kivity
2012-02-21  0:02                                         ` Frederic Weisbecker
2012-02-21  0:02                                           ` Frederic Weisbecker
2012-02-02 17:25                     ` Christoph Lameter
2012-02-02 17:25                       ` Christoph Lameter
2012-02-05 12:06                       ` Gilad Ben-Yossef
2012-02-05 12:06                         ` Gilad Ben-Yossef
2012-02-06 18:19                         ` Christoph Lameter
2012-02-06 18:19                           ` Christoph Lameter
2012-02-09 15:37                           ` Frederic Weisbecker
2012-02-09 15:37                             ` Frederic Weisbecker

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=20120209181141.GF22552@somewhere.redhat.com \
    --to=fweisbec@gmail.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=avi@redhat.com \
    --cc=cl@linux.com \
    --cc=cmetcalf@tilera.com \
    --cc=gilad@benyossef.com \
    --cc=kosaki.motohiro@gmail.com \
    --cc=levinsasha928@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mel@csn.ul.ie \
    --cc=miltonm@bga.com \
    --cc=mina86@mina86.com \
    --cc=mpm@selenic.com \
    --cc=penberg@kernel.org \
    --cc=riel@redhat.com \
    --cc=viro@zeniv.linux.org.uk \
    /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.