diff options
author | Steven Rostedt <rostedt@goodmis.org> | 2008-07-10 20:58:09 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-11 09:49:18 -0400 |
commit | 007c05d4d2ce42fabd58cb54ed98e0a1714d9d86 (patch) | |
tree | 94873072975275a1e03ccc1dad27a15c41ee3cc4 /kernel | |
parent | 98a05ed4bd7774f533ab185fe0bf2fdc58292d7c (diff) |
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: Steven 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: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/trace/trace_sched_switch.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/trace/trace_sched_switch.c b/kernel/trace/trace_sched_switch.c index 93a662009151..cb817a209aa0 100644 --- a/kernel/trace/trace_sched_switch.c +++ b/kernel/trace/trace_sched_switch.c | |||
@@ -227,14 +227,14 @@ void tracing_stop_cmdline_record(void) | |||
227 | static void start_sched_trace(struct trace_array *tr) | 227 | static void start_sched_trace(struct trace_array *tr) |
228 | { | 228 | { |
229 | sched_switch_reset(tr); | 229 | sched_switch_reset(tr); |
230 | tracer_enabled = 1; | ||
231 | tracing_start_cmdline_record(); | 230 | tracing_start_cmdline_record(); |
231 | tracer_enabled = 1; | ||
232 | } | 232 | } |
233 | 233 | ||
234 | static void stop_sched_trace(struct trace_array *tr) | 234 | static void stop_sched_trace(struct trace_array *tr) |
235 | { | 235 | { |
236 | tracing_stop_cmdline_record(); | ||
237 | tracer_enabled = 0; | 236 | tracer_enabled = 0; |
237 | tracing_stop_cmdline_record(); | ||
238 | } | 238 | } |
239 | 239 | ||
240 | static void sched_switch_trace_init(struct trace_array *tr) | 240 | static void sched_switch_trace_init(struct trace_array *tr) |