Linux内核: 4.10.0-20(通用)(也在4.11.3上尝试过)
Ubuntu的: 17.04
我一直在尝试使用收集内存访问的统计信息perf stat。我能够 收集内存存储的统计信息,但内存负载的计数返回0值 。
perf stat
以下是内存存储的详细信息:
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
我不明白为什么这算不上正确。 我是否应该以任何方式使用其他事件来获取正确的数据 ?
我已使用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”作为原始事件,表示“在用户空间中退休的所有指令中的存储器”。