aboutsummaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2013-02-05 07:10:33 -0500
committerIngo Molnar <mingo@kernel.org>2013-02-05 07:10:33 -0500
commitb2c77a57e4a0a7877e357dead7ee8acc19944f3e (patch)
treefa192b5a058711299c2a8ce2621df6c9bd8f3a99 /init
parentc3c186403c6abd32e719f005f0af950155a9e54d (diff)
parent6a61671bb2f3a1bd12cd17b8fca811a624782632 (diff)
Merge tag 'full-dynticks-cputime-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks into sched/core
Pull 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: "This implements the cputime accounting on full dynticks CPUs. Typical cputime stats infrastructure relies on the timer tick and its periodic polling on the CPU to account the amount of time spent by the CPUs and the tasks per high level domains such as userspace, kernelspace, guest, ... Now we are preparing to implement full dynticks capability on Linux for Real Time and HPC users who want full CPU isolation. This feature requires a cputime accounting that doesn't depend on the timer tick. To implement it, this new cputime infrastructure plugs into kernel/user/guest boundaries to take snapshots of cputime and flush these to the stats when needed. This performs pretty much like CONFIG_VIRT_CPU_ACCOUNTING except that context location and cputime snaphots are synchronized between write and read side such that the latter can safely retrieve the pending tickless cputime of a task and add it to its latest cputime snapshot to return the correct result to the user." Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'init')
-rw-r--r--init/Kconfig23
1 files changed, 22 insertions, 1 deletions
diff --git a/init/Kconfig b/init/Kconfig
index be8b7f55312d..a05f843e7e52 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -326,6 +326,9 @@ source "kernel/time/Kconfig"
326 326
327menu "CPU/Task time and stats accounting" 327menu "CPU/Task time and stats accounting"
328 328
329config VIRT_CPU_ACCOUNTING
330 bool
331
329choice 332choice
330 prompt "Cputime accounting" 333 prompt "Cputime accounting"
331 default TICK_CPU_ACCOUNTING if !PPC64 334 default TICK_CPU_ACCOUNTING if !PPC64
@@ -342,9 +345,10 @@ config TICK_CPU_ACCOUNTING
342 345
343 If unsure, say Y. 346 If unsure, say Y.
344 347
345config VIRT_CPU_ACCOUNTING 348config VIRT_CPU_ACCOUNTING_NATIVE
346 bool "Deterministic task and CPU time accounting" 349 bool "Deterministic task and CPU time accounting"
347 depends on HAVE_VIRT_CPU_ACCOUNTING 350 depends on HAVE_VIRT_CPU_ACCOUNTING
351 select VIRT_CPU_ACCOUNTING
348 help 352 help
349 Select this option to enable more accurate task and CPU time 353 Select this option to enable more accurate task and CPU time
350 accounting. This is done by reading a CPU counter on each 354 accounting. This is done by reading a CPU counter on each
@@ -354,6 +358,23 @@ config VIRT_CPU_ACCOUNTING
354 this also enables accounting of stolen time on logically-partitioned 358 this also enables accounting of stolen time on logically-partitioned
355 systems. 359 systems.
356 360
361config VIRT_CPU_ACCOUNTING_GEN
362 bool "Full dynticks CPU time accounting"
363 depends on HAVE_CONTEXT_TRACKING && 64BIT
364 select VIRT_CPU_ACCOUNTING
365 select CONTEXT_TRACKING
366 help
367 Select this option to enable task and CPU time accounting on full
368 dynticks systems. This accounting is implemented by watching every
369 kernel-user boundaries using the context tracking subsystem.
370 The accounting is thus performed at the expense of some significant
371 overhead.
372
373 For now this is only useful if you are working on the full
374 dynticks subsystem development.
375
376 If unsure, say N.
377
357config IRQ_TIME_ACCOUNTING 378config IRQ_TIME_ACCOUNTING
358 bool "Fine granularity task level IRQ time accounting" 379 bool "Fine granularity task level IRQ time accounting"
359 depends on HAVE_IRQ_TIME_ACCOUNTING 380 depends on HAVE_IRQ_TIME_ACCOUNTING