• N
    perf ftrace: Introduce new 'ftrace' tool · d01f4e8d
    Namhyung Kim 提交于
    The 'perf ftrace' command is a simple wrapper of kernel's ftrace
    functionality.  It only supports single thread tracing currently and
    just reads trace_pipe in text and then write it to stdout.
    
    Committer notes:
    
    Testing it:
    
      # perf ftrace -f function_graph usleep 123456
      <SNIP>
      2)               |  SyS_nanosleep() {
      2)               |    _copy_from_user() {
      <SNIP>
      2)   0.900 us    |      }
      2)   1.354 us    |    }
      2)               |    hrtimer_nanosleep() {
      2)   0.062 us    |      __hrtimer_init();
      2)               |      do_nanosleep() {
      2)               |        hrtimer_start_range_ns() {
      <SNIP>
      2)   5.025 us    |        }
      2)               |        schedule() {
      2)   0.125 us    |          rcu_note_context_switch();
      2)   0.057 us    |          _raw_spin_lock();
      2)               |          deactivate_task() {
      2)   0.369 us    |            update_rq_clock.part.77();
      2)               |            dequeue_task_fair() {
      <SNIP>
      2) + 22.453 us   |            }
      2) + 23.736 us   |          }
      2)               |          pick_next_task_fair() {
      <SNIP>
      2) + 47.167 us   |          }
      2)               |          pick_next_task_idle() {
      <SNIP>
      2)   4.462 us    |          }
      ------------------------------------------
      2)  usleep-20387  =>    <idle>-0
      ------------------------------------------
    
      2)   0.806 us    |  switch_mm_irqs_off();
      ------------------------------------------
      2)    <idle>-0    =>  usleep-20387
      ------------------------------------------
    
      2)   0.151 us    |          finish_task_switch();
      2) @ 123597.2 us |        }
      2)   0.037 us    |        _cond_resched();
      2)               |        hrtimer_try_to_cancel() {
      2)   0.064 us    |          hrtimer_active();
      2)   0.353 us    |        }
      2) @ 123605.3 us |      }
      2) @ 123606.2 us |    }
      2) @ 123608.3 us |  } /* SyS_nanosleep */
      2)               |  __do_page_fault() {
     <SNIP>
    Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
    Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    Tested-by: NMasami Hiramatsu <mhiramat@kernel.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Jeremy Eder <jeder@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>,
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Link: http://lkml.kernel.org/n/tip-r1hgmsj4dxny8arn3o9mw512@git.kernel.org
    [ Various foward port fixes, add man page ]
    Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    d01f4e8d
perf.c 14.8 KB