Messages in this thread | | | Date | Fri, 02 Nov 2012 15:50:37 +0100 | From | David Nyström <> | Subject | Re: [PATCH 00/32] [RFC] nohz/cpuset: Start discussions on nohz CPUs |
| |
On 11/02/2012 03:37 PM, Steven Rostedt wrote: > On Fri, 2012-11-02 at 14:23 +0000, Christoph Lameter wrote: >> On Mon, 29 Oct 2012, Steven Rostedt wrote: >> >>> A while ago Frederic posted a series of patches to get an idea on >>> how to implement nohz cpusets. Where you can add a task to a cpuset >>> and mark the set to be 'nohz'. When the task runs on a CPU and is >>> the only task scheduled (nr_running == 1), the tick will stop. >>> The idea is to give the task the least amount of kernel interference >>> as possible. If the task doesn't do any system calls (and possibly >>> even if it does), no timer interrupt will bother it. By using >>> isocpus and nohz cpuset, a task would be able to achieve true cpu >>> isolation. >>
One other aspect that this patch probably needs to address is the cache localization of irq spinlocks.
At least in 3.6, with !CONFIG_SPARSE_IRQ -- struct irq_desc irq_desc[NR_IRQS] __cacheline_aligned_in_smp = { [0 ... NR_IRQS-1] = { .handle_irq = handle_bad_irq, .depth = 1, .lock = __RAW_SPIN_LOCK_UNLOCKED(irq_desc->lock), } }; --
You are likely to get a cache miss in the top half of your low latency CPU anytime some other CPU has taken a spinlock which lies within the same cache line.
Or is my understanding of the __cacheline_aligned_in_smp declaration wrong ?
Br, David
| |