trace: osnoise and timerlat fixes
Subsystems (4)
cover trace: osnoise and timerlat fixes
Hi Steven,
This is a series of minor fixes to the timerlat and osnoise tracers.
It includes a review of the timerlat tracer documentation, the addition of the migrate disabled field to the timerlat and osnoise headers, and a fix of a typo in the ifdef config comment in arch/x86/kernel/trace.c.
No functional changes.
Daniel Bristot de Oliveira (4):
trace/osnoise: Fix an ifdef comment
tracing/doc: Fix typos on the timerlat tracer documentation trace/osnoise: Add migrate-disabled field to the osnoise header trace/timerlat: Add migrate-disabled field to the timerlat header
Documentation/trace/timerlat-tracer.rst | 24 ++++++++++++------------ arch/x86/kernel/trace.c | 2 +- kernel/trace/trace_osnoise.c | 25 +++++++++++++------------ 3 files changed, 26 insertions(+), 25 deletions(-)
Signature · 1 line
2.31.1
PATCH 1/4 trace/osnoise: Fix an ifdef comment
s/CONFIG_OSNOISE_TRAECR/CONFIG_OSNOISE_TRACER/
No functional changes.
--- arch/x86/kernel/trace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/x86/kernel/trace.c +1 -1
@@ -231,4 +231,4 @@ void osnoise_arch_unregister(void)unregister_trace_local_timer_exit (trace_intel_irq_exit,"local_timer" ); unregister_trace_local_timer_entry(trace_intel_irq_entry, NULL); } -#endif /* CONFIG_OSNOISE_TRAECR && CONFIG_X86_LOCAL_APIC */ +#endif /* CONFIG_OSNOISE_TRACER && CONFIG_X86_LOCAL_APIC */
Signature · 1 line
2.31.1
PATCH 2/4 tracing/doc: Fix typos on the timerlat tracer documentation
In reply to Daniel Bristot de OliveiraFixes a series of typos in the timerlat doc.
--- Documentation/trace/timerlat-tracer.rst | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-)
Documentation/trace/timerlat-tracer.rst +12 -12
@@ -3,7 +3,7 @@ Timerlat tracer ############### The timerlat tracer aims to help the preemptive kernel developers to -find souces of wakeup latencies of real-time threads. Like cyclictest, +find sources of wakeup latencies of real-time threads. Like cyclictest, the tracer sets a periodic timer that wakes up a thread. The thread then computes a *wakeup latency* value as the difference between the *current time* and the *absolute time* that the timer was set to expire. The main
@@ -50,14 +50,14 @@ The second is the *timer latency* observed by the thread. The ACTIVATION ID field serves to relate the *irq* execution to its respective *thread* execution. -The *irq*/*thread* splitting is important to clarify at which context +The *irq*/*thread* splitting is important to clarify in which context the unexpected high value is coming from. The *irq* context can be -delayed by hardware related actions, such as SMIs, NMIs, IRQs -or by a thread masking interrupts. Once the timer happens, the delay +delayed by hardware-related actions, such as SMIs, NMIs, IRQs, +or by thread masking interrupts. Once the timer happens, the delay can also be influenced by blocking caused by threads. For example, by -postponing the scheduler execution via preempt_disable(), by the -scheduler execution, or by masking interrupts. Threads can -also be delayed by the interference from other threads and IRQs. +postponing the scheduler execution via preempt_disable(), scheduler +execution, or masking interrupts. Threads can also be delayed by the +interference from other threads and IRQs. Tracer options ---------------------
@@ -68,14 +68,14 @@ directory. The timerlat configs are: - cpus: CPUs at which a timerlat thread will execute. - timerlat_period_us: the period of the timerlat thread. - - osnoise/stop_tracing_us: stop the system tracing if a + - stop_tracing_us: stop the system tracing if a timer latency at the *irq* context higher than the configured value happens. Writing 0 disables this option. - stop_tracing_total_us: stop the system tracing if a - timer latency at the *thread* context higher than the configured + timer latency at the *thread* context is higher than the configured value happens. Writing 0 disables this option. - - print_stack: save the stack of the IRQ ocurrence, and print - it afte the *thread context* event". + - print_stack: save the stack of the IRQ occurrence, and print + it after the *thread context* event". timerlat and osnoise ----------------------------
@@ -95,7 +95,7 @@ For example:: timerlat/5-1035 [005] ....... 548.771104: #402268 context thread timer_latency 39960 ns In this case, the root cause of the timer latency does not point to a -single cause, but to multiple ones. Firstly, the timer IRQ was delayed +single cause but to multiple ones. Firstly, the timer IRQ was delayed for 13 us, which may point to a long IRQ disabled section (see IRQ stacktrace section). Then the timer interrupt that wakes up the timerlat thread took 7597 ns, and the qxl:21 device IRQ took 7139 ns. Finally,
Signature · 1 line
2.31.1
PATCH 3/4 trace/osnoise: Add migrate-disabled field to the osnoise header
In reply to Daniel Bristot de OliveiraSince "54357f0c9149 tracing: Add migrate-disabled counter to tracing output," the migrate disabled field is also printed in the !PREEMPR_RT kernel config. While this information was added to the vast majority of tracers, osnoise and timerlat were not updated (because they are new tracers).
Fix osnoise header by adding the information about migrate disabled.
--- kernel/trace/trace_osnoise.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
kernel/trace/trace_osnoise.c +7 -7
@@ -294,19 +294,19 @@ static void print_osnoise_headers(struct seq_file *s)seq_puts (s,"# _-----=> irqs-off\n" );seq_puts (s,"# / _----=> need-resched\n" );seq_puts (s,"# | / _---=> hardirq/softirq\n" ); -seq_puts (s,"# || / _--=> preempt-depth " ); -seq_puts (s," MAX\n" ); - -seq_puts (s,"# || / " ); +seq_puts (s,"# || / _--=> preempt-depth\n" ); +seq_puts (s,"# ||| / _-=> migrate-disable " ); +seq_puts (s," MAX\n" ); +seq_puts (s,"# |||| / delay " );seq_puts (s," SINGLE Interference counters:\n" ); -seq_puts (s,"# |||| RUNTIME " ); +seq_puts (s,"# ||||| RUNTIME " );seq_puts (s," NOISE %% OF CPU NOISE +-----------------------------+\n" ); -seq_puts (s,"# TASK-PID CPU# |||| TIMESTAMP IN US " ); +seq_puts (s,"# TASK-PID CPU# ||||| TIMESTAMP IN US " );seq_puts (s," IN US AVAILABLE IN US HW NMI IRQ SIRQ THREAD\n" ); -seq_puts (s,"# | | | |||| | | " ); +seq_puts (s,"# | | | ||||| | | " ); seq_puts(s, " | | | | | | | |\n"); }#endif /* CONFIG_PREEMPT_RT */
Signature · 1 line
2.31.1
PATCH 4/4 trace/timerlat: Add migrate-disabled field to the timerlat header
In reply to Daniel Bristot de OliveiraSince "54357f0c9149 tracing: Add migrate-disabled counter to tracing output," the migrate disabled field is also printed in the !PREEMPR_RT kernel config. While this information was added to the vast majority of tracers, osnoise and timerlat were not updated (because they are new tracers).
Fix timerlat header by adding the information about migrate disabled.
--- kernel/trace/trace_osnoise.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)
kernel/trace/trace_osnoise.c +6 -5
@@ -378,11 +378,12 @@ static void print_timerlat_headers(struct seq_file *s)seq_puts (s,"# / _----=> need-resched\n" );seq_puts (s,"# | / _---=> hardirq/softirq\n" );seq_puts (s,"# || / _--=> preempt-depth\n" ); -seq_puts (s,"# || /\n" ); -seq_puts (s,"# |||| ACTIVATION\n" ); -seq_puts (s,"# TASK-PID CPU# |||| TIMESTAMP ID " ); -seq_puts (s," CONTEXT LATENCY\n" ); -seq_puts (s,"# | | | |||| | | " ); +seq_puts (s,"# ||| / _-=> migrate-disable\n" ); +seq_puts (s,"# |||| / delay\n" ); +seq_puts (s,"# ||||| ACTIVATION\n" ); +seq_puts (s,"# TASK-PID CPU# ||||| TIMESTAMP ID " ); +seq_puts (s," CONTEXT LATENCY\n" ); +seq_puts (s,"# | | | ||||| | | " ); seq_puts(s, " | |\n"); }#endif /* CONFIG_PREEMPT_RT */
Signature · 1 line
2.31.1