diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-19 21:19:48 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-19 21:19:48 -0500 |
commit | d652e1eb8e7b739fccbfb503a3da3e9f640fbf3d (patch) | |
tree | 55ab77bad0cbb045eac0b84b80d63f88f1ae09e6 /init | |
parent | 8f55cea410dbc56114bb71a3742032070c8108d0 (diff) | |
parent | 77852fea6e2442a0e654a9292060489895de18c7 (diff) |
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull scheduler changes from Ingo Molnar:
"Main changes:
- scheduler side full-dynticks (user-space execution is undisturbed
and receives no timer IRQs) preparation changes that convert the
cputime accounting code to be full-dynticks ready, from Frederic
Weisbecker.
- Initial sched.h split-up changes, by Clark Williams
- select_idle_sibling() performance improvement by Mike Galbraith:
" 1 tbench pair (worst case) in a 10 core + SMT package:
pre 15.22 MB/sec 1 procs
post 252.01 MB/sec 1 procs "
- sched_rr_get_interval() ABI fix/change. We think this detail is not
used by apps (so it's not an ABI in practice), but lets keep it
under observation.
- misc RT scheduling cleanups, optimizations"
* 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (24 commits)
sched/rt: Add <linux/sched/rt.h> header to <linux/init_task.h>
cputime: Remove irqsave from seqlock readers
sched, powerpc: Fix sched.h split-up build failure
cputime: Restore CPU_ACCOUNTING config defaults for PPC64
sched/rt: Move rt specific bits into new header file
sched/rt: Add a tuning knob to allow changing SCHED_RR timeslice
sched: Move sched.h sysctl bits into separate header
sched: Fix signedness bug in yield_to()
sched: Fix select_idle_sibling() bouncing cow syndrome
sched/rt: Further simplify pick_rt_task()
sched/rt: Do not account zero delta_exec in update_curr_rt()
cputime: Safely read cputime of full dynticks CPUs
kvm: Prepare to add generic guest entry/exit callbacks
cputime: Use accessors to read task cputime stats
cputime: Allow dynamic switch between tick/virtual based cputime accounting
cputime: Generic on-demand virtual cputime accounting
cputime: Move default nsecs_to_cputime() to jiffies based cputime file
cputime: Librarize per nsecs resolution cputime definitions
cputime: Avoid multiplication overflow on utime scaling
context_tracking: Export context state for generic vtime
...
Fix up conflict in kernel/context_tracking.c due to comment additions.
Diffstat (limited to 'init')
-rw-r--r-- | init/Kconfig | 25 | ||||
-rw-r--r-- | init/init_task.c | 2 |
2 files changed, 25 insertions, 2 deletions
diff --git a/init/Kconfig b/init/Kconfig index dcb68ac42b78..7000d9657402 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -322,10 +322,13 @@ source "kernel/time/Kconfig" | |||
322 | 322 | ||
323 | menu "CPU/Task time and stats accounting" | 323 | menu "CPU/Task time and stats accounting" |
324 | 324 | ||
325 | config VIRT_CPU_ACCOUNTING | ||
326 | bool | ||
327 | |||
325 | choice | 328 | choice |
326 | prompt "Cputime accounting" | 329 | prompt "Cputime accounting" |
327 | default TICK_CPU_ACCOUNTING if !PPC64 | 330 | default TICK_CPU_ACCOUNTING if !PPC64 |
328 | default VIRT_CPU_ACCOUNTING if PPC64 | 331 | default VIRT_CPU_ACCOUNTING_NATIVE if PPC64 |
329 | 332 | ||
330 | # Kind of a stub config for the pure tick based cputime accounting | 333 | # Kind of a stub config for the pure tick based cputime accounting |
331 | config TICK_CPU_ACCOUNTING | 334 | config TICK_CPU_ACCOUNTING |
@@ -338,9 +341,10 @@ config TICK_CPU_ACCOUNTING | |||
338 | 341 | ||
339 | If unsure, say Y. | 342 | If unsure, say Y. |
340 | 343 | ||
341 | config VIRT_CPU_ACCOUNTING | 344 | config VIRT_CPU_ACCOUNTING_NATIVE |
342 | bool "Deterministic task and CPU time accounting" | 345 | bool "Deterministic task and CPU time accounting" |
343 | depends on HAVE_VIRT_CPU_ACCOUNTING | 346 | depends on HAVE_VIRT_CPU_ACCOUNTING |
347 | select VIRT_CPU_ACCOUNTING | ||
344 | help | 348 | help |
345 | Select this option to enable more accurate task and CPU time | 349 | Select this option to enable more accurate task and CPU time |
346 | accounting. This is done by reading a CPU counter on each | 350 | accounting. This is done by reading a CPU counter on each |
@@ -350,6 +354,23 @@ config VIRT_CPU_ACCOUNTING | |||
350 | this also enables accounting of stolen time on logically-partitioned | 354 | this also enables accounting of stolen time on logically-partitioned |
351 | systems. | 355 | systems. |
352 | 356 | ||
357 | config VIRT_CPU_ACCOUNTING_GEN | ||
358 | bool "Full dynticks CPU time accounting" | ||
359 | depends on HAVE_CONTEXT_TRACKING && 64BIT | ||
360 | select VIRT_CPU_ACCOUNTING | ||
361 | select CONTEXT_TRACKING | ||
362 | help | ||
363 | Select this option to enable task and CPU time accounting on full | ||
364 | dynticks systems. This accounting is implemented by watching every | ||
365 | kernel-user boundaries using the context tracking subsystem. | ||
366 | The accounting is thus performed at the expense of some significant | ||
367 | overhead. | ||
368 | |||
369 | For now this is only useful if you are working on the full | ||
370 | dynticks subsystem development. | ||
371 | |||
372 | If unsure, say N. | ||
373 | |||
353 | config IRQ_TIME_ACCOUNTING | 374 | config IRQ_TIME_ACCOUNTING |
354 | bool "Fine granularity task level IRQ time accounting" | 375 | bool "Fine granularity task level IRQ time accounting" |
355 | depends on HAVE_IRQ_TIME_ACCOUNTING | 376 | depends on HAVE_IRQ_TIME_ACCOUNTING |
diff --git a/init/init_task.c b/init/init_task.c index 8b2f3996b035..ba0a7f362d9e 100644 --- a/init/init_task.c +++ b/init/init_task.c | |||
@@ -2,6 +2,8 @@ | |||
2 | #include <linux/export.h> | 2 | #include <linux/export.h> |
3 | #include <linux/mqueue.h> | 3 | #include <linux/mqueue.h> |
4 | #include <linux/sched.h> | 4 | #include <linux/sched.h> |
5 | #include <linux/sched/sysctl.h> | ||
6 | #include <linux/sched/rt.h> | ||
5 | #include <linux/init.h> | 7 | #include <linux/init.h> |
6 | #include <linux/fs.h> | 8 | #include <linux/fs.h> |
7 | #include <linux/mm.h> | 9 | #include <linux/mm.h> |