Re: [v7 0/8] Reduce cross CPU IPI interference

From: Frederic Weisbecker
Date: Thu Feb 09 2012 - 13:11:48 EST


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 from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/