a bug on NO_HZ_FULL_ALL

Frederic Weisbecker fweisbec at gmail.com
Thu Nov 14 08:15:06 EST 2013


On Thu, Nov 14, 2013 at 09:08:29PM +0800, Alex Shi wrote:
> On 11/14/2013 08:08 PM, Russell King - ARM Linux wrote:
> > On Thu, Nov 14, 2013 at 12:53:15PM +0100, Frederic Weisbecker wrote:
> >> BTW, support for ARM's full dynticks is uncomplete without
> >> "[PATCH] ARM: Support arch_irq_work_raise() via self IPIs"
> >>
> >> ...which I'm not sure is applied upstream, or even any ARM tree yet.
> > 
> > It's in mainline as of last night, along with a fix to the above patch.
> > 
> 
> I saw this in linus tree and in tip/master. According to content, it
> seems no effort on this issue. The following testing base on latest code.
> 
> btw, the full_all do cause more interrupts.
> 
> #
> # Timers subsystem
> #
> CONFIG_TICK_ONESHOT=y
> CONFIG_NO_HZ_COMMON=y
> # CONFIG_HZ_PERIODIC is not set
> # CONFIG_NO_HZ_IDLE is not set
> CONFIG_NO_HZ_FULL=y
> # CONFIG_NO_HZ_FULL_ALL is not set
> CONFIG_NO_HZ_FULL_SYSIDLE=y
> CONFIG_NO_HZ_FULL_SYSIDLE_SMALL=2
> CONFIG_NO_HZ=y
> CONFIG_HIGH_RES_TIMERS=y
> 
> alexs at alex-panda:~$ head -2 /proc/interrupts; sleep 10 ; head -2
> /proc/interrupts
>            CPU0       CPU1
>  29:      12567       9783       GIC  29  twd
>            CPU0       CPU1
>  29:      12814       9942       GIC  29  twd
> 
> Then enabled CONFIG_NO_HZ_FULL_ALL. more than 200/second interrupt
> increased.
> 
> alexs at alex-panda:~$ head -2 /proc/interrupts; sleep 10 ; head -2
> /proc/interrupts
>            CPU0       CPU1
>  29:      34969       6384       GIC  29  twd
>            CPU0       CPU1
>  29:      37172       6646       GIC  29  twd
> 

There are various context requirements to let a CPU shut down its tick most of the
time: having at most 1 task running, no posix cpu timers, not use perf events based
on frequency (which is the default behaviour of perf record), etc...

Try this selftest if you want to see how it behaves it your system:

    git://git.kernel.org/pub/scm/linux/kernel/git/frederic/dynticks-testing.git



More information about the linux-arm-kernel mailing list