diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-04-14 02:50:02 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-31 11:20:29 -0400 |
commit | e4e4e534faa3c2be4e165ce414f44b76ada7208c (patch) | |
tree | 615280ce53bdba4f99c95616d2a1527c3b863c39 /include/linux/sched.h | |
parent | 39675e89fb472c1b9c8e740e00acb1df2bbc6be7 (diff) |
sched clock: revert various sched_clock() changes
Found an interactivity problem on a quad core test-system - simple
CPU loops would occasionally delay the system un an unacceptable way.
After much debugging with Peter Zijlstra it turned out that the problem
is caused by the string of sched_clock() changes - they caused the CPU
clock to jump backwards a bit - which confuses the scheduler arithmetics.
(which is unsigned for performance reasons)
So revert:
# c300ba2: sched_clock: and multiplier for TSC to gtod drift
# c0c8773: sched_clock: only update deltas with local reads.
# af52a90: sched_clock: stop maximum check on NO HZ
# f7cce27: sched_clock: widen the max and min time
This solves the interactivity problems.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Mike Galbraith <efault@gmx.de>
Diffstat (limited to 'include/linux/sched.h')
-rw-r--r-- | include/linux/sched.h | 17 |
1 files changed, 1 insertions, 16 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index 5270d449ff9d..ea436bc1a0e2 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -1572,28 +1572,13 @@ static inline void sched_clock_idle_sleep_event(void) | |||
1572 | static inline void sched_clock_idle_wakeup_event(u64 delta_ns) | 1572 | static inline void sched_clock_idle_wakeup_event(u64 delta_ns) |
1573 | { | 1573 | { |
1574 | } | 1574 | } |
1575 | 1575 | #else | |
1576 | #ifdef CONFIG_NO_HZ | ||
1577 | static inline void sched_clock_tick_stop(int cpu) | ||
1578 | { | ||
1579 | } | ||
1580 | |||
1581 | static inline void sched_clock_tick_start(int cpu) | ||
1582 | { | ||
1583 | } | ||
1584 | #endif | ||
1585 | |||
1586 | #else /* CONFIG_HAVE_UNSTABLE_SCHED_CLOCK */ | ||
1587 | extern void sched_clock_init(void); | 1576 | extern void sched_clock_init(void); |
1588 | extern u64 sched_clock_cpu(int cpu); | 1577 | extern u64 sched_clock_cpu(int cpu); |
1589 | extern void sched_clock_tick(void); | 1578 | extern void sched_clock_tick(void); |
1590 | extern void sched_clock_idle_sleep_event(void); | 1579 | extern void sched_clock_idle_sleep_event(void); |
1591 | extern void sched_clock_idle_wakeup_event(u64 delta_ns); | 1580 | extern void sched_clock_idle_wakeup_event(u64 delta_ns); |
1592 | #ifdef CONFIG_NO_HZ | ||
1593 | extern void sched_clock_tick_stop(int cpu); | ||
1594 | extern void sched_clock_tick_start(int cpu); | ||
1595 | #endif | 1581 | #endif |
1596 | #endif /* CONFIG_HAVE_UNSTABLE_SCHED_CLOCK */ | ||
1597 | 1582 | ||
1598 | /* | 1583 | /* |
1599 | * For kernel-internal use: high-speed (but slightly incorrect) per-cpu | 1584 | * For kernel-internal use: high-speed (but slightly incorrect) per-cpu |