Re: What is the precision of usleep ?

From: george anzinger (george@mvista.com)
Date: Mon Apr 23 2001 - 11:20:29 EST


george anzinger wrote:
>
> Marcus Ramos wrote:
> >
> > Hello,
> >
> > I am using usleep in an application under RH7 kernel 2.4.2. However,
> > when I bring its argument down to 20 miliseconds (20.000 microseconds)
> > or less, this seems to be ignored by the function (or the machine's hw
> > timer), which behaves as if 20 ms where its lowest acceptable value. How
> > can I measure the precision of usleep in my box ? I am currently using
> > an Dell GX110 PIII 866 MHz.
> >
> > Thanks in advance.
> > Marcus.
>
> Well, first, your issue is resolution, not precision. Current
> resolution on most all timers is 1/HZ. So this should get a min.
> nanosleep of 10 ms.
>
> So, could someone explain this line from sys_nanosleep() (
> kernel/timer.c):
>
> expire = timespec_to_jiffies(&t) + (t.tv_sec || t.tv_nsec);
>
> It seems to me this should just be:
>
> expire = timespec_to_jiffies(&t)
>
Oh darn! Must NOT do posts at 4AM!

The standard says nanosleep MUST wait at LEAST the requested time.
Since we are dealing with a 1/HZ time resolution (tick) the actual time
waited MUST fall between 10 and 20 ms. Depending on if your code is
synced to the system clock or not you may see times closer to one end of
this range. If you are not synced to the clock the average wait should
be about 15 ms. (Note, locking to the clock in some way is relatively
hard to get away from. After all this is the same clock that is used
for time slicing.)

George
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Apr 23 2001 - 21:00:46 EST