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);
>
> --
next prev parent 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