aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Weisbecker <fweisbec@gmail.com>2012-09-09 08:56:31 -0400
committerFrederic Weisbecker <fweisbec@gmail.com>2012-09-25 10:01:36 -0400
commitfdf9c356502ae02238efcdf90cefd7b473a63fd4 (patch)
tree8db73d0f973ffb99acce5f76c22562b90f6236db
parent391dc69c6875bcb775cc16458112da93f1d1af00 (diff)
cputime: Make finegrained irqtime accounting generally available
There is no known reason for this option to be unavailable on other archs than x86. They just need to call enable_sched_clock_irqtime() if they have a sufficiently finegrained clock to make it working. Move it to the general option and let the user choose between it and pure tick based or virtual cputime accounting. Note that virtual cputime accounting already performs a finegrained irqtime accounting. CONFIG_IRQ_TIME_ACCOUNTING is a kind of middle ground between tick and virtual based accounting. So CONFIG_IRQ_TIME_ACCOUNTING and CONFIG_VIRT_CPU_ACCOUNTING are mutually exclusive choices. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Tony Luck <tony.luck@intel.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Peter Zijlstra <peterz@infradead.org>
-rw-r--r--arch/Kconfig6
-rw-r--r--arch/x86/Kconfig12
-rw-r--r--init/Kconfig30
3 files changed, 36 insertions, 12 deletions
diff --git a/arch/Kconfig b/arch/Kconfig
index f78de57487ae..101c31a4744b 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -284,4 +284,10 @@ config SECCOMP_FILTER
284config HAVE_VIRT_CPU_ACCOUNTING 284config HAVE_VIRT_CPU_ACCOUNTING
285 bool 285 bool
286 286
287config HAVE_IRQ_TIME_ACCOUNTING
288 bool
289 help
290 Archs need to ensure they use a high enough resolution clock to
291 support irq time accounting and then call enable_sched_clock_irqtime().
292
287source "kernel/gcov/Kconfig" 293source "kernel/gcov/Kconfig"
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 8ec3a1aa4abd..b86833aed83c 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -97,6 +97,7 @@ config X86
97 select KTIME_SCALAR if X86_32 97 select KTIME_SCALAR if X86_32
98 select GENERIC_STRNCPY_FROM_USER 98 select GENERIC_STRNCPY_FROM_USER
99 select GENERIC_STRNLEN_USER 99 select GENERIC_STRNLEN_USER
100 select HAVE_IRQ_TIME_ACCOUNTING
100 101
101config INSTRUCTION_DECODER 102config INSTRUCTION_DECODER
102 def_bool (KPROBES || PERF_EVENTS || UPROBES) 103 def_bool (KPROBES || PERF_EVENTS || UPROBES)
@@ -796,17 +797,6 @@ config SCHED_MC
796 making when dealing with multi-core CPU chips at a cost of slightly 797 making when dealing with multi-core CPU chips at a cost of slightly
797 increased overhead in some places. If unsure say N here. 798 increased overhead in some places. If unsure say N here.
798 799
799config IRQ_TIME_ACCOUNTING
800 bool "Fine granularity task level IRQ time accounting"
801 default n
802 ---help---
803 Select this option to enable fine granularity task irq time
804 accounting. This is done by reading a timestamp on each
805 transitions between softirq and hardirq state, so there can be a
806 small performance impact.
807
808 If in doubt, say N here.
809
810source "kernel/Kconfig.preempt" 800source "kernel/Kconfig.preempt"
811 801
812config X86_UP_APIC 802config X86_UP_APIC
diff --git a/init/Kconfig b/init/Kconfig
index 2c5aa3407d6b..1862c6893078 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -326,10 +326,25 @@ source "kernel/time/Kconfig"
326 326
327menu "CPU/Task time and stats accounting" 327menu "CPU/Task time and stats accounting"
328 328
329choice
330 prompt "Cputime accounting"
331 default TICK_CPU_ACCOUNTING if !PPC64
332 default VIRT_CPU_ACCOUNTING if PPC64
333
334# Kind of a stub config for the pure tick based cputime accounting
335config TICK_CPU_ACCOUNTING
336 bool "Simple tick based cputime accounting"
337 depends on !S390
338 help
339 This is the basic tick based cputime accounting that maintains
340 statistics about user, system and idle time spent on per jiffies
341 granularity.
342
343 If unsure, say Y.
344
329config VIRT_CPU_ACCOUNTING 345config VIRT_CPU_ACCOUNTING
330 bool "Deterministic task and CPU time accounting" 346 bool "Deterministic task and CPU time accounting"
331 depends on HAVE_VIRT_CPU_ACCOUNTING 347 depends on HAVE_VIRT_CPU_ACCOUNTING
332 default y if PPC64
333 help 348 help
334 Select this option to enable more accurate task and CPU time 349 Select this option to enable more accurate task and CPU time
335 accounting. This is done by reading a CPU counter on each 350 accounting. This is done by reading a CPU counter on each
@@ -339,6 +354,19 @@ config VIRT_CPU_ACCOUNTING
339 this also enables accounting of stolen time on logically-partitioned 354 this also enables accounting of stolen time on logically-partitioned
340 systems. 355 systems.
341 356
357config IRQ_TIME_ACCOUNTING
358 bool "Fine granularity task level IRQ time accounting"
359 depends on HAVE_IRQ_TIME_ACCOUNTING
360 help
361 Select this option to enable fine granularity task irq time
362 accounting. This is done by reading a timestamp on each
363 transitions between softirq and hardirq state, so there can be a
364 small performance impact.
365
366 If in doubt, say N here.
367
368endchoice
369
342config BSD_PROCESS_ACCT 370config BSD_PROCESS_ACCT
343 bool "BSD Process Accounting" 371 bool "BSD Process Accounting"
344 help 372 help