trace/timerlat: Add a header with PREEMPT_RT additional fields
Some extra flags are printed to the trace header when using the PREEMPT_RT config. The extra flags are: need-resched-lazy, preempt-lazy-depth, and migrate-disable. Without printing these fields, the timerlat specific fields are shifted by three positions, for example: # tracer: timerlat # # _-----=> irqs-off # / _----=> need-resched # | / _---=> hardirq/softirq # || / _--=> preempt-depth # || / # |||| ACTIVATION # TASK-PID CPU# |||| TIMESTAMP ID CONTEXT LATENCY # | | | |||| | | | | <idle>-0 [000] d..h... 3279.798871: #1 context irq timer_latency 830 ns <...>-807 [000] ....... 3279.798881: #1 context thread timer_latency 11301 ns Add a new header for timerlat with the missing fields, to be used when the PREEMPT_RT is enabled. Link: https://lkml.kernel.org/r/babb83529a3211bd0805be0b8c21608230202c55.1626598844.git.bristot@kernel.org Cc: Tom Zanussi <zanussi@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
Родитель
d03721a6e7
Коммит
e1c4ad4a7f
|
@ -354,6 +354,24 @@ static void trace_osnoise_sample(struct osnoise_sample *sample)
|
|||
/*
|
||||
* Print the timerlat header info.
|
||||
*/
|
||||
#ifdef CONFIG_PREEMPT_RT
|
||||
static void print_timerlat_headers(struct seq_file *s)
|
||||
{
|
||||
seq_puts(s, "# _-------=> irqs-off\n");
|
||||
seq_puts(s, "# / _------=> need-resched\n");
|
||||
seq_puts(s, "# | / _-----=> need-resched-lazy\n");
|
||||
seq_puts(s, "# || / _----=> hardirq/softirq\n");
|
||||
seq_puts(s, "# ||| / _---=> preempt-depth\n");
|
||||
seq_puts(s, "# |||| / _--=> preempt-lazy-depth\n");
|
||||
seq_puts(s, "# ||||| / _-=> migrate-disable\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, " | |\n");
|
||||
}
|
||||
#else /* CONFIG_PREEMPT_RT */
|
||||
static void print_timerlat_headers(struct seq_file *s)
|
||||
{
|
||||
seq_puts(s, "# _-----=> irqs-off\n");
|
||||
|
@ -367,6 +385,7 @@ static void print_timerlat_headers(struct seq_file *s)
|
|||
seq_puts(s, "# | | | |||| | | ");
|
||||
seq_puts(s, " | |\n");
|
||||
}
|
||||
#endif /* CONFIG_PREEMPT_RT */
|
||||
|
||||
/*
|
||||
* Record an timerlat_sample into the tracer buffer.
|
||||
|
|
Загрузка…
Ссылка в новой задаче