• Ravi Bangoria's avatar
    perf mem: Refactor perf_mem__lvl_scnprintf() to process 'union perf_mem_data_src' more intuitively · ddeac198
    Ravi Bangoria authored
    Interpretation of 'union perf_mem_data_src' by perf_mem__lvl_scnprintf()
    is non-intuitive. For ex, it ignores 'mem_lvl' when 'mem_hops' is set
    but considers it otherwise. It prints both 'mem_lvl_num' and 'mem_lvl'
    when 'mem_hops' is not set.
    
    Refactor this function such that it behaves more intuitively: Use new
    API 'mem_lvl_num'|'mem_remote'|'mem_hops' if 'mem_lvl_num' contains
    value other than PERF_MEM_LVLNUM_NA. Otherwise, fallback to old API
    'mem_lvl'.  Since new API has no way to indicate MISS, use it from old
    api, otherwise don't club old and new APIs while parsing as well as
    printing.
    
    Before:
    
      $ sudo ./perf mem report -F sample,mem --stdio
      #      Samples  Memory access
      # ............  ........................
      #
              250097  N/A
              188907  L1 hit
                4116  L2 hit
                3496  Remote Cache (1 hop) hit
                3271  Remote Cache (2 hops) hit
                 873  L3 hit
                 598  Local RAM hit
                 438  Remote RAM (1 hop) hit
                   1  Uncached hit
    
    After:
    
      $ sudo ./perf mem report -F sample,mem --stdio
      #      Samples  Memory access
      # ............  .......................................
      #
              255517  N/A
              189989  L1 hit
                4541  L2 hit
                3363  Remote core, same node Any cache hit
                3336  Remote node, same socket Any cache hit
                1275  L3 hit
                 743  RAM hit
                 545  Remote node, same socket RAM hit
                   4  Uncached hit
    Signed-off-by: default avatarRavi Bangoria <ravi.bangoria@amd.com>
    Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ananth Narayan <ananth.narayan@amd.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sandipan Das <sandipan.das@amd.com>
    Cc: Santosh Shukla <santosh.shukla@amd.com>
    Cc: Stephane Eranian <eranian@google.com>
    Link: https://lore.kernel.org/r/20230407112459.548-5-ravi.bangoria@amd.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    ddeac198
mem-events.c 14.9 KB