linux/kernel/time
Thomas Gleixner dce48a84ad sched, timers: move calc_load() to scheduler
Dimitri Sivanich noticed that xtime_lock is held write locked across
calc_load() which iterates over all online CPUs. That can cause long
latencies for xtime_lock readers on large SMP systems. 

The load average calculation is an rough estimate anyway so there is
no real need to protect the readers vs. the update. It's not a problem
when the avenrun array is updated while a reader copies the values.

Instead of iterating over all online CPUs let the scheduler_tick code
update the number of active tasks shortly before the avenrun update
happens. The avenrun update itself is handled by the CPU which calls
do_timer().

[ Impact: reduce xtime_lock write locked section ]

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra <peterz@infradead.org>
2009-05-15 15:32:45 +02:00
..
clockevents.c
clocksource.c clocksource: pass clocksource to read() callback 2009-04-21 13:41:47 -07:00
jiffies.c clocksource: pass clocksource to read() callback 2009-04-21 13:41:47 -07:00
Kconfig
Makefile
ntp.c
tick-broadcast.c
tick-common.c clockevents: prevent endless loop in tick_handle_periodic() 2009-05-02 10:22:27 +02:00
tick-internal.h
tick-oneshot.c
tick-sched.c
timecompare.c
timekeeping.c sched, timers: move calc_load() to scheduler 2009-05-15 15:32:45 +02:00
timer_list.c
timer_stats.c