• Namhyung Kim's avatar
    perf stat: Use proper cpu for shadow stats · c0ee1d5a
    Namhyung Kim authored
    Currently perf stat shows some metrics (like IPC) for defined events.
    But when no aggregation mode is used (-A option), it shows incorrect
    values since it used a value from a different cpu.
    
    Before:
    
      $ perf stat -aA -e cycles,instructions sleep 1
    
       Performance counter stats for 'system wide':
    
      CPU0      116,057,380      cycles
      CPU1       86,084,722      cycles
      CPU2       99,423,125      cycles
      CPU3       98,272,994      cycles
      CPU0       53,369,217      instructions      #    0.46  insn per cycle
      CPU1       33,378,058      instructions      #    0.29  insn per cycle
      CPU2       58,150,086      instructions      #    0.50  insn per cycle
      CPU3       40,029,703      instructions      #    0.34  insn per cycle
    
           1.001816971 seconds time elapsed
    
    So the IPC for CPU1 should be 0.38 (= 33,378,058 / 86,084,722)
    but it was 0.29 (= 33,378,058 / 116,057,380) and so on.
    
    After:
    
      $ perf stat -aA -e cycles,instructions sleep 1
    
       Performance counter stats for 'system wide':
    
      CPU0      109,621,384      cycles
      CPU1      159,026,454      cycles
      CPU2       99,460,366      cycles
      CPU3      124,144,142      cycles
      CPU0       44,396,706      instructions      #    0.41  insn per cycle
      CPU1      120,195,425      instructions      #    0.76  insn per cycle
      CPU2       44,763,978      instructions      #    0.45  insn per cycle
      CPU3       69,049,079      instructions      #    0.56  insn per cycle
    
           1.001910444 seconds time elapsed
    
    Fixes: 44d49a60 ("perf stat: Support metrics in --per-core/socket mode")
    Reported-by: default avatarSam Xi <xyzsam@google.com>
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Reviewed-by: default avatarAndi Kleen <ak@linux.intel.com>
    Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lore.kernel.org/lkml/20201127041404.390276-1-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    c0ee1d5a
stat-display.c 30.4 KB