[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.11.1606241204240.5839@nanos>
Date: Fri, 24 Jun 2016 12:06:11 +0200 (CEST)
From: Thomas Gleixner <tglx@...utronix.de>
To: George Spelvin <linux@...encehorizons.net>
cc: linux-kernel@...r.kernel.org, arjan@...radead.org, clm@...com,
edumazet@...gle.com, fweisbec@...il.com, lenb@...nel.org,
mingo@...nel.org, paulmck@...ux.vnet.ibm.com, peterz@...radead.org,
riel@...hat.com, rt@...utronix.de, torvalds@...ux-foundation.org
Subject: Re: [patch V2 12/20] timer: Switch to a non cascading wheel
On Sat, 18 Jun 2016, George Spelvin wrote:
> Looking at the __next_timer_interrupt function, it seems that it does
> a lot more work than necessary. Once a timeout has been found in the
> current level, the range which must be searched in the following level
> is limited to 1/LVL_CLK_DIV of the range in the current level.
>
> That quickly tapers off to zero and the search can stop.
>
> In particular, if a timeout is found at level 0 between the immediately
> next bucket and the next bucket which is a multiple of LEVEL_SHIFT_DIV,
> inclusive (1 <= x <= 8 buckets depending on the sbits of base->clk),
> then the search can stop immediately.
Correct. Thought about that, but never came around to implement it.
> This is hairy code and the following untested code is probably buggy,
> but the basic idea is:
It's buggy, but yes the idea is sane. We can do this as an incremental change
once we agreed on the general idea.
Thanks,
tglx
Powered by blists - more mailing lists