• Eric Dumazet's avatar
    [PATCH] Optimize calc_load() · cd7175ed
    Eric Dumazet authored
    calc_load() is called by timer interrupt to update avenrun[].  It currently
    calls nr_active() at each timer tick (HZ per second), while the update of
    avenrun[] is done only once every 5 seconds.  (LOAD_FREQ=5 Hz)
    
    nr_active() is quite expensive on SMP machines, since it has to sum up
    nr_running and nr_uninterruptible of all online CPUS, bringing foreign
    dirty cache lines.
    
    This patch is an optimization of calc_load() so that nr_active() is called
    only if we need it.
    
    The use of unlikely() is welcome since the condition is true only once every
    5*HZ time.
    Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Acked-by: default avatar"Siddha, Suresh B" <suresh.b.siddha@intel.com>
    Cc: Nick Piggin <nickpiggin@yahoo.com.au>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    cd7175ed
timer.c 47.9 KB