On 24 June 2014 13:01, Viresh Kumar viresh.kumar@linaro.org wrote:
HI Guys,
I have been working on CPU Isolation work since sometime now. The target here is to isolate a Core (for High performance Networking: data plane thread) from all kernel activities. A single data plane thread must run on isolated CPU indefinitely.
So, we need isolation from tasks, timers, ticks, workqueues, etc. Anything I missed in this list?
IRQs even if they are pinned to CPU0 by default on ARM system
I am doing this with help of CPUSets/NO_HZ_FULL, etc currently.
One of the problem which isn't solved very well until now is: "How can we guarantee that CPU is isolated" ?
Currently, my script is relying on the fact that on most of the interruptions per-cpu tick gets updated and checking its value must be enough from /proc/interrupts for clkevt device.
why only clkevt devices ? and not all the IRQs except those that you specifically want to be handled on the isolated CPU (if there are some)
Is that enough? Or there are cases when there might be some interruption and ticks don't get updated?
yes, a small wake up because of an IRQ doesn't always generate a tick irq
The problem with the /proc/interrupts solution is that it changes with clkevt-driver. Some platforms might have strings as "arch_timer" or "twd" or something else.
Is there some robust way which would work on any platform? ARM/X86/etc ..
-- viresh