• Wang Nan's avatar
    perf script: Add support for PERF_TYPE_BREAKPOINT · 27cfef00
    Wang Nan authored
    Useful for getting stack traces for hardware breakpoint events.
    
    Test result:
    
    Before this patch:
     # ~/perf record -g -e mem:0x600980 ./sample
     [ perf record: Woken up 1 times to write data ]
     [ perf record: Captured and wrote 0.011 MB perf.data (12 samples) ]
    
     # ~/perf script
    
     # ~/perf script -F comm,tid,pid,time,event,ip,sym,dso
     sample 22520/22520 97457.836294: mem:0x600980:
              5a4ad8 __clear_user (/lib/modules/4.3.0-rc4+/build/vmlinux)
     ...
              3f41ba sys_execve (/lib/modules/4.3.0-rc4+/build/vmlinux)
              979395 return_from_execve (/lib/modules/4.3.0-rc4+/build/vmlinux)
        7f1b59719cf7 [unknown] ([unknown])
    
     sample 22520/22520 97457.836648: mem:0x600980:
                 532 main (/home/w00229757/DataBreakpoints/sample)
               21bd5 __libc_start_main (/tmp/oxygen_root-root/lib64/libc-2.18.so)
     ...
    
    After this patch:
     # ~/perf script
     sample 22520 97457.836294: mem:0x600980:
                       5a4ad8 __clear_user (/lib/modules/4.3.0-rc4+/build/vmlinux)
     ...
                       3f41ba sys_execve (/lib/modules/4.3.0-rc4+/build/vmlinux)
                       979395 return_from_execve (/lib/modules/4.3.0-rc4+/build/vmlinux)
                 7f1b59719cf7 [unknown] ([unknown])
    
     sample 22520 97457.836648: mem:0x600980:
                          532 main (/home/w00229757/DataBreakpoints/sample)
                        21bd5 __libc_start_main (/tmp/oxygen_root-root/lib64/libc-2.18.so)
    
    Committer note:
    
    So, further testing, lets do it for a kernel global variable,
    tcp_hashinfo:
    
      # grep -w tcp_hashinfo /proc/kallsyms
      ffffffff8202fc00 B tcp_hashinfo
      #
    
    Note: allow specifying mem:tcp_hashinfo:
    
      # perf record -g -e mem:0xffffffff81c65ac0 -a
      ^C[ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.790 MB perf.data ]
      #
      # perf evlist
      mem:0xffffffff8202fc00
      # perf evlist -v
      mem:0xffffffff8202fc00: type: 5, size: 112, { sample_period, sample_freq }: 1, sample_type: IP|TID|TIME|CALLCHAIN|CPU, disabled: 1, inherit: 1, mmap: 1, comm: 1, task: 1, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1, bp_type: 3, { bp_addr, config1 }: 0xffffffff8202fc00, { bp_len, config2 }: 0x4
      #
    
    Then, after this patch:
    
      # perf script
      swapper 0 [000] 171036.986988: mem:0xffffffff8202fc00:
        8a0fb5 __inet_lookup_established (/lib/modules/4.3.0+/build/vmlinux)
        8bc09d tcp_v4_early_demux (/lib/modules/4.3.0+/build/vmlinux)
        896def ip_rcv_finish (/lib/modules/4.3.0+/build/vmlinux)
        8976c2 ip_rcv (/lib/modules/4.3.0+/build/vmlinux)
        855eba __netif_receive_skb_core (/lib/modules/4.3.0+/build/vmlinux)
        8565d8 __netif_receive_skb (/lib/modules/4.3.0+/build/vmlinux)
        8572a8 process_backlog (/lib/modules/4.3.0+/build/vmlinux)
        856b11 net_rx_action (/lib/modules/4.3.0+/build/vmlinux)
        2a284b __do_softirq (/lib/modules/4.3.0+/build/vmlinux)
        2a2ba3 irq_exit (/lib/modules/4.3.0+/build/vmlinux)
        96b7a4 do_IRQ (/lib/modules/4.3.0+/build/vmlinux)
        969807 ret_from_intr (/lib/modules/4.3.0+/build/vmlinux)
        804c27 cpuidle_enter (/lib/modules/4.3.0+/build/vmlinux)
        2ded22 call_cpuidle (/lib/modules/4.3.0+/build/vmlinux)
        2defb6 cpu_startup_entry (/lib/modules/4.3.0+/build/vmlinux)
        95d5bc rest_init (/lib/modules/4.3.0+/build/vmlinux)
       1163ffa start_kernel ([kernel.vmlinux].init.text)
       11634d7 x86_64_start_reservations ([kernel.vmlinux].init.text)
       1163623 x86_64_start_kernel ([kernel.vmlinux].init.text)
    Signed-off-by: default avatarWang Nan <wangnan0@huawei.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/1449541544-67621-16-git-send-email-wangnan0@huawei.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    27cfef00
builtin-script.c 51.1 KB