timers: split process wide cpu clocks/timers
authorPeter Zijlstra <a.p.zijlstra@chello.nl>
Thu, 5 Feb 2009 11:24:16 +0000 (12:24 +0100)
committerIngo Molnar <mingo@elte.hu>
Thu, 5 Feb 2009 12:04:33 +0000 (13:04 +0100)
commit4cd4c1b40d40447fb5e7ba80746c6d7ba91d7a53
treeb1e580d5284648d6884e951d995509094a92cca4
parent32bd671d6cbeda60dc73be77fa2b9037d9a9bfa0
timers: split process wide cpu clocks/timers

Change the process wide cpu timers/clocks so that we:

 1) don't mess up the kernel with too many threads,
 2) don't have a per-cpu allocation for each process,
 3) have no impact when not used.

In order to accomplish this we're going to split it into two parts:

 - clocks; which can take all the time they want since they run
           from user context -- ie. sys_clock_gettime(CLOCK_PROCESS_CPUTIME_ID)

 - timers; which need constant time sampling but since they're
           explicity used, the user can pay the overhead.

The clock readout will go back to a full sum of the thread group, while the
timers will run of a global 'clock' that only runs when needed, so only
programs that make use of the facility pay the price.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Reviewed-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/linux/init_task.h
include/linux/sched.h
kernel/itimer.c
kernel/posix-cpu-timers.c
kernel/sched_stats.h