public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Andi Kleen <ak@suse.de>, Ingo Molnar <mingo@elte.hu>,
	Arjan van de Ven <arjan@infradead.org>,
	Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>,
	John Stultz <johnstul@us.ibm.com>,
	Chris Wright <chrisw@sous-sol.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [patch -mm 09/28] Tick management: spread timer interrupt
Date: Mon, 25 Jun 2007 17:11:15 -0700	[thread overview]
Message-ID: <20070625171115.73a42e93.akpm@linux-foundation.org> (raw)
In-Reply-To: <20070623124030.531042944@inhelltoy.tec.linutronix.de>

On Sat, 23 Jun 2007 13:32:34 -0000
Thomas Gleixner <tglx@linutronix.de> wrote:

> From: john stultz <johnstul@us.ibm.com>
> 
> After discussing w/ Thomas over IRC, it seems the issue is the sched
> tick fires on every cpu at the same time, causing extra lock contention.
> 
> This smaller change, adds an extra offset per cpu so the ticks don't
> line up. This patch also drops the idle latency from 40us down to under
> 20us.
> 
> Signed-off-by: john stultz <johnstul@us.ibm.com>
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> 
> ---
>  kernel/time/tick-sched.c |    7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> Index: linux-2.6.22-rc4-mm/kernel/time/tick-sched.c
> ===================================================================
> --- linux-2.6.22-rc4-mm.orig/kernel/time/tick-sched.c	2007-06-23 14:38:56.000000000 +0200
> +++ linux-2.6.22-rc4-mm/kernel/time/tick-sched.c	2007-06-23 14:38:58.000000000 +0200
> @@ -573,6 +573,7 @@ void tick_setup_sched_timer(void)
>  {
>  	struct tick_sched *ts = &__get_cpu_var(tick_cpu_sched);
>  	ktime_t now = ktime_get();
> +	u64 offset;
>  
>  	/*
>  	 * Emulate tick processing via per-CPU hrtimers:
> @@ -581,8 +582,12 @@ void tick_setup_sched_timer(void)
>  	ts->sched_timer.function = tick_sched_timer;
>  	ts->sched_timer.cb_mode = HRTIMER_CB_IRQSAFE_NO_SOFTIRQ;
>  
> -	/* Get the next period */
> +	/* 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);

With CONFIG_NR_CPUS=128 on a 2-way this'll be a pretty lumpy spreading? 
Perhaps it woud be better to use num_possible_cpus() here?


> +	offset *= smp_processor_id();
> +	ts->sched_timer.expires = ktime_add_ns(ts->sched_timer.expires, offset);
>  
>  	for (;;) {
>  		hrtimer_forward(&ts->sched_timer, now, tick_period);
> 
> -- 

  reply	other threads:[~2007-06-26  0:11 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-23 13:32 [patch-mm 00/28] High resolution timer updates and x86_64 support - V3 Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 01/28] NOHZ: Fix nox x86 dyntick idle handling Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 02/28] ACPI: Move timer broadcast and pmtimer access before C3 arbiter shutdown Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 03/28] clockevents: fix typo in acpi_pm.c Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 04/28] Timekeeping: Fixup shadow variable argument Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 05/28] timer.c cleanup recently introduced whitespace damage Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 06/28] Clockevents remove prototypes of removed functions Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 07/28] clockevents: Fix resume logic Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 08/28] clockevents: Fix device replacement Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 09/28] Tick management: spread timer interrupt Thomas Gleixner
2007-06-26  0:11   ` Andrew Morton [this message]
2007-06-23 13:32 ` [patch -mm 10/28] highres: Improve debug output Thomas Gleixner
2007-06-26  0:14   ` Andrew Morton
2007-06-26 12:16     ` Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 11/28] hrtimer: speedup hrtimer_enqueue Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 12/28] pcspkr: use the global PIT lock Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 13/28] NTP: Move the cmos update code into ntp.c Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 14/28] i386: PIT stop only, when in periodic or oneshot mode Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 15/28] i386: remove volatile in apic.c Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 16/28] i386: hpet assumes boot cpu is 0 Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 17/28] i386: move PIT function declarations and constants to correct header file Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 18/28] x86_64: untangle asm/hpet.h from asm/timex.h Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 19/28] x86_64: Use generic cmos update Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 20/28] x86-64: remove dead code and other janitor work in tsc.c Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 21/28] x86-64: Fix APIC typo Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 22/28] x86_64: Convert to cleckevents Thomas Gleixner
2007-06-26  0:27   ` Andrew Morton
2007-06-23 13:32 ` [patch -mm 23/28] ACPI: Remove the useless ifdef code Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 24/28] x86_64: hpet restore vread Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 25/28] x86_64: restore restore nohpet cmdline Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 26/28] x86-64 block irq balancing for timer Thomas Gleixner
2007-06-23 21:27   ` Arjan van de Ven
2007-06-24  0:04     ` Andreas Kleen
2007-06-24  1:20       ` Arjan van de Ven
2007-06-23 13:32 ` [patch -mm 27/28] x86_64: prep idle loop for dynticks Thomas Gleixner
2007-06-23 13:32 ` [patch -mm 28/28] x86_64: enable high resolution timers and dynticks Thomas Gleixner
2007-06-28  9:42 ` [patch-mm 00/28] High resolution timer updates and x86_64 support - V3 Andrew Morton
2007-06-28  9:47   ` Andi Kleen
2007-06-28 10:39     ` Andrew Morton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070625171115.73a42e93.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=ak@suse.de \
    --cc=arjan@infradead.org \
    --cc=chrisw@sous-sol.org \
    --cc=johnstul@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    --cc=venkatesh.pallipadi@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox