• Jin Yao's avatar
    perf stat: Skip duration_time in setup_system_wide · 002a3d69
    Jin Yao authored
    Some metrics (such as DRAM_BW_Use) consists of uncore events and
    duration_time. For uncore events, counter->core.system_wide is true. But
    for duration_time, counter->core.system_wide is false so
    target.system_wide is set to false.
    
    Then 'enable_on_exec' is set in perf_event_attr of uncore event.  Kernel
    will return error when trying to open the uncore event.
    
    This patch skips the duration_time in setup_system_wide then
    target.system_wide will be set to true for the evlist of uncore events +
    duration_time.
    
    Before (tested on skylake desktop):
    
      # perf stat -M DRAM_BW_Use -- sleep 1
      Error:
      The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (arb/event=0x84,umask=0x1/).
      /bin/dmesg | grep -i perf may provide additional information.
    
    After:
    
      # perf stat -M DRAM_BW_Use -- sleep 1
    
       Performance counter stats for 'system wide':
    
                    169      arb/event=0x84,umask=0x1/ #     0.00 DRAM_BW_Use
                 40,427      arb/event=0x81,umask=0x1/
          1,000,902,197 ns   duration_time
    
            1.000902197 seconds time elapsed
    
    Fixes: e3ba76de ("perf tools: Force uncore events to system wide monitoring")
    Signed-off-by: default avatarJin Yao <yao.jin@linux.intel.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jin Yao <yao.jin@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/20200922015004.30114-1-yao.jin@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    002a3d69
builtin-stat.c 63.7 KB