Re: [PATCH v2 0/3] Deferrable timers support for timerfd API
[Posted February 25, 2014 by corbet]
From: |
| John Stultz <john.stultz-AT-linaro.org> |
To: |
| Thomas Gleixner <tglx-AT-linutronix.de>, Alexey Perevalov <a.perevalov-AT-samsung.com> |
Subject: |
| Re: [PATCH v2 0/3] Deferrable timers support for timerfd API |
Date: |
| Wed, 05 Feb 2014 14:02:44 -0800 |
Message-ID: |
| <52F2B504.5010403@linaro.org> |
Cc: |
| linux-kernel-AT-vger.kernel.org, anton-AT-enomsg.org, kyungmin.park-AT-samsung.com, akpm-AT-linux-foundation.org, cw00.choi-AT-samsung.com |
Archive‑link: | |
Article |
On 02/05/2014 01:41 PM, Thomas Gleixner wrote:
> On Wed, 5 Feb 2014, Alexey Perevalov wrote:
>> On 02/04/2014 08:10 PM, Thomas Gleixner wrote:
>>> On Mon, 27 Jan 2014, Alexey Perevalov wrote:
>>>> On 01/21/2014 11:12 PM, John Stultz wrote:
>>>>> Thomas: Any thought here? Should we be trying to unify the timerfd flags
>>>>> and the posix timer flags (specifically things like TIMER_CANCEL_ON_SET,
>>>>> which is currently timerfd-only)? Should a deferrable flag be added to
>>>>> the hrtimer core or left to the timer wheel?
>>> The timer cancel on set was added only to timerfd because timerfd is a
>>> non posix interface and we are halfways free to add stuff to
>>> it. Adding extra flags to the real posix timer interfaces is a
>>> different story.
>> And what about "deferrable" possibility for hrtimers, do you consider it
>> reasonable?
> In principle, I have no objections, but we need a proper technical
> solution. Just adding a flag and keeping the timers in the same rbtree
> like we do for the timer wheel timers is not going to happen.
>
> The only feasible solution is to have separate clock ids,
> e.g. CLOCK_*_DEFERRABLE, which would enable the deferrable
> functionality for all user space interfaces. No need for magic flags
> and complex search for non deferrable timers.
So of course, I was actually arguing against having a new clockid (which
was Alexey's first approach).
My reasoning was that the deferrablity isn't a clock domain, and is more
of a modifier. Thus to keep the interfaces somewhat sane (and avoiding
having to add N new clockids for each new modifier), we should utilize
the flag arguments to timers. So instead of just having TIMER_ABSTIME,
we could add TIMER_DEFER, etc, which we could utilize instead.
Internally we can still keep separate bases, much as your patch does, to
keep the next-event searching overhead more limited.
I mainly wanted to get your thoughts on extending the flags, and doing
so in a consistent manner between the timerfd and other timer interfaces.
Of course, all this is after I added the _ALARM clockids... so you can
decide if its hypocrisy or experience.
(The "old wisdom comes from experience and experience comes from bad
decisions" bit ;).
thanks
-john