• Namhyung Kim's avatar
    perf report: Add weight[123] output fields · 7043dc52
    Namhyung Kim authored
    Add weight1, weight2 and weight3 fields to -F/--fields and their aliases
    like 'ins_lat', 'p_stage_cyc' and 'retire_lat'.  Note that they are in
    the sort keys too but the difference is that output fields will sum up
    the weight values and display the average.
    
    In the sort key, users can see the distribution of weight value and I
    think it's confusing we have local vs. global weight for the same weight.
    
    For example, I experiment with mem-loads events to get the weights.  On
    my laptop, it seems only weight1 field is supported.
    
      $ perf mem record -- perf test -w noploop
    
    Let's look at the noploop function only.  It has 7 samples.
    
      $ perf script -F event,ip,sym,weight | grep noploop
      # event                         weight     ip           sym
      cpu/mem-loads,ldlat=30/P:           43     55b3c122bffc noploop
      cpu/mem-loads,ldlat=30/P:           48     55b3c122bffc noploop
      cpu/mem-loads,ldlat=30/P:           38     55b3c122bffc noploop    <--- same weight
      cpu/mem-loads,ldlat=30/P:           38     55b3c122bffc noploop    <--- same weight
      cpu/mem-loads,ldlat=30/P:           59     55b3c122bffc noploop
      cpu/mem-loads,ldlat=30/P:           33     55b3c122bffc noploop
      cpu/mem-loads,ldlat=30/P:           38     55b3c122bffc noploop    <--- same weight
    
    When you use the 'weight' sort key, it'd show entries with a separate
    weight value separately.  Also note that the first entry has 3 samples
    with weight value 38, so they are displayed together and the weight
    value is the sum of 3 samples (114 = 38 * 3).
    
      $ perf report -n -s +weight | grep -e Weight -e noploop
      # Overhead  Samples  Command   Shared Object   Symbol         Weight
           0.53%        3     perf   perf            [.] noploop    114
           0.18%        1     perf   perf            [.] noploop    59
           0.18%        1     perf   perf            [.] noploop    48
           0.18%        1     perf   perf            [.] noploop    43
           0.18%        1     perf   perf            [.] noploop    33
    
    If you use 'local_weight' sort key, you can see the actual weight.
    
      $ perf report -n -s +local_weight | grep -e Weight -e noploop
      # Overhead  Samples  Command   Shared Object   Symbol         Local Weight
           0.53%        3     perf   perf            [.] noploop    38
           0.18%        1     perf   perf            [.] noploop    59
           0.18%        1     perf   perf            [.] noploop    48
           0.18%        1     perf   perf            [.] noploop    43
           0.18%        1     perf   perf            [.] noploop    33
    
    But when you use the -F/--field option instead, you can see the average
    weight for the while noploop function (as it won't group samples by
    weight value and use the default 'comm,dso,sym' sort keys).
    
      $ perf report -n -F +weight | grep -e Weight -e noploop
      Warning:
      --fields weight shows the average value unlike in the --sort key.
      # Overhead  Samples  Weight1  Command  Shared Object  Symbol
           1.23%        7     42.4  perf     perf           [.] noploop
    
    The weight1 field shows the average value:
      (38 * 3 + 59 + 48 + 43 + 33) / 7 = 42.4
    
    Also it'd show the warning that 'weight' field has the average value.
    Using 'weight1' can remove the warning.
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: https://lore.kernel.org/r/20240411181718.2367948-3-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    7043dc52
hist.h 21 KB