lkml.org 
[lkml]   [2010]   [Jan]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH]tickless: Fix tick nohz timer irq0 fail to increaase
    Tickless is disabled by nohz=off, which is used in OSVs. But in current kernel,
    if tickless is disabled, the timer irq0 will not increase. Because the timer
    event handler should be tick_handle_periodic, but actually event handler keep
    as tick_handle_oneshot_broadcast which is used in tickless. The root cause is
    that it is default to enable high resolution timer which will force to oneshot
    broadcast mode.

    This patch add tickless enable check before enable high resolution timer

    On Nehalem-EX:

    Before the patch:
    linux-a25n:~ # cat /proc/interrupts | grep timer
    0: 334 0 0 0 0 0 ....
    LOC: 192248 193931 193851 184441 193803 193625 ....

    After the patch:
    cat /proc/interrupts | grep timer
    0: 223788 0 0 0 0 0 ....
    LOC: 13081 238407 238452 229405 238298 235688 ....

    Signed-off-by: Youquan, Song <youquan.song@intel.com>
    ---


    diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
    index f992762..a515bed 100644
    --- a/kernel/time/tick-sched.c
    +++ b/kernel/time/tick-sched.c
    @@ -815,7 +815,7 @@ int tick_check_oneshot_change(int allow_nohz)
    if (!timekeeping_valid_for_hres() || !tick_is_oneshot_available())
    return 0;

    - if (!allow_nohz)
    + if (!allow_nohz && tick_nohz_enabled)
    return 1;

    tick_nohz_switch_to_nohz();

    \
     
     \ /
      Last update: 2010-01-04 04:17    [W:6.882 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site