• Adrian Hunter's avatar
    perf tools: Add example call-graph script · 4b715d24
    Adrian Hunter authored
    Add a script to produce a call-graph from data exported to a postgresql
    database and derived from a processor trace event like intel_pt or intel_bts.
    
    Refer to comments in the scripts call-graph-from-postgresql.py and
    export-to-postgresql.py for more details on how to set up the environment,
    install the required packages, etc.
    
    Committer note:
    
    From the scripts, for convenience while reading 'git log':
    
      An example of using this script with Intel PT:
    
      $ perf record -e intel_pt//u ls
      $ perf script -s ~/libexec/perf-core/scripts/python/export-to-postgresql.py pt_example branches calls
      2015-05-29 12:49:23.464364 Creating database...
      2015-05-29 12:49:26.281717 Writing to intermediate files...
      2015-05-29 12:49:27.190383 Copying to database...
      2015-05-29 12:49:28.140451 Removing intermediate files...
      2015-05-29 12:49:28.147451 Adding primary keys
      2015-05-29 12:49:28.655683 Adding foreign keys
      2015-05-29 12:49:29.365350 Done
      $ python tools/perf/scripts/python/call-graph-from-postgresql.py pt_example
      # The result is a GUI window with a tree representing a context-sensitive
      # call-graph.  Expanding a couple of levels of the tree and adjusting column
      # widths to suit will display something like:
    
                                             Call Graph: pt_example
      Call Path                        |Object     |Count|Time(ns)|Time(%)|Branch Count|Branch Count(%)
      v- ls
         v- 2638:2638
             v- _start                  ld-2.19.so    1   10074071  100.0        211135          100.0
               |- unknown               unknown       1      13198    0.1             1            0.0
               >- _dl_start             ld-2.19.so    1    1400980   13.9         19637            9.3
               >- _d_linit_internal     ld-2.19.so    1     448152    4.4         11094            5.3
               v-__libc_start_main@plt  ls            1    8211741   81.5        180397           85.4
                  >- _dl_fixup          ld-2.19.so    1       7607    0.1           108            0.1
                  >- __cxa_atexit       libc-2.19.so  1      11737    0.1            10            0.0
                  >- __libc_csu_init    ls            1      10354    0.1            10            0.0
                  |- _setjmp            libc-2.19.so  1          0    0.0             4            0.0
                  v- main               ls            1    8182043   99.6        180254           99.9
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Link: http://lkml.kernel.org/r/1437150840-31811-11-git-send-email-adrian.hunter@intel.com
    [ Added 'python-pyside qt-postgresql' to the yum cmdline installing required packages ]
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    4b715d24
call-graph-from-postgresql.py 10.9 KB