• Jiri Olsa's avatar
    perf stat: Fix interval output values · 51fd2df1
    Jiri Olsa authored
    We broke interval data displays with commit:
    
      3f416f22 ("perf stat: Do not clean event's private stats")
    
    This commit removed stats cleaning, which is important for '-r' option
    to carry counters data over the whole run. But it's necessary to clean
    it for interval mode, otherwise the displayed value is avg of all
    previous values.
    
    Before:
      $ perf stat -e cycles -a -I 1000 record
      #           time             counts unit events
           1.000240796         75,216,287      cycles
           2.000512791        107,823,524      cycles
    
      $ perf stat report
      #           time             counts unit events
           1.000240796         75,216,287      cycles
           2.000512791         91,519,906      cycles
    
    Now:
      $ perf stat report
      #           time             counts unit events
           1.000240796         75,216,287      cycles
           2.000512791        107,823,524      cycles
    
    Notice the second value being bigger (91,.. < 107,..).
    
    This could be easily verified by using perf script which displays raw
    stat data:
    
      $ perf script
      CPU  THREAD       VAL         ENA         RUN        TIME EVENT
        0      -1  23855779  1000209530  1000209530  1000240796 cycles
        1      -1  33340397  1000224964  1000224964  1000240796 cycles
        2      -1  15835415  1000226695  1000226695  1000240796 cycles
        3      -1   2184696  1000228245  1000228245  1000240796 cycles
        0      -1  97014312  2000514533  2000514533  2000512791 cycles
        1      -1  46121497  2000543795  2000543795  2000512791 cycles
        2      -1  32269530  2000543566  2000543566  2000512791 cycles
        3      -1   7634472  2000544108  2000544108  2000512791 cycles
    
    The sum of the first 4 values is the first interval aggregated value:
    
      23855779 + 33340397 + 15835415 + 2184696 = 75,216,287
    
    The sum of the second 4 values minus first value is the second interval
    aggregated value:
    
      97014312 + 46121497 + 32269530 + 7634472 - 75216287 = 107,823,524
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    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>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lkml.kernel.org/r/1454485436-20639-1-git-send-email-jolsa@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    51fd2df1
stat.c 9.18 KB