Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fdf9c356 authored by Frederic Weisbecker's avatar Frederic Weisbecker
Browse files

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: default avatarFrederic 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>
parent 391dc69c
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -284,4 +284,10 @@ config SECCOMP_FILTER
config HAVE_VIRT_CPU_ACCOUNTING
	bool

config HAVE_IRQ_TIME_ACCOUNTING
	bool
	help
	  Archs need to ensure they use a high enough resolution clock to
	  support irq time accounting and then call enable_sched_clock_irqtime().

source "kernel/gcov/Kconfig"
+1 −11
Original line number Diff line number Diff line
@@ -97,6 +97,7 @@ config X86
	select KTIME_SCALAR if X86_32
	select GENERIC_STRNCPY_FROM_USER
	select GENERIC_STRNLEN_USER
	select HAVE_IRQ_TIME_ACCOUNTING

config INSTRUCTION_DECODER
	def_bool (KPROBES || PERF_EVENTS || UPROBES)
@@ -796,17 +797,6 @@ config SCHED_MC
	  making when dealing with multi-core CPU chips at a cost of slightly
	  increased overhead in some places. If unsure say N here.

config IRQ_TIME_ACCOUNTING
	bool "Fine granularity task level IRQ time accounting"
	default n
	---help---
	  Select this option to enable fine granularity task irq time
	  accounting. This is done by reading a timestamp on each
	  transitions between softirq and hardirq state, so there can be a
	  small performance impact.

	  If in doubt, say N here.

source "kernel/Kconfig.preempt"

config X86_UP_APIC
+29 −1
Original line number Diff line number Diff line
@@ -326,10 +326,25 @@ source "kernel/time/Kconfig"

menu "CPU/Task time and stats accounting"

choice
	prompt "Cputime accounting"
	default TICK_CPU_ACCOUNTING if !PPC64
	default VIRT_CPU_ACCOUNTING if PPC64

# Kind of a stub config for the pure tick based cputime accounting
config TICK_CPU_ACCOUNTING
	bool "Simple tick based cputime accounting"
	depends on !S390
	help
	  This is the basic tick based cputime accounting that maintains
	  statistics about user, system and idle time spent on per jiffies
	  granularity.

	  If unsure, say Y.

config VIRT_CPU_ACCOUNTING
	bool "Deterministic task and CPU time accounting"
	depends on HAVE_VIRT_CPU_ACCOUNTING
	default y if PPC64
	help
	  Select this option to enable more accurate task and CPU time
	  accounting.  This is done by reading a CPU counter on each
@@ -339,6 +354,19 @@ config VIRT_CPU_ACCOUNTING
	  this also enables accounting of stolen time on logically-partitioned
	  systems.

config IRQ_TIME_ACCOUNTING
	bool "Fine granularity task level IRQ time accounting"
	depends on HAVE_IRQ_TIME_ACCOUNTING
	help
	  Select this option to enable fine granularity task irq time
	  accounting. This is done by reading a timestamp on each
	  transitions between softirq and hardirq state, so there can be a
	  small performance impact.

	  If in doubt, say N here.

endchoice

config BSD_PROCESS_ACCT
	bool "BSD Process Accounting"
	help