lkml.org 
[lkml]   [2008]   [Jul]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 1/8] 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>
    ---
    kernel/trace/trace_sched_switch.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    Index: linux-tip.git/kernel/trace/trace_sched_switch.c
    ===================================================================
    --- linux-tip.git.orig/kernel/trace/trace_sched_switch.c 2008-06-30 20:56:38.000000000 -0400
    +++ linux-tip.git/kernel/trace/trace_sched_switch.c 2008-06-30 20:57:09.000000000 -0400
    @@ -227,14 +227,14 @@ void tracing_stop_cmdline_record(void)
    static void start_sched_trace(struct trace_array *tr)
    {
    sched_switch_reset(tr);
    - tracer_enabled = 1;
    tracing_start_cmdline_record();
    + tracer_enabled = 1;
    }

    static void stop_sched_trace(struct trace_array *tr)
    {
    - tracing_stop_cmdline_record();
    tracer_enabled = 0;
    + tracing_stop_cmdline_record();
    }

    static void sched_switch_trace_init(struct trace_array *tr)
    --


    \
     
     \ /
      Last update: 2008-07-11 03:09    [W:0.022 / U:0.456 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site