diff options
author | Frederic Weisbecker <fweisbec@gmail.com> | 2012-12-18 11:32:19 -0500 |
---|---|---|
committer | Frederic Weisbecker <fweisbec@gmail.com> | 2013-03-21 10:38:33 -0400 |
commit | a831881be220358a1d28c5d95d69449fb6d623ca (patch) | |
tree | 769ab069e2837a9bd3613046110468cd87c8c3fa /include/linux/tick.h | |
parent | a8d7ad52a7befbde896276d05c75c90fed48b5bf (diff) |
nohz: Basic full dynticks interface
For extreme usecases such as Real Time or HPC, having
the ability to shutdown the tick when a single task runs
on a CPU is a desired feature:
* Reducing the amount of interrupts improves throughput
for CPU-bound tasks. The CPU is less distracted from its
real job, from an execution time and from the cache point
of views.
* This also improve latency response as we have less critical
sections.
Start with introducing a very simple interface to define
full dynticks CPU: use a boot time option defined cpumask
through the "nohz_extended=" kernel parameter. CPUs that
are part of this range will have their tick shutdown
whenever possible: provided they run a single task and
they don't do kernel activity that require the periodic
tick. These details will be later documented in
Documentation/*
An online CPU must be kept outside this range to handle the
timekeeping.
Suggested-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Chris Metcalf <cmetcalf@tilera.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Geoff Levand <geoff@infradead.org>
Cc: Gilad Ben Yossef <gilad@benyossef.com>
Cc: Hakan Akkan <hakanakkan@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Kevin Hilman <khilman@linaro.org>
Cc: Li Zhong <zhong@linux.vnet.ibm.com>
Cc: Namhyung Kim <namhyung.kim@lge.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/linux/tick.h')
-rw-r--r-- | include/linux/tick.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/tick.h b/include/linux/tick.h index 553272e6af55..44bfa8aa439f 100644 --- a/include/linux/tick.h +++ b/include/linux/tick.h | |||
@@ -157,6 +157,13 @@ static inline u64 get_cpu_idle_time_us(int cpu, u64 *unused) { return -1; } | |||
157 | static inline u64 get_cpu_iowait_time_us(int cpu, u64 *unused) { return -1; } | 157 | static inline u64 get_cpu_iowait_time_us(int cpu, u64 *unused) { return -1; } |
158 | # endif /* !NO_HZ */ | 158 | # endif /* !NO_HZ */ |
159 | 159 | ||
160 | #ifdef CONFIG_NO_HZ_EXTENDED | ||
161 | extern int tick_nohz_extended_cpu(int cpu); | ||
162 | #else | ||
163 | static inline int tick_nohz_extended_cpu(int cpu) { return 0; } | ||
164 | #endif | ||
165 | |||
166 | |||
160 | # ifdef CONFIG_CPU_IDLE_GOV_MENU | 167 | # ifdef CONFIG_CPU_IDLE_GOV_MENU |
161 | extern void menu_hrtimer_cancel(void); | 168 | extern void menu_hrtimer_cancel(void); |
162 | # else | 169 | # else |