Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b2d9323d139f5c384fa1ef1d74773b4db1c09b3d
Commit:     b2d9323d139f5c384fa1ef1d74773b4db1c09b3d
Parent:     3075d9da0b4ccc88959db30de80ebd11d2dde175
Author:     john stultz <[EMAIL PROTECTED]>
AuthorDate: Tue Oct 16 23:27:18 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Wed Oct 17 08:42:53 2007 -0700

    Use num_possible_cpus() instead of NR_CPUS for timer distribution
    
    To avoid lock contention, we distribute the sched_timer calls across the
    cpus so they do not trigger at the same instant.  However, I used NR_CPUS,
    which can cause needless grouping on small smp systems depending on your
    kernel config.  This patch converts to using num_possible_cpus() so we
    spread it as evenly as possible on every machine.
    
    Briefly tested w/ NR_CPUS=255 and verified reduced contention.
    
    Signed-off-by: John Stultz <[EMAIL PROTECTED]>
    Acked-by: Thomas Gleixner <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 kernel/time/tick-sched.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
index 8c3fef1..ce89ffb 100644
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -570,7 +570,7 @@ void tick_setup_sched_timer(void)
        /* Get the next period (per cpu) */
        ts->sched_timer.expires = tick_init_jiffy_update();
        offset = ktime_to_ns(tick_period) >> 1;
-       do_div(offset, NR_CPUS);
+       do_div(offset, num_possible_cpus());
        offset *= smp_processor_id();
        ts->sched_timer.expires = ktime_add_ns(ts->sched_timer.expires, offset);
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to