• K
    perf stat: Get correct cpu id for print_aggr · 601083cf
    Kan Liang 提交于
    print_aggr() fails to print per-core/per-socket statistics after commit
    582ec082 ("perf stat: Fix per-socket output bug for uncore events")
    if events have differnt cpus. Because in print_aggr(), aggr_get_id needs
    index (not cpu id) to find core/pkg id. Also, evsel cpu maps should be
    used to get aggregated id.
    
    Here is an example:
    
    Counting events cycles,uncore_imc_0/cas_count_read/. (Uncore event has
    cpumask 0,18)
    
      $ perf stat -e cycles,uncore_imc_0/cas_count_read/ -C0,18 --per-core sleep 2
    
    Without this patch, it failes to get CPU 18 result.
    
       Performance counter stats for 'CPU(s) 0,18':
    
      S0-C0           1            7526851      cycles
      S0-C0           1               1.05 MiB  uncore_imc_0/cas_count_read/
      S1-C0           0      <not counted>      cycles
      S1-C0           0      <not counted> MiB  uncore_imc_0/cas_count_read/
    
    With this patch, it can get both CPU0 and CPU18 result.
    
       Performance counter stats for 'CPU(s) 0,18':
    
      S0-C0           1            6327768      cycles
      S0-C0           1               0.47 MiB  uncore_imc_0/cas_count_read/
      S1-C0           1             330228      cycles
      S1-C0           1               0.29 MiB  uncore_imc_0/cas_count_read/
    Signed-off-by: NKan Liang <kan.liang@intel.com>
    Acked-by: NJiri Olsa <jolsa@kernel.org>
    Acked-by: NStephane Eranian <eranian@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Fixes: 582ec082 ("perf stat: Fix per-socket output bug for uncore events")
    Link: http://lkml.kernel.org/r/1435820925-51091-1-git-send-email-kan.liang@intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    601083cf
builtin-stat.c 36.4 KB