All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Ingo Molnar <mingo@elte.hu>, Paul Mackerras <paulus@samba.org>,
	Corey Ashford <cjashfor@linux.vnet.ibm.com>,
	linux-kernel@vger.kernel.org,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH 1/5] hrtimer: per-cpu cached values of ktime
Date: Sat, 09 May 2009 21:59:57 +0200	[thread overview]
Message-ID: <1241899197.6316.739.camel@laptop> (raw)
In-Reply-To: <alpine.LFD.2.01.0905091234510.3586@localhost.localdomain>

On Sat, 2009-05-09 at 12:45 -0700, Linus Torvalds wrote:
> 
> On Fri, 8 May 2009, Peter Zijlstra wrote:
> >
> > The regular (hrtimer driven) tick calls ktime_get() 4 times:
> > 
> > hrtimer_interupt()
> >   ktimer_get()
> >   __run_hrtimer()
> >     tick_sched_timer()
> >       ktimer_get()
> >       update_process_times()
> >         run_local_timers()
> >         rcu_pending()
> >         printk_tick()
> >         scheduler_tick()
> >           sched_clock_tick()
> >             ktime_get()
> >           perf_counter_task_tick()
> >         run_posix_cpu_timers()
> >       profile_tick()
> >       hrtimer_forward()
> >     hrtimer_enqueue()
> >       tick_program_event()
> >         tick_dev_program_event()
> >           ktime_get()
> > 
> > Reduce that to 2 by caching the 1st ktime_get(). By clearing the state on
> > irq_exit() this always works, even for !hrtimer ticks.
> 
> Ugh. This looks pretty horrid. That special-case cache is just nasty.
> 
> Would it be entirely impossible to just instead do ktime_get() once at the 
> top and just pass it down. Yes, yes, it would involve calling convention 
> changes, but that sounds way saner than having an ad-hoc cache like this.
> 
> With this, you now have magic rules for when you can use the "get from 
> cache" version, and time goes backwards if you mix them by mistake (ie you 
> use a non-caching "ktime_get()" in between two caching "ktime_irq_get()" 
> calls, and now time will have gone backwards from the second to the third 
> case).
> 
> It just seems to be very hacky.

Agreed.. but that would mean passing it down to every hrtimer callback
function, most of whoem won't be interested in it. Furthermore, we'd
have to audit all other 'legacy' timer functions -- but so be it I
guess.

Also, I've had a report that this patch causes some funnies, so there's
definitely something fishy.

I'll look at doing this differently.


  reply	other threads:[~2009-05-09 20:00 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-08 16:52 [PATCH 0/5] pending patches Peter Zijlstra
2009-05-08 16:52 ` [PATCH 1/5] hrtimer: per-cpu cached values of ktime Peter Zijlstra
2009-05-08 23:10   ` Andrew Morton
2009-05-09 19:45   ` Linus Torvalds
2009-05-09 19:59     ` Peter Zijlstra [this message]
2009-05-08 16:52 ` [PATCH 2/5] perf_counter: optimize perf_counter_task_tick() Peter Zijlstra
2009-05-08 18:39   ` [tip:perfcounters/core] " tip-bot for Peter Zijlstra
2009-05-08 16:52 ` [PATCH 3/5] perf_counter: rework ioctl()s Peter Zijlstra
2009-05-08 18:39   ` [tip:perfcounters/core] " tip-bot for Peter Zijlstra
2009-05-11  1:29   ` [PATCH 3/5] " Paul Mackerras
2009-05-11 15:12     ` Peter Zijlstra
2009-05-12  6:24       ` Paul Mackerras
2009-05-11 18:12     ` Corey Ashford
2009-05-11 20:52       ` Paul Mackerras
2009-05-11 22:37         ` Corey Ashford
2009-05-12  6:16           ` Paul Mackerras
2009-05-12 16:15             ` Corey Ashford
2009-05-12 22:18               ` Paul Mackerras
2009-05-12 22:51                 ` Corey Ashford
2009-05-11 23:58   ` Arnd Bergmann
2009-05-12  6:11     ` Peter Zijlstra
2009-05-12  6:22       ` Paul Mackerras
2009-05-12  6:27         ` Peter Zijlstra
2009-05-12  7:10           ` Peter Zijlstra
2009-05-12  7:52             ` Arnd Bergmann
2009-05-12 10:59               ` [PATCH] perf_counter: fix ioctl()s Peter Zijlstra
2009-05-12 11:21             ` [PATCH 3/5] perf_counter: rework ioctl()s Paul Mackerras
2009-05-08 16:52 ` [PATCH 4/5] perf_counter: PERF_RECORD_CONFIG Peter Zijlstra
2009-05-08 18:39   ` [tip:perfcounters/core] perf_counter: add PERF_RECORD_CONFIG tip-bot for Peter Zijlstra
2009-05-08 16:52 ` [PATCH 5/5] perf_counter: PERF_RECORD_CPU Peter Zijlstra
2009-05-08 18:40   ` [tip:perfcounters/core] perf_counter: add PERF_RECORD_CPU tip-bot for Peter Zijlstra

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=1241899197.6316.739.camel@laptop \
    --to=a.p.zijlstra@chello.nl \
    --cc=cjashfor@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=paulus@samba.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /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.