-
Alessandro Rubini authored
This changes the kernel configuration, in two ways: 1- It uses CONFIG_NOHZ, which enables Hight Resolution Timers Unfortunately this has no effect, as the timeevent device for AT91 doesn't support oneshot mode. This means that if you usleep(100) you'll wait 10ms. Thus, we can't remove the busy-looping in libwr/util.c . This is the output of my libstamp sample program: 0.003 -- stamping overhead 12.243 -- usleep 1 usec 10.005 -- usleep 1 usec 9.963 -- usleep 2 usec 10.037 -- usleep 5 usec 10.083 -- usleep 10 usec 9.905 -- usleep 100 usec 10.394 -- usleep 1000 usec 19.775 -- usleep 10000 usec 109.925 -- usleep 100000 usec 2- It moves CONFIG_HZ from 100 to 1000. Thus, we have 1000 timer interrupts per second. This means, in practice, that if you usleep(100) you wait 1ms. This costs around 2% of CPU power (measured by running a cpu-busy program before and after the change, in both cases after killing all processes), but makes stuff millisecond-grained instead of 10ms-grained. This is a benefit for the PTP daemon and everything uses timeouts in system calls. This is libstamp again: 0.003 -- stamping overhead 0.662 -- usleep 1 usec 0.869 -- usleep 1 usec 0.976 -- usleep 2 usec 0.951 -- usleep 5 usec 0.993 -- usleep 10 usec 0.999 -- usleep 100 usec 1.999 -- usleep 1000 usec 11.006 -- usleep 10000 usec 101.043 -- usleep 100000 usec Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
fe9f6db6