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 <[email protected]>

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

Reply via email to