我有一个Intel(R) Core(TM) i7-4720HQ CPU @ 2.60GHz
( Haswell
) 处理器。在相对空闲的情况下,我运行了以下Perf
命令,它们的输出如下所示。计数器是offcore_response.all_data_rd.l3_miss.any_response
和mem_load_uops_retired.l3_miss
:
sudo perf stat -a -e offcore_response.all_data_rd.l3_miss.any_response,mem_load_uops_retired.l3_miss sleep 10
Performance counter stats for 'system wide':
3,713,037 offcore_response.all_data_rd.l3_miss.any_response
2,909,573 mem_load_uops_retired.l3_miss
10.016644133 seconds time elapsed
这两个值似乎是一致的,因为后者不包括 预取请求和那些不针对的请求DRAM
。但它们与IMC
. 此处调用UNC_IMC_DRAM_DATA_READS
并记录了此计数器。我读了柜台,然后再读了一遍。差异在(EDITED)左右。如果乘以(估计秒数),结果值将约为百万(EDITED),这是上述值的倍数1
30,000,000
10
10
300
100
性能计数器(已编辑)。远不及百万3
!我错过了什么?
PS:当系统负载更大时,差异要小得多(但仍然很大)。
更新:
请注意,PCM
输出与我的IMC
计数器读数相匹配。
这是相关的输出PCM
:
列和的值
READ
分别基于和计算。似乎分类为的请求将是或。换句话说,在所描绘的一秒间隔内,GB 和请求的GB几乎(由于上述文档中报告的不准确)属于. 基于这个解释,以上WRITE
IO
UNC_IMC_DRAM_DATA_READS
UNC_IMC_DRAM_DATA_WRITES
UNC_IMC_DRAM_IO_REQUESTS
IO
READ
WRITE
2.01
2.42
READ
WRITE
IO
三列似乎彼此一致。
问题是和值之间仍然存在很大的差距!IMC
PMC
当我在runlevel启动时情况是一样的。调度程序上的进程是和之一。磁盘 IO几乎是KB/s。我想知道是什么导致了如此(相对)大量的. 是否可以检测到(例如,使用 a或tool)? 1
swapper
kworker
migration
85
IO
counter
更新 2:
我认为专栏有问题。无论系统中的负载量如何,IO
它总是在范围内![1.99,2.01]
更新 3:
在runlevel1
中,事件在1 秒间隔内的平均发生次数为。在同一时期,相关计数器记录的读取请求数约为. 也就是说,假设所有的内存访问都是由cpu指令直接引起的,那么对于每一个退役的微操作,都会存在两次内存访问。特别是考虑到存在多级缓存这一事实,这似乎是不可能的。因此,在uops_retired.all
15,000,000
IMC
30,000,000
空闲情况下,读取访问可能是由IO
.