Commit 007c05d4 authored by Steven Rostedt's avatar Steven Rostedt Committed by Ingo Molnar

ftrace: move sched_switch enable after markers

We have two markers now that are enabled on sched_switch. One that records
the context switching and the other that records task wake ups. Currently
we enable the tracing first and then set the markers. This causes some
confusing traces:

# tracer: sched_switch
#
#           TASK-PID   CPU#    TIMESTAMP  FUNCTION
#              | |      |          |         |
       trace-cmd-3973  [00]   115.834817:   3973:120:R   +     3:  0:S
       trace-cmd-3973  [01]   115.834910:   3973:120:R   +     6:  0:S
       trace-cmd-3973  [02]   115.834910:   3973:120:R   +     9:  0:S
       trace-cmd-3973  [03]   115.834910:   3973:120:R   +    12:  0:S
       trace-cmd-3973  [02]   115.834910:   3973:120:R   +     9:  0:S
          <idle>-0     [02]   115.834910:      0:140:R ==>  3973:120:R

Here we see that trace-cmd with PID 3973 wakes up task 9 but the next line
shows the idle task doing a context switch to task 3973.

Enabling the tracing to _after_ the markers are set creates a much saner
output:

# tracer: sched_switch
#
#           TASK-PID   CPU#    TIMESTAMP  FUNCTION
#              | |      |          |         |
          <idle>-0     [02]  7922.634225:      0:140:R ==>  4790:120:R
       trace-cmd-4789  [03]  7922.634225:      0:140:R   +  4790:120:R
Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
Cc: Steven Rostedt <srostedt@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 98a05ed4
...@@ -227,14 +227,14 @@ void tracing_stop_cmdline_record(void) ...@@ -227,14 +227,14 @@ void tracing_stop_cmdline_record(void)
static void start_sched_trace(struct trace_array *tr) static void start_sched_trace(struct trace_array *tr)
{ {
sched_switch_reset(tr); sched_switch_reset(tr);
tracer_enabled = 1;
tracing_start_cmdline_record(); tracing_start_cmdline_record();
tracer_enabled = 1;
} }
static void stop_sched_trace(struct trace_array *tr) static void stop_sched_trace(struct trace_array *tr)
{ {
tracing_stop_cmdline_record();
tracer_enabled = 0; tracer_enabled = 0;
tracing_stop_cmdline_record();
} }
static void sched_switch_trace_init(struct trace_array *tr) static void sched_switch_trace_init(struct trace_array *tr)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment