• Alessandro Rubini's avatar
    kernel config: change in timing setup · fe9f6db6
    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's avatarAlessandro Rubini <rubini@gnudd.com>
    fe9f6db6
Name
Last commit
Last update
..
at91boot/v3.3 Loading commit data...
bad-hacks Loading commit data...
barebox/v2014.04 Loading commit data...
buildroot Loading commit data...
g45memtest Loading commit data...
kernel/v2.6.39 Loading commit data...