On Mon, Dec 02, 2002 at 11:49:03AM -0600, Mike Silbersack wrote: > The time select() takes should be directly related to your system's hz > setting. The default for FreeBSD is 100, which means that the interrupt > timer will fire every 10ms. If you want to play with that, edit > /etc/sysctl.conf and set kern.hz="1000", which should give you 1 ms > accuracy.
With the mentioned change of /etc/sysctl.conf to /boot/loader.conf, I am indeed seeing much better times on this 'benchmark'. See attached log. Not only the _select_sleep method benefits from this. What are the reasons *not* to do this? > As to why Linux may appear "better"... I believe that Linux defaults to > hz=100, but that the default switched to hz=1000 sometime in the recent > past. And why don't we do the same? (I suspect this is related to the question above :) > To answer your final question: Sleep accuracy doesn't matter to most > applications, but I'm sure counterexamples could be found. Such as emulators :) Thanks for the responses, --Stijn -- I really hate this damned machine I wish that they would sell it. It never does quite what I want But only what I tell it.
Script started on Wed Dec 4 11:46:30 2002 Testing _select_sleep (x 1000), delay 3 Total time: 4004.915000 ms; unit time: 4.004915 ms; estimated overhead: 1.004915 ms Testing _usleep_sleep (x 1000), delay 3 Total time: 4006.116000 ms; unit time: 4.006116 ms; estimated overhead: 1.006116 ms Testing _nanosleep_sleep (x 1000), delay 3 Total time: 4007.124000 ms; unit time: 4.007124 ms; estimated overhead: 1.007124 ms Testing _select_sleep (x 1000), delay 8 Total time: 9003.380000 ms; unit time: 9.003380 ms; estimated overhead: 1.003380 ms Testing _usleep_sleep (x 1000), delay 8 Total time: 8998.329000 ms; unit time: 8.998329 ms; estimated overhead: 0.998329 ms Testing _nanosleep_sleep (x 1000), delay 8 Total time: 8998.352000 ms; unit time: 8.998352 ms; estimated overhead: 0.998352 ms Testing _select_sleep (x 1000), delay 13 Total time: 14010.526000 ms; unit time: 14.010526 ms; estimated overhead: 1.010526 ms Testing _usleep_sleep (x 1000), delay 13 Total time: 14011.579000 ms; unit time: 14.011579 ms; estimated overhead: 1.011579 ms Testing _nanosleep_sleep (x 1000), delay 13 Total time: 14011.588000 ms; unit time: 14.011588 ms; estimated overhead: 1.011588 ms Testing _select_sleep (x 1000), delay 18 Total time: 18999.703000 ms; unit time: 18.999703 ms; estimated overhead: 0.999703 ms Testing _usleep_sleep (x 1000), delay 18 Total time: 19000.703000 ms; unit time: 19.000703 ms; estimated overhead: 1.000703 ms Testing _nanosleep_sleep (x 1000), delay 18 Total time: 18998.785000 ms; unit time: 18.998785 ms; estimated overhead: 0.998785 ms Testing _select_sleep (x 1000), delay 23 Total time: 23997.911000 ms; unit time: 23.997911 ms; estimated overhead: 0.997911 ms Testing _usleep_sleep (x 1000), delay 23 Total time: 24007.931000 ms; unit time: 24.007931 ms; estimated overhead: 1.007931 ms Testing _nanosleep_sleep (x 1000), delay 23 Total time: 23998.212000 ms; unit time: 23.998212 ms; estimated overhead: 0.998212 ms Testing _select_sleep (x 1000), delay 28 Total time: 29074.207000 ms; unit time: 29.074207 ms; estimated overhead: 1.074207 ms Testing _usleep_sleep (x 1000), delay 28 Total time: 29000.175000 ms; unit time: 29.000175 ms; estimated overhead: 1.000175 ms Testing _nanosleep_sleep (x 1000), delay 28 Total time: 29001.373000 ms; unit time: 29.001373 ms; estimated overhead: 1.001373 ms Script done on Wed Dec 4 11:51:27 2002
msg38468/pgp00000.pgp
Description: PGP signature