• Yonghong Song's avatar
    tools/bpftool: add perf subcommand · b04df400
    Yonghong Song authored
    The new command "bpftool perf [show | list]" will traverse
    all processes under /proc, and if any fd is associated
    with a perf event, it will print out related perf event
    information. Documentation is also added.
    
    Below is an example to show the results using bcc commands.
    Running the following 4 bcc commands:
      kprobe:     trace.py '__x64_sys_nanosleep'
      kretprobe:  trace.py 'r::__x64_sys_nanosleep'
      tracepoint: trace.py 't:syscalls:sys_enter_nanosleep'
      uprobe:     trace.py 'p:/home/yhs/a.out:main'
    
    The bpftool command line and result:
    
      $ bpftool perf
      pid 21711  fd 5: prog_id 5  kprobe  func __x64_sys_write  offset 0
      pid 21765  fd 5: prog_id 7  kretprobe  func __x64_sys_nanosleep  offset 0
      pid 21767  fd 5: prog_id 8  tracepoint  sys_enter_nanosleep
      pid 21800  fd 5: prog_id 9  uprobe  filename /home/yhs/a.out  offset 1159
    
      $ bpftool -j perf
      [{"pid":21711,"fd":5,"prog_id":5,"fd_type":"kprobe","func":"__x64_sys_write","offset":0}, \
       {"pid":21765,"fd":5,"prog_id":7,"fd_type":"kretprobe","func":"__x64_sys_nanosleep","offset":0}, \
       {"pid":21767,"fd":5,"prog_id":8,"fd_type":"tracepoint","tracepoint":"sys_enter_nanosleep"}, \
       {"pid":21800,"fd":5,"prog_id":9,"fd_type":"uprobe","filename":"/home/yhs/a.out","offset":1159}]
    
      $ bpftool prog
      5: kprobe  name probe___x64_sys  tag e495a0c82f2c7a8d  gpl
    	  loaded_at 2018-05-15T04:46:37-0700  uid 0
    	  xlated 200B  not jited  memlock 4096B  map_ids 4
      7: kprobe  name probe___x64_sys  tag f2fdee479a503abf  gpl
    	  loaded_at 2018-05-15T04:48:32-0700  uid 0
    	  xlated 200B  not jited  memlock 4096B  map_ids 7
      8: tracepoint  name tracepoint__sys  tag 5390badef2395fcf  gpl
    	  loaded_at 2018-05-15T04:48:48-0700  uid 0
    	  xlated 200B  not jited  memlock 4096B  map_ids 8
      9: kprobe  name probe_main_1  tag 0a87bdc2e2953b6d  gpl
    	  loaded_at 2018-05-15T04:49:52-0700  uid 0
    	  xlated 200B  not jited  memlock 4096B  map_ids 9
    
      $ ps ax | grep "python ./trace.py"
      21711 pts/0    T      0:03 python ./trace.py __x64_sys_write
      21765 pts/0    S+     0:00 python ./trace.py r::__x64_sys_nanosleep
      21767 pts/2    S+     0:00 python ./trace.py t:syscalls:sys_enter_nanosleep
      21800 pts/3    S+     0:00 python ./trace.py p:/home/yhs/a.out:main
      22374 pts/1    S+     0:00 grep --color=auto python ./trace.py
    Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: default avatarYonghong Song <yhs@fb.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    b04df400
main.h 4.32 KB