* better msleep for drivers
@ 2008-05-11 11:01 Andi Kleen
2008-05-11 13:43 ` Thomas Gleixner
0 siblings, 1 reply; 5+ messages in thread
From: Andi Kleen @ 2008-05-11 11:01 UTC (permalink / raw)
To: tglx; +Cc: linux-kernel
Thomas,
Someone asked if there is a msleep using hrtimers that is more accurate
than jiffies/msecs for external drivers. There is hrtimer nanosleep,
but it is currently not exported. It can be reimplemented using hrtimer_start
etc. which are exported, but that seems rather clumpsy.
Is there any reason such an obvious function is not exported?
Ok I guess right now nobody in tree is using it. But that seems wrong.
Perhaps we should have a (exported) usleep_blocking() wrapper or somesuch for
that case?
I suspect that a lot of drivers could make use of it. Just from grepping we
have a lot of msleep(1)s in drivers and I suspect a lot of those would
actually like to delay shorter than one jiffie.
One argument against it would be that it makes them more difficult to test
because behavior will differ between hrtimer enabled and disabled systems.
Still longer term I suppose there's really no way around having accurate
sleep functions and it's probably better to start testing earlier than later.
Thoughts?
-Andi
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: better msleep for drivers
2008-05-11 11:01 better msleep for drivers Andi Kleen
@ 2008-05-11 13:43 ` Thomas Gleixner
2008-05-21 10:41 ` Pavel Machek
0 siblings, 1 reply; 5+ messages in thread
From: Thomas Gleixner @ 2008-05-11 13:43 UTC (permalink / raw)
To: Andi Kleen; +Cc: linux-kernel
Andi,
On Sun, 11 May 2008, Andi Kleen wrote:
> Someone asked if there is a msleep using hrtimers that is more accurate
> than jiffies/msecs for external drivers. There is hrtimer nanosleep,
> but it is currently not exported. It can be reimplemented using hrtimer_start
> etc. which are exported, but that seems rather clumpsy.
>
> Is there any reason such an obvious function is not exported?
Well, there was not yet a request / requirement for it.
> Ok I guess right now nobody in tree is using it. But that seems wrong.
> Perhaps we should have a (exported) usleep_blocking() wrapper or somesuch for
> that case?
>
> I suspect that a lot of drivers could make use of it. Just from grepping we
> have a lot of msleep(1)s in drivers and I suspect a lot of those would
> actually like to delay shorter than one jiffie.
Depends, lots of them are just the kind of "lets delay it a bit" with
no real requirement to be accurate. I agree that there are use cases
which could benefit from a more precise sleep facility than msleep
actually is, but we need to have a careful eye on the possible abuse
of such an interface.
> One argument against it would be that it makes them more difficult to test
> because behavior will differ between hrtimer enabled and disabled systems.
That's what other in tree hrtimer users already face today. scheduler,
networking and the user space interfaces. So that should be not a too
big problem as the hrtimer infrastructure guarantees that the timer
does not expire early whether highres is enabled or not. It's just
less finegrained with highres=off and that's just the same as we have
right now with msleep().
> Still longer term I suppose there's really no way around having accurate
> sleep functions and it's probably better to start testing earlier than later.
No objections, but we should not do that with a stupid msleep
replacement interface; instead we should expose a flexible in kernel
variant of hrtimer_nanosleep() which lets the user utilize
ABS/REL_TIME and the different clocks. A msleep helper can be built on
top of this very easily.
Thanks,
tglx
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: better msleep for drivers
2008-05-11 13:43 ` Thomas Gleixner
@ 2008-05-21 10:41 ` Pavel Machek
2008-05-21 15:24 ` Jeff Garzik
0 siblings, 1 reply; 5+ messages in thread
From: Pavel Machek @ 2008-05-21 10:41 UTC (permalink / raw)
To: Thomas Gleixner; +Cc: Andi Kleen, linux-kernel
Hi!
> > Still longer term I suppose there's really no way around having accurate
> > sleep functions and it's probably better to start testing earlier than later.
>
> No objections, but we should not do that with a stupid msleep
> replacement interface; instead we should expose a flexible in kernel
> variant of hrtimer_nanosleep() which lets the user utilize
> ABS/REL_TIME and the different clocks. A msleep helper can be built on
> top of this very easily.
While you are at it... it would be cool to have
'mdelay(2500 msec), but it is okay to wait 100msec more' -- type
interface, so we could use that for nohz benefit.
Currently, mdelay is 'it is okay to wait 10msec more' interface, and
it would be nice to have that explicit.
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: better msleep for drivers
2008-05-21 10:41 ` Pavel Machek
@ 2008-05-21 15:24 ` Jeff Garzik
2008-05-21 19:01 ` Pavel Machek
0 siblings, 1 reply; 5+ messages in thread
From: Jeff Garzik @ 2008-05-21 15:24 UTC (permalink / raw)
To: Pavel Machek; +Cc: Thomas Gleixner, Andi Kleen, linux-kernel
Pavel Machek wrote:
> Hi!
>
>>> Still longer term I suppose there's really no way around having accurate
>>> sleep functions and it's probably better to start testing earlier than later.
>> No objections, but we should not do that with a stupid msleep
>> replacement interface; instead we should expose a flexible in kernel
>> variant of hrtimer_nanosleep() which lets the user utilize
>> ABS/REL_TIME and the different clocks. A msleep helper can be built on
>> top of this very easily.
>
> While you are at it... it would be cool to have
>
> 'mdelay(2500 msec), but it is okay to wait 100msec more' -- type
> interface, so we could use that for nohz benefit.
>
> Currently, mdelay is 'it is okay to wait 10msec more' interface, and
> it would be nice to have that explicit.
eh, I think you transposed mdelay with msleep?
msleep() is the "it is okay to wait longer than I said" interface, not
mdelay(). mdelay() has always been non-sleeping and exact (as much as
the delay loop allows)
Jeff
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: better msleep for drivers
2008-05-21 15:24 ` Jeff Garzik
@ 2008-05-21 19:01 ` Pavel Machek
0 siblings, 0 replies; 5+ messages in thread
From: Pavel Machek @ 2008-05-21 19:01 UTC (permalink / raw)
To: Jeff Garzik; +Cc: Thomas Gleixner, Andi Kleen, linux-kernel
Hi!
>>>> Still longer term I suppose there's really no way around having accurate
>>>> sleep functions and it's probably better to start testing earlier than later.
>>> No objections, but we should not do that with a stupid msleep
>>> replacement interface; instead we should expose a flexible in kernel
>>> variant of hrtimer_nanosleep() which lets the user utilize
>>> ABS/REL_TIME and the different clocks. A msleep helper can be built on
>>> top of this very easily.
>>
>> While you are at it... it would be cool to have
>>
>> 'mdelay(2500 msec), but it is okay to wait 100msec more' -- type
>> interface, so we could use that for nohz benefit.
>>
>> Currently, mdelay is 'it is okay to wait 10msec more' interface, and
>> it would be nice to have that explicit.
>
> eh, I think you transposed mdelay with msleep?
>
> msleep() is the "it is okay to wait longer than I said" interface, not
> mdelay(). mdelay() has always been non-sleeping and exact (as much as the
> delay loop allows)
Okay, I was a bit confused.
Actually, both can delay for longer... msleep() in case of scheduling
load, mdelay() in case of interrupt load...
But the above was about hrtimer_nano*sleep*(), so that "how much
latency we can tolarate" parameter would still be good.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-05-21 19:00 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-11 11:01 better msleep for drivers Andi Kleen
2008-05-11 13:43 ` Thomas Gleixner
2008-05-21 10:41 ` Pavel Machek
2008-05-21 15:24 ` Jeff Garzik
2008-05-21 19:01 ` Pavel Machek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox