From: Arun R Bharadwaj <arun@linux.vnet.ibm.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org,
linux-pm@lists.linux-foundation.org, a.p.zijlstra@chello.nl,
ego@in.ibm.com, mingo@elte.hu, andi@firstfloor.org,
venkatesh.pallipadi@intel.com, vatsa@linux.vnet.ibm.com,
arjan@infradead.org, svaidy@linux.vnet.ibm.com
Subject: Re: [v3 PATCH 4/4] timers: logic to move non pinned timers
Date: Tue, 17 Mar 2009 17:15:58 +0530 [thread overview]
Message-ID: <20090317114557.GA32233@linux.vnet.ibm.com> (raw)
In-Reply-To: <alpine.LFD.2.00.0903171017590.29264@localhost.localdomain>
* Thomas Gleixner <tglx@linutronix.de> [2009-03-17 11:22:24]:
> On Mon, 16 Mar 2009, Arun R Bharadwaj wrote:
> > @@ -627,6 +628,16 @@ __mod_timer(struct timer_list *timer, un
> >
> > new_base = __get_cpu_var(tvec_bases);
> >
> > + current_cpu = smp_processor_id();
> > + preferred_cpu = get_nohz_load_balancer();
> > + if (get_sysctl_timer_migration() && idle_cpu(current_cpu) &&
> > + !pinned && preferred_cpu != -1) {
> > + new_base = per_cpu(tvec_bases, preferred_cpu);
> > + timer_set_base(timer, new_base);
> > + timer->expires = expires;
> > + internal_add_timer(new_base, timer);
> > + goto out_unlock;
> > + }
>
> Err. This change breaks the timer->base logic. Why can't it just
> select the base and use the existing code ?
>
Sure, I'll take care of this.
> > @@ -198,8 +200,16 @@ switch_hrtimer_base(struct hrtimer *time
> > {
> > struct hrtimer_clock_base *new_base;
> > struct hrtimer_cpu_base *new_cpu_base;
> > + int current_cpu, preferred_cpu;
> > +
> > + current_cpu = smp_processor_id();
> > + preferred_cpu = get_nohz_load_balancer();
> > + if (get_sysctl_timer_migration() && !pinned && preferred_cpu != -1
> > + && idle_cpu(current_cpu))
> > + new_cpu_base = &per_cpu(hrtimer_bases, preferred_cpu);
> > + else
> > + new_cpu_base = &__get_cpu_var(hrtimer_bases);
> >
> > - new_cpu_base = &__get_cpu_var(hrtimer_bases);
> > new_base = &new_cpu_base->clock_base[base->index];
>
> Hmm. This can lead to high latencies when you enqueue the timer on
> the other CPU simply because we can not reprogram the timer hardware
> on the other CPU in the CONFIG_HIGH_RES=y case.
>
> Let's assume we are on CPU0 and try to enqueue the timer on CPU1,
> where the next timer expiry is 5ms away. The timer which we enqueue
> is due in 500us. So you introduce 4.5ms latency.
>
We are moving timers to the ilb which wakes up every jiffy.
So we can move the timer to the ilb only if it's expiry
time is greater than 1 jiffy. Else we can fire on the same CPU.
This would prevent any latency from being added, right?
--arun
> Thanks,
>
> tglx
>
>
next prev parent reply other threads:[~2009-03-17 11:46 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-16 11:10 [v3 PATCH 0/4] timers: Framework for migration of timers Arun R Bharadwaj
2009-03-16 11:12 ` [v3 PATCH 1/4] timers: Framework for identifying pinned timers Arun R Bharadwaj
2009-03-16 11:12 ` Arun R Bharadwaj
2009-03-16 11:13 ` [v3 PATCH 2/4] timers: Identifying the existing " Arun R Bharadwaj
2009-03-17 13:07 ` Thomas Gleixner
2009-03-17 13:07 ` Thomas Gleixner
2009-03-18 4:36 ` Arun R Bharadwaj
2009-03-18 4:36 ` Arun R Bharadwaj
2009-03-16 11:13 ` Arun R Bharadwaj
2009-03-16 11:14 ` [v3 PATCH 3/4] timers: /proc/sys sysctl hook to enable timer migration Arun R Bharadwaj
2009-03-16 11:14 ` Arun R Bharadwaj
2009-03-16 15:29 ` Alexey Dobriyan
2009-03-17 10:13 ` Ingo Molnar
2009-03-17 10:13 ` Ingo Molnar
2009-03-16 15:29 ` Alexey Dobriyan
2009-03-16 11:15 ` [v3 PATCH 4/4] timers: logic to move non pinned timers Arun R Bharadwaj
2009-03-16 11:15 ` Arun R Bharadwaj
2009-03-17 10:22 ` Thomas Gleixner
2009-03-17 10:22 ` Thomas Gleixner
2009-03-17 11:45 ` Arun R Bharadwaj [this message]
2009-03-17 13:01 ` Thomas Gleixner
2009-03-17 13:01 ` Thomas Gleixner
2009-03-30 5:00 ` Arun R Bharadwaj
2009-03-30 5:00 ` Arun R Bharadwaj
2009-03-17 11:45 ` Arun R Bharadwaj
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=20090317114557.GA32233@linux.vnet.ibm.com \
--to=arun@linux.vnet.ibm.com \
--cc=a.p.zijlstra@chello.nl \
--cc=andi@firstfloor.org \
--cc=arjan@infradead.org \
--cc=ego@in.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=mingo@elte.hu \
--cc=svaidy@linux.vnet.ibm.com \
--cc=tglx@linutronix.de \
--cc=vatsa@linux.vnet.ibm.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.