[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160816075721.GA23077@localhost.localdomain>
Date: Tue, 16 Aug 2016 09:57:21 +0200
From: Richard Cochran <richardcochran@...il.com>
To: Rik van Riel <riel@...hat.com>
Cc: Jouni Malinen <jkmalinen@...il.com>,
Thomas Gleixner <tglx@...utronix.de>,
LKML <linux-kernel@...r.kernel.org>,
Ingo Molnar <mingo@...nel.org>,
Peter Zijlstra <peterz@...radead.org>,
Paul McKenney <paulmck@...ux.vnet.ibm.com>,
Frederic Weisbecker <fweisbec@...il.com>,
Chris Mason <clm@...com>,
Arjan van de Ven <arjan@...radead.org>, rt@...utronix.de,
George Spelvin <linux@...encehorizons.net>,
Len Brown <lenb@...nel.org>,
Josh Triplett <josh@...htriplett.org>,
Eric Dumazet <edumazet@...gle.com>
Subject: Re: [patch 4 14/22] timer: Switch to a non cascading wheel
On Fri, Aug 12, 2016 at 01:50:16PM -0400, Rik van Riel wrote:
> Could that cause the new timer wheel code to skip over
> timer buckets occasionally, or is this hypothesis bunk?
The new wheel is not different from the old one in this respect. Each
base keeps its own jiffies counter. When returning from a long sleep,
the base counter can be behind the current jiffies value by more than
one. In __run_timers() we loop through all the missed jiffies:
while (time_after_eq(jiffies, base->clk)) {
levels = collect_expired_timers(base, heads);
base->clk++;
while (levels--)
expire_timers(base, heads + levels);
}
So the hypothesis is incorrect.
Thanks,
Richard
Powered by blists - more mailing lists