The default resolution of nanosleep(3RT) of 10ms, because it is 
implemented using the clock interrupt. Note the following from the 
manpage ...

    The
    suspension  time  may  be  longer than requested because the
    argument value is rounded up to an integer multiple  of  the
    sleep  resolution  or  because  of  the  scheduling of other
    activity by the system. But, except for the  case  of  being
    interrupted  by  a  signal,  the suspension time will not be
    less than the time specified by rqtp,  as  measured  by  the
    system clock, CLOCK_REALTIME.

How are you achieving an average of 0.5 ms? I'm guessing that you have 
set hires_tick=1 in /etc/system (which changes the clock interrupt from 
10ms to 1ms), and that you are requesting something less than 1ms.

For something less than the clock resolution, check out CLOCK_HIGHRES in 
timer_create(3RT). This uses a CPU cyclic timer instead of the clock 
interrupt. The exact resolution you are able to achieve will depend on 
your hardware and the way you choose to implement the sigevent handler 
(i.e. there will be a point beyond which the implementation overhead 
will be the limiting factor).

Hope this helps,

Phil


Ben Steven wrote:
> Is there any _supported_ way to sleep shorter than 0.5 ms on average?
>
> Using lock-free data structures implies waiting -> the current "nanosleep" 
> functionality does not satisfy our needs because it's increasing the latency 
> :(.
>
> Ben
>  
>  
> This message posted from opensolaris.org
> _______________________________________________
> opensolaris-help mailing list
> opensolaris-help at opensolaris.org
>   

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3383 bytes
Desc: S/MIME Cryptographic Signature
URL: 
<http://mail.opensolaris.org/pipermail/opensolaris-help/attachments/20080115/d9e74ba3/attachment.bin>

Reply via email to