• Jin Yao's avatar
    perf vendor events: Fix DRAM_BW_Use 0 issue for CLX/SKX · 0dfbe4c6
    Jin Yao authored
    Ian reports an issue that the metric DRAM_BW_Use often remains 0.
    
    The metric expression for DRAM_BW_Use on CLX/SKX:
    
    "( 64 * ( uncore_imc@cas_count_read@ + uncore_imc@cas_count_write@ ) / 1000000000 ) / duration_time"
    
    The counts of uncore_imc/cas_count_read/ and uncore_imc/cas_count_write/
    are scaled up by 64, that is to turn a count of cache lines into bytes,
    the count is then divided by 1000000000 to give GB.
    
    However, the counts of uncore_imc/cas_count_read/ and
    uncore_imc/cas_count_write/ have been scaled yet.
    
    The scale values are from sysfs, such as
    /sys/devices/uncore_imc_0/events/cas_count_read.scale.
    It's 6.103515625e-5 (64 / 1024.0 / 1024.0).
    
    So if we use original metric expression, the result is not correct.
    
    But the difficulty is, for SKL client, the counts are not scaled.
    
    The metric expression for DRAM_BW_Use on SKL:
    
    "64 * ( arb@event\\=0x81\\,umask\\=0x1@ + arb@event\\=0x84\\,umask\\=0x1@ ) / 1000000 / duration_time / 1000"
    
    root@kbl-ppc:~# perf stat -M DRAM_BW_Use -a -- sleep 1
    
     Performance counter stats for 'system wide':
    
                   190      arb/event=0x84,umask=0x1/ #     1.86 DRAM_BW_Use
            29,093,178      arb/event=0x81,umask=0x1/
         1,000,703,287 ns   duration_time
    
           1.000703287 seconds time elapsed
    
    The result is expected.
    
    So the easy way is just change the metric expression for CLX/SKX.
    This patch changes the metric expression to:
    
    "( ( ( uncore_imc@cas_count_read@ + uncore_imc@cas_count_write@ ) * 1048576 ) / 1000000000 ) / duration_time"
    
    1048576 = 1024 * 1024.
    
    Before (tested on CLX):
    
    root@lkp-csl-2sp5 ~# perf stat -M DRAM_BW_Use -a -- sleep 1
    
     Performance counter stats for 'system wide':
    
                765.35 MiB  uncore_imc/cas_count_read/ #     0.00 DRAM_BW_Use
                  5.42 MiB  uncore_imc/cas_count_write/
            1001515088 ns   duration_time
    
           1.001515088 seconds time elapsed
    
    After:
    
    root@lkp-csl-2sp5 ~# perf stat -M DRAM_BW_Use -a -- sleep 1
    
     Performance counter stats for 'system wide':
    
                767.95 MiB  uncore_imc/cas_count_read/ #     0.80 DRAM_BW_Use
                  5.02 MiB  uncore_imc/cas_count_write/
            1001900010 ns   duration_time
    
           1.001900010 seconds time elapsed
    
    Fixes: 038d3b53 ("perf vendor events intel: Update CascadelakeX events to v1.08")
    Fixes: b5ff7f27 ("perf vendor events: Update SkylakeX events to v1.21")
    Signed-off-by: default avatarJin Yao <yao.jin@linux.intel.com>
    Acked-by: default avatarIan Rogers <irogers@google.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/20201023005334.7869-1-yao.jin@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    0dfbe4c6
skx-metrics.json 27.7 KB