1

我有一个Intel(R) Core(TM) i7-4720HQ CPU @ 2.60GHz( Haswell) 处理器。在相对空闲的情况下,我运行了以下Perf命令,它们的输出如下所示。计数器是offcore_response.all_data_rd.l3_miss.any_responsemem_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),这是上述值的倍数130,000,000 1010300100 性能计数器(已编辑)。远不百万3!我错过了什么?


PS:当系统负载更大时,差异小得多(但仍然很大)。

问题也在这里提出: https ://community.intel.com/t5/Software-Tuning-Performance/Performance-Counters-and-IMC-Counter-Not-Matching/mp/1288832


更新:

请注意,PCM输出与我的IMC计数器读数相匹配。

这是相关的输出PCM在此处输入图像描述 列和的值READ分别基于和计算。似乎分类为的请求将或。换句话说,在所描绘的一秒间隔内,GB 和请求的GB几乎(由于上述文档报告的不准确属于. 基于这个解释,以上WRITEIOUNC_IMC_DRAM_DATA_READSUNC_IMC_DRAM_DATA_WRITESUNC_IMC_DRAM_IO_REQUESTSIOREADWRITE2.012.42READWRITEIO列似乎彼此一致。

问题是和值之间仍然存在很大的差距!IMCPMC

当我在runlevel启动时情况是一样的。调度程序上的进程是和之一磁盘 IO几乎是KB/s。我想知道是什么导致了如此(相对)大量的. 是否可以检测到(例如,使用 a或tool)? 1 swapperkworkermigration85IOcounter


更新 2:

我认为专栏有问题。无论系统中的负载量如何,IO总是在范围内![1.99,2.01]


更新 3:

runlevel1中,事件在1 秒间隔内平均发生次数为。在同一时期,相关计数器记录的读取请求数约为. 也就是说,假设所有的内存访问都是由cpu指令直接引起的,那么对于每一个退役的微操作,都会存在两次内存访问。特别是考虑到存在级缓存这一事实,这似乎是不可能的。因此,在uops_retired.all15,000,000IMC30,000,000空闲情况下读取访问可能是IO.

4

1 回答 1

1

实际上,这主要是由GPU 设备引起的。这就是从性能计数器中排除的原因。以下是使用xrandr在分辨率刷新率相对空闲的系统PCM上执行示例的相关输出: 这是针对分辨率和刷新率相同(即)的情况: 可以看出,更改屏幕分辨率降低了读取IO流量相当大(超过!)。 3840x2160 60高分辨率案例的相关 PCM 输出 800x60060低分辨率情况下的相关 PCM 输出 100x

于 2021-08-31T23:33:02.010 回答