On Mon, Sep 10, 2012 at 09:43:13PM +0200, Frederic Weisbecker wrote: > 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 <[email protected]> > Cc: Tony Luck <[email protected]> > Cc: Fenghua Yu <[email protected]> > Cc: Benjamin Herrenschmidt <[email protected]> > Cc: Paul Mackerras <[email protected]> > Cc: Martin Schwidefsky <[email protected]> > Cc: Heiko Carstens <[email protected]> > Cc: Ingo Molnar <[email protected]> > Cc: Thomas Gleixner <[email protected]> > Cc: Peter Zijlstra <[email protected]> > Cc: Russell King <[email protected]> > --- > arch/Kconfig | 6 ++++++ > arch/x86/Kconfig | 12 +----------- > init/Kconfig | 30 +++++++++++++++++++++++++++++- > 3 files changed, 36 insertions(+), 12 deletions(-) > > diff --git a/arch/Kconfig b/arch/Kconfig > index f78de57..101c31a 100644 > --- a/arch/Kconfig > +++ b/arch/Kconfig > @@ -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" > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig > index 8ec3a1a..b86833a 100644 > --- a/arch/x86/Kconfig > +++ b/arch/x86/Kconfig > @@ -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 > diff --git a/init/Kconfig b/init/Kconfig > index 2c5aa34..054114e 100644 > --- a/init/Kconfig > +++ b/init/Kconfig > @@ -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 !S390 && HAVE_IRQ_TIME_ACCOUNTING
As Russell King pointed me, I don't need the !S390 here because it doesn't select HAVE_IRQ_TIME_ACCOUNT anyway. I'll fix this. Just waiting for more reviews before sending a v2. Thanks. > + 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 > -- > 1.7.5.4 > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

