Messages in this thread | | | Date | Tue, 24 Nov 2020 00:47:35 +0100 | From | Jiri Olsa <> | Subject | Re: [RFC 2/2] perf-stat: enable counting events for BPF programs |
| |
On Wed, Nov 18, 2020 at 08:50:46PM -0800, Song Liu wrote: > Introduce perf-stat -b option, which counts events for BPF programs, like: > > [root@localhost ~]# ~/perf stat -e ref-cycles,cycles -b 254 -I 1000 > 1.487903822 115,200 ref-cycles > 1.487903822 86,012 cycles > 2.489147029 80,560 ref-cycles > 2.489147029 73,784 cycles > 3.490341825 60,720 ref-cycles > 3.490341825 37,797 cycles > 4.491540887 37,120 ref-cycles > 4.491540887 31,963 cycles > > The example above counts cycles and ref-cycles of BPF program of id 254. > This is similar to bpftool-prog-profile command, but more flexible. > > perf-stat -b creates per-cpu perf_event and loads fentry/fexit BPF > programs (monitor-progs) to the target BPF program (target-prog). The > monitor-progs read perf_event before and after the target-prog, and > aggregate the difference in a BPF map. Then the user space reads data > from these maps. > > A new struct bpf_counter is introduced to provide common interface that > uses BPF programs/maps to count perf events. > > Signed-off-by: Song Liu <songliubraving@fb.com>
I still need to review this deeply, but so far I'm getting this error:
# ./perf stat -b 40 libbpf: elf: skipping unrecognized data section(9) .eh_frame libbpf: elf: skipping relo section(15) .rel.eh_frame for section(9) .eh_frame libbpf: XXX is not found in vmlinux BTF libbpf: failed to load object 'bpf_prog_profiler_bpf' libbpf: failed to load BPF skeleton 'bpf_prog_profiler_bpf': -2 libbpf: elf: skipping unrecognized data section(9) .eh_frame libbpf: elf: skipping relo section(15) .rel.eh_frame for section(9) .eh_frame libbpf: XXX is not found in vmlinux BTF libbpf: failed to load object 'bpf_prog_profiler_bpf' libbpf: failed to load BPF skeleton 'bpf_prog_profiler_bpf': -2 libbpf: elf: skipping unrecognized data section(9) .eh_frame libbpf: elf: skipping relo section(15) .rel.eh_frame for section(9) .eh_frame libbpf: XXX is not found in vmlinux BTF libbpf: failed to load object 'bpf_prog_profiler_bpf' libbpf: failed to load BPF skeleton 'bpf_prog_profiler_bpf': -2 libbpf: elf: skipping unrecognized data section(9) .eh_frame libbpf: elf: skipping relo section(15) .rel.eh_frame for section(9) .eh_frame libbpf: XXX is not found in vmlinux BTF libbpf: failed to load object 'bpf_prog_profiler_bpf' libbpf: failed to load BPF skeleton 'bpf_prog_profiler_bpf': -2 libbpf: elf: skipping unrecognized data section(9) .eh_frame libbpf: elf: skipping relo section(15) .rel.eh_frame for section(9) .eh_frame libbpf: XXX is not found in vmlinux BTF libbpf: failed to load object 'bpf_prog_profiler_bpf' libbpf: failed to load BPF skeleton 'bpf_prog_profiler_bpf': -2 libbpf: elf: skipping unrecognized data section(9) .eh_frame libbpf: elf: skipping relo section(15) .rel.eh_frame for section(9) .eh_frame libbpf: XXX is not found in vmlinux BTF libbpf: failed to load object 'bpf_prog_profiler_bpf' libbpf: failed to load BPF skeleton 'bpf_prog_profiler_bpf': -2 libbpf: elf: skipping unrecognized data section(9) .eh_frame libbpf: elf: skipping relo section(15) .rel.eh_frame for section(9) .eh_frame libbpf: XXX is not found in vmlinux BTF libbpf: failed to load object 'bpf_prog_profiler_bpf' libbpf: failed to load BPF skeleton 'bpf_prog_profiler_bpf': -2 libbpf: elf: skipping unrecognized data section(9) .eh_frame libbpf: elf: skipping relo section(15) .rel.eh_frame for section(9) .eh_frame libbpf: XXX is not found in vmlinux BTF libbpf: failed to load object 'bpf_prog_profiler_bpf' libbpf: failed to load BPF skeleton 'bpf_prog_profiler_bpf': -2 libbpf: Can't get the 0th fd from program fentry_XXX: only -1 instances libbpf: prog 'fentry_XXX': can't attach before loaded libbpf: failed to auto-attach program 'fentry_XXX': -22
jirka
| |