Messages in this thread | | | Date | Thu, 06 Feb 2014 21:38:45 +0400 | From | Alexey Perevalov <> | Subject | Re: [PATCH v2 0/3] Deferrable timers support for timerfd API |
| |
On 02/06/2014 02:16 AM, Thomas Gleixner wrote: > On Wed, 5 Feb 2014, John Stultz wrote: >> 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). > Mooo. > >> 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. > I can see the point. I have no objections against that approach as > long as we map that against separate internal bases. > >> Internally we can still keep separate bases, much as your patch does, to >> keep the next-event searching overhead more limited. > It's not only more limited, it's bound. > >> 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. > So the only interface which does not support that is sys_nanosleep() > but that's not really an issue. sys_nanosleep() should die anyway :) > >> 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 ;). > Well, you have a valid point about the clock ids. I did not realize in > the first place that we can avoid that business if we use the flags to > select the internal representation. > > Either way is preferred over reintroducing the timer wheel mess.... > > Thanks, > > tglx >
As I truly understand, you decided - flags is better than new clockids, and internals of timerfd could be a mix of timer_list and hrtimer. If so, it's in v2 patch set.
-- Best regards, Alexey Perevalov
| |