• Dmitrii Dolgov's avatar
    perf stat: Separate bperf from bpf_profiler · ecc68ee2
    Dmitrii Dolgov authored
    It seems that perf stat -b <prog id> doesn't produce any results:
    
        $ perf stat -e cycles -b 4 -I 10000 -vvv
        Control descriptor is not initialized
        cycles: 0 0 0
                    time        counts unit      events
    	10.007641640    <not supported>      cycles
    
    Looks like this happens because fentry/fexit progs are getting loaded, but the
    corresponding perf event is not enabled and not added into the events bpf map.
    I think there is some mixing up between two type of bpf support, one for bperf
    and one for bpf_profiler. Both are identified via evsel__is_bpf, based on which
    perf events are enabled, but for the latter (bpf_profiler) a perf event is
    required. Using evsel__is_bperf to check only bperf produces expected results:
    
        $ perf stat -e cycles -b 4 -I 10000 -vvv
        Control descriptor is not initialized
        ------------------------------------------------------------
        perf_event_attr:
          size                             136
          sample_type                      IDENTIFIER
          read_format                      TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING
          disabled                         1
          exclude_guest                    1
        ------------------------------------------------------------
        sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 3
        ------------------------------------------------------------
        [...perf_event_attr for other CPUs...]
        ------------------------------------------------------------
        cycles: 309426 169009 169009
    		time             counts unit events
    	10.010091271             309426      cycles
    
    The final numbers correspond (at least in the level of magnitude) to the
    same metric obtained via bpftool.
    
    Fixes: 112cb561 ("perf stat: Introduce config stat.bpf-counter-events")
    Reviewed-by: default avatarSong Liu <song@kernel.org>
    Signed-off-by: default avatarDmitrii Dolgov <9erthalion6@gmail.com>
    Tested-by: default avatarSong Liu <song@kernel.org>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Song Liu <song@kernel.org>
    Link: https://lore.kernel.org/r/20230412182316.11628-1-9erthalion6@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    ecc68ee2
evsel.h 16.4 KB