diff options
author | Carsten Emde <Carsten.Emde@osadl.org> | 2009-11-02 00:59:47 +0100 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2009-11-06 12:31:35 +0100 |
commit | d2ac742de047029bb44d0f1b7d4b01c35678a19a (patch) | |
tree | 2dc535b46f2e2bcffc677ec67ec978d74c5bba53 /init | |
parent | 16731e6ff7c29c4f1a3dc7d4f42ce61e8e4a2f6d (diff) | |
download | lwn-d2ac742de047029bb44d0f1b7d4b01c35678a19a.tar.gz lwn-d2ac742de047029bb44d0f1b7d4b01c35678a19a.zip |
ftrace: Add latency histograms of missed timer offsets
A source of system latencies not yet considered in the histograms
of effective latencies are delayed timer interrupts. Such latencies
are mainly due to disabled interrupts. Recording of effective latencies
allows to continuously monitor a system's real-time capabilities
under real-world conditions.
This patch adds latency histograms of missed timer offsets. If the
timer belongs to a sleeper that is about to wakeup a task and the
latency is higher than previous latencies of such timers, some data
of this task are recorded as well.
Adapted and expanded Documentation/trace/histograms.txt.
Signed-off-by: Carsten Emde <C.Emde@osadl.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'init')
-rw-r--r-- | init/main.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/init/main.c b/init/main.c index bdbdaab0469e..ff438b198fe3 100644 --- a/init/main.c +++ b/init/main.c @@ -936,7 +936,15 @@ static int __init kernel_init(void * unused) WARN_ON(irqs_disabled()); #endif -#define DEBUG_COUNT (defined(CONFIG_DEBUG_RT_MUTEXES) + defined(CONFIG_IRQSOFF_TRACER) + defined(CONFIG_PREEMPT_TRACER) + defined(CONFIG_STACK_TRACER) + defined(CONFIG_INTERRUPT_OFF_HIST) + defined(CONFIG_PREEMPT_OFF_HIST) + defined(CONFIG_WAKEUP_LATENCY_HIST) + defined(CONFIG_DEBUG_SLAB) + defined(CONFIG_DEBUG_PAGEALLOC) + defined(CONFIG_LOCKDEP) + (defined(CONFIG_FTRACE) - defined(CONFIG_FTRACE_MCOUNT_RECORD))) +#define DEBUG_COUNT (defined(CONFIG_DEBUG_RT_MUTEXES) + \ + defined(CONFIG_IRQSOFF_TRACER) + defined(CONFIG_PREEMPT_TRACER) + \ + defined(CONFIG_STACK_TRACER) + defined(CONFIG_INTERRUPT_OFF_HIST) + \ + defined(CONFIG_PREEMPT_OFF_HIST) + \ + defined(CONFIG_WAKEUP_LATENCY_HIST) + \ + defined(CONFIG_MISSED_TIMER_OFFSETS_HIST) + \ + defined(CONFIG_DEBUG_SLAB) + defined(CONFIG_DEBUG_PAGEALLOC) + \ + defined(CONFIG_LOCKDEP) + \ + (defined(CONFIG_FTRACE) - defined(CONFIG_FTRACE_MCOUNT_RECORD))) #if DEBUG_COUNT > 0 printk(KERN_ERR "*****************************************************************************\n"); @@ -968,6 +976,9 @@ static int __init kernel_init(void * unused) #ifdef CONFIG_WAKEUP_LATENCY_HIST printk(KERN_ERR "* CONFIG_WAKEUP_LATENCY_HIST *\n"); #endif +#ifdef CONFIG_MISSED_TIMER_OFFSETS_HIST + printk(KERN_ERR "* CONFIG_MISSED_TIMER_OFFSETS_HIST *\n"); +#endif #ifdef CONFIG_DEBUG_SLAB printk(KERN_ERR "* CONFIG_DEBUG_SLAB *\n"); #endif |