aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/sched.h
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-04-14 02:50:02 -0400
committerIngo Molnar <mingo@elte.hu>2008-07-31 11:20:29 -0400
commite4e4e534faa3c2be4e165ce414f44b76ada7208c (patch)
tree615280ce53bdba4f99c95616d2a1527c3b863c39 /include/linux/sched.h
parent39675e89fb472c1b9c8e740e00acb1df2bbc6be7 (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.h17
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)
1572static inline void sched_clock_idle_wakeup_event(u64 delta_ns) 1572static inline void sched_clock_idle_wakeup_event(u64 delta_ns)
1573{ 1573{
1574} 1574}
1575 1575#else
1576#ifdef CONFIG_NO_HZ
1577static inline void sched_clock_tick_stop(int cpu)
1578{
1579}
1580
1581static inline void sched_clock_tick_start(int cpu)
1582{
1583}
1584#endif
1585
1586#else /* CONFIG_HAVE_UNSTABLE_SCHED_CLOCK */
1587extern void sched_clock_init(void); 1576extern void sched_clock_init(void);
1588extern u64 sched_clock_cpu(int cpu); 1577extern u64 sched_clock_cpu(int cpu);
1589extern void sched_clock_tick(void); 1578extern void sched_clock_tick(void);
1590extern void sched_clock_idle_sleep_event(void); 1579extern void sched_clock_idle_sleep_event(void);
1591extern void sched_clock_idle_wakeup_event(u64 delta_ns); 1580extern void sched_clock_idle_wakeup_event(u64 delta_ns);
1592#ifdef CONFIG_NO_HZ
1593extern void sched_clock_tick_stop(int cpu);
1594extern 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