一尘不染

PERF STAT不计算内存负载,但计算内存存储

linux

Linux内核: 4.10.0-20(通用)(也在4.11.3上尝试过)

Ubuntu的: 17.04

我一直在尝试使用收集内存访问的统计信息perf stat。我能够 收集内存存储的统计信息,但内存负载的计数返回0值

以下是内存存储的详细信息:

perf stat -e cpu/mem-stores/u ./libquantum_base.arnab 100
N = 100, 37 qubits required
Random seed: 33
Measured 3277 (0.200012), fractional approximation is 1/5.
Odd denominator, trying to expand by 2.
Possible period is 10.
100 = 4 * 25

 Performance counter stats for './libquantum_base.arnab 100':

       158,115,510      cpu/mem-stores/u

       0.559922797 seconds time elapsed

对于内存负载,我 得到一个0计数 ,如下所示:-

perf stat -e cpu/mem-loads/u ./libquantum_base.arnab 100
N = 100, 37 qubits required
Random seed: 33
Measured 3277 (0.200012), fractional approximation is 1/5.
Odd denominator, trying to expand by 2.
Possible period is 10.
100 = 4 * 25

 Performance counter stats for './libquantum_base.arnab 100':

                 0      cpu/mem-loads/u

       0.563806170 seconds time elapsed

我不明白为什么这算不上正确。 我是否应该以任何方式使用其他事件来获取正确的数据


阅读 273

收藏
2020-06-07

共1个答案

一尘不染

我已使用Broadwell(CPU e5-2620)服务器计算机来收集以下所有事件。

要收集内存加载事件,我必须使用数字事件值。我基本上运行了以下命令-

./perf record -e "r81d0:u" -c 1 -d -m 128 ../../.././libquantum_base 20

在此,r81d0表示用于计算“所有已退出指令中的内存负载”的原始事件。可以理解的“ u”表示用户空间。

另一方面,以下命令

./perf record -e "r82d0:u" -c 1 -d -m 128 ../../.././libquantum_base 20

具有“ r82d0:u”作为原始事件,表示“在用户空间中退休的所有指令中的存储器”。

2020-06-07