All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: George Anzinger <george@mvista.com>
Cc: linux-kernel@vger.kernel.org,
	Thomas Gleixner <tglx@linutronix.de>,
	Steven Rostedt <rostedt@goodmis.org>,
	dwalker@mvista.com,
	"'high-res-timers-discourse@lists.sourceforge.net'" 
	<high-res-timers-discourse@lists.sourceforge.net>,
	john stultz <johnstul@us.ibm.com>
Subject: Re: 2.6.13-rt6, ktimer subsystem
Date: Thu, 15 Sep 2005 11:20:08 +0200	[thread overview]
Message-ID: <20050915092008.GA17915@elte.hu> (raw)
In-Reply-To: <43287C52.7050002@mvista.com>


* George Anzinger <george@mvista.com> wrote:

> > the end-effect of ktimers is a much more deterministic HRT engine.  
> > The original merging of HR timers into the stock timer wheel was a 
> > Bad Idea (tm). We intend to push the ktimer subsystem upstream as 
> > well.
> 
> Well, having spent a bit of time looking at the code it appears that a 
> lot of the ideas we looked at and discarded (see 
> high-res-timers-discourse@lists.sourceforge.net) are in this.  Shame 
> it was all done with out reference or comment to that list, anyone on 
> it or even the lkml.

this was done in the timeframe of 2 days, and was posted ASAP - with you 
Cc:-ed for the specific purpose of getting feedback from you.

given the very good performance results of ktimers, and the 
simplification effect on the original HRT code:

   36 files changed, 2016 insertions(+), 3094 deletions(-)

it was a no-brainer to put it into the -rt tree.

> I DO agree that it _looks_ nicer, cleaner and so on. But there are a 
> lot of things we rejected in here and they really do need, at least, a 
> hard look.
> 
> A few of the top issues:
> 
> time in nanoseconds 64-bits, requires a divide to do much of anything 
> with it.  Divides are slow and should be avoided if possible.  This is 
> especially true in the embedded market.

Wrong. Divides are slow _on the micro micro level_. They make zero, nil, 
nada difference in reality. The cleanliness difference between having a 
flat nanosec scale and having some artificial 2x 32-bit structure are 
significant.

_By far_ the biggest problem of the HRT code is cleanliness (or the lack 
of it), and the resulting maintainance overhead, and the resulting gut 
reaction from upstream: "oh, yuck, bleh!". [Similar problems are true 
for the timer code in general - by far the biggest issues are 
organization and cleanliness, not micro-issues.]

Micro-level optimizations like 64-bit vs. 32-bit variables is the very 
very last issue to consider - and this statement comes from me, an 
admitted performance extremist. If the HRT code ever wants to go 
upstream then it _must get much much cleaner_. Thomas has been doing 
great work in this area.

> The rbtree is a high overhead tree. I suspect performance problems 
> here. [...]

Wrong. rbtrees are used for some of the most performance-critical areas 
of the kernel: the VMA tree, the new ext3 reservations code [a 
performance feature], access keys.

> [...] If it is the right answer here, then why not use it for normal 
> timers? [...]

i'd like to remind you that the code is less than a week old.

But, i dont think we want to make the majority of normal timeouts 
tree-based. There are in essence two fundamental time related objects in 
the kernel: timeouts and timers. Timeouts never expire in 99% of the 
cases - so they must be optimized for the 'fast insert+remove' codepath.  
Timers on the other hand expire in 99% of the cases, so they must be 
optimized for the 'fast insert+expire' codepath.

Also, for timers, since they are often used by time-deterministic code, 
it does not hurt to have a fundamentally deterministic design. The 
current upstream timer(timeout) wheel is fundamentally non-deterministic 
with an increasing number of timers, due to the cascading design.

hence the separation of timers and timeouts. I think that this 
distinction might as well stay for the long run.

and we'be been through a number of design variants during the past 
couple of weeks in the -rt tree: we tried the original HRT patch, a 
combo method with partly split HR timers, and now a completely separated 
design. From what i've seen ktimers are the best solution so far.

	Ingo

  parent reply	other threads:[~2005-09-15  9:20 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-13 10:00 2.6.13-rt6, ktimer subsystem Ingo Molnar
2005-09-13 19:59 ` Lee Revell
2005-09-13 20:06   ` Lee Revell
2005-09-13 20:10   ` Ingo Molnar
2005-09-13 20:36     ` Lee Revell
2005-09-15  7:55       ` Ingo Molnar
2005-09-15 11:37         ` Ingo Molnar
2005-09-14 15:56 ` Darren Hart
2005-09-14 22:09   ` Darren Hart
2005-09-14 19:38 ` George Anzinger
2005-09-15  2:25   ` Thomas Gleixner
2005-09-15 22:35     ` George Anzinger
2005-09-15 22:53       ` Thomas Gleixner
2005-09-15 23:10         ` George Anzinger
2005-09-15 23:09       ` Daniel Walker
2005-09-16  0:08         ` George Anzinger
2005-09-15  9:20   ` Ingo Molnar [this message]
2005-09-15 23:04     ` George Anzinger
2005-09-15 23:20       ` Thomas Gleixner
2005-09-15  9:43 ` Roman Zippel
2005-09-26  7:02 ` 2.6.14-rc2-rt2 Ingo Molnar
2005-09-27  6:13   ` 2.6.14-rc2-rt2 Eran Mann
2005-09-27 10:33     ` 2.6.14-rc2-rt2 Ingo Molnar
2005-09-27 16:59   ` 2.6.14-rc2-rt2 Fernando Lopez-Lezcano
2005-09-27 22:15     ` 2.6.14-rc2-rt2 Thomas Gleixner
2005-09-27 23:11       ` 2.6.14-rc2-rt2 Fernando Lopez-Lezcano
2005-09-27 23:10     ` 2.6.14-rc2-rt2 Daniel Walker
2005-09-28  3:04       ` 2.6.14-rc2-rt2 Fernando Lopez-Lezcano
2005-09-28  9:48         ` 2.6.14-rc2-rt2 Ingo Molnar
2005-09-28 16:34           ` 2.6.14-rc2-rt2 Fernando Lopez-Lezcano
2005-09-29  9:07             ` 2.6.14-rc2-rt2 Eran Mann
2005-09-28  9:10   ` 2.6.14-rc2-rt2 Peter Zijlstra
2005-09-29 16:45   ` 2.6.14-rc2-rt2 Badari Pulavarty
2005-09-30 10:58     ` 2.6.14-rc2-rt2 Ingo Molnar
2005-10-02 15:18   ` 2.6.14-rc3-rt1 Ingo Molnar
2005-10-02 15:42     ` 2.6.14-rc3-rt1 Mark Knecht
2005-10-02 19:25       ` 2.6.14-rc3-rt1 Mark Knecht
2005-10-06 17:13         ` 2.6.14-rc3-rt1 Steven Rostedt
2005-10-07 11:09           ` [patch] pcmcia-shutdown-fix.patch Ingo Molnar
2005-10-07 19:17             ` Russell King
2005-10-07 19:46               ` Steven Rostedt
2005-10-10 15:13               ` Steven Rostedt
2005-10-10 15:37                 ` Steven Rostedt
2005-10-02 20:51     ` 2.6.14-rc3-rt1 Felix Oxley
2005-10-02 21:55       ` 2.6.14-rc3-rt1 Felix Oxley
2005-10-03  6:33       ` 2.6.14-rc3-rt1 Ingo Molnar

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=20050915092008.GA17915@elte.hu \
    --to=mingo@elte.hu \
    --cc=dwalker@mvista.com \
    --cc=george@mvista.com \
    --cc=high-res-timers-discourse@lists.sourceforge.net \
    --cc=johnstul@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    /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.