• Jin Yao's avatar
    perf tools: Enable on a list of CPUs for hybrid · 1d3351e6
    Jin Yao authored
    The 'perf record' and 'perf stat' commands have supported the option
    '-C/--cpus' to count or collect only on the list of CPUs provided. This
    option needs to be supported for hybrid as well.
    
    For hybrid support, it needs to check that the cpu list are available
    on hybrid PMU. One example for AlderLake, cpu0-7 is 'cpu_core', cpu8-11
    is 'cpu_atom'.
    
    Before:
    
      # perf stat -e cpu_core/cycles/ -C11 -- sleep 1
    
       Performance counter stats for 'CPU(s) 11':
    
         <not supported>      cpu_core/cycles/
    
             1.006179431 seconds time elapsed
    
    The 'perf stat' command silently returned "<not supported>" without any
    helpful information. It should error out pointing out that that cpu11
    was not 'cpu_core'.
    
    After:
    
      # perf stat -e cpu_core/cycles/ -C11 -- sleep 1
      WARNING: 11 isn't a 'cpu_core', please use a CPU list in the 'cpu_core' range (0-7)
      failed to use cpu list 11
    
    We also need to support the events without pmu prefix specified.
    
      # perf stat -e cycles -C11 -- sleep 1
      WARNING: 11 isn't a 'cpu_core', please use a CPU list in the 'cpu_core' range (0-7)
    
       Performance counter stats for 'CPU(s) 11':
    
               1,067,373      cpu_atom/cycles/
    
             1.005544738 seconds time elapsed
    
    The perf tool creates two cycles events automatically, cpu_core/cycles/ and
    cpu_atom/cycles/. It checks that cpu11 is not 'cpu_core', then shows a warning
    for cpu_core/cycles/ and only count the cpu_atom/cycles/.
    
    If part of cpus are 'cpu_core' and part of cpus are 'cpu_atom', for example,
    
      # perf stat -e cycles -C0,11 -- sleep 1
      WARNING: use 0 in 'cpu_core' for 'cycles', skip other cpus in list.
      WARNING: use 11 in 'cpu_atom' for 'cycles', skip other cpus in list.
    
       Performance counter stats for 'CPU(s) 0,11':
    
               1,914,704      cpu_core/cycles/
               2,036,983      cpu_atom/cycles/
    
             1.005815641 seconds time elapsed
    
    It now automatically selects cpu0 for cpu_core/cycles/, selects cpu11 for
    cpu_atom/cycles/, and output with some warnings.
    
    Some more complex examples,
    
      # perf stat -e cycles,instructions -C0,11 -- sleep 1
      WARNING: use 0 in 'cpu_core' for 'cycles', skip other cpus in list.
      WARNING: use 11 in 'cpu_atom' for 'cycles', skip other cpus in list.
      WARNING: use 0 in 'cpu_core' for 'instructions', skip other cpus in list.
      WARNING: use 11 in 'cpu_atom' for 'instructions', skip other cpus in list.
    
       Performance counter stats for 'CPU(s) 0,11':
    
               2,780,387      cpu_core/cycles/
               1,583,432      cpu_atom/cycles/
               3,957,277      cpu_core/instructions/
               1,167,089      cpu_atom/instructions/
    
             1.006005124 seconds time elapsed
    
      # perf stat -e cycles,cpu_atom/instructions/ -C0,11 -- sleep 1
      WARNING: use 0 in 'cpu_core' for 'cycles', skip other cpus in list.
      WARNING: use 11 in 'cpu_atom' for 'cycles', skip other cpus in list.
      WARNING: use 11 in 'cpu_atom' for 'cpu_atom/instructions/', skip other cpus in list.
    
       Performance counter stats for 'CPU(s) 0,11':
    
               3,290,301      cpu_core/cycles/
               1,953,073      cpu_atom/cycles/
               1,407,869      cpu_atom/instructions/
    
             1.006260912 seconds time elapsed
    Signed-off-by: default avatarJin Yao <yao.jin@linux.intel.com>
    Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jin Yao <yao.jin@intel.com>
    Cc: Kan Liang <kan.liang@intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https //lore.kernel.org/r/20210723063433.7318-4-yao.jin@linux.intel.com
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    1d3351e6
builtin-record.c 77.4 KB