如何确定cacheline的write allocate产生的内存负载数量?

问题描述 投票:0回答:1

根据this pagethis page,读操作首先会发生L3缓存的存储未命中,在某些情况下可以通过非临时存储来避免。

有没有办法(比如一些性能事件)让我估计工作负载中此类写入分配引起的内存负载数量?

caching intel profile perf
1个回答
0
投票

此类读取的技术术语是“Read For Ownership”,使缓存行进入 MESI Exclusive 状态。有一些特定于 L2 中的 rfo 命中或未命中的性能事件,以及 L2 未命中后发生的离核情况。与加载不同的是,没有每指令计数器,因为存储在退休之前甚至不会离开存储缓冲区。

我查看了我的 Skylake i7 桌面上显示的事件 

perf list

offcore_requests.demand_rfo

可能就是您要查找的内容(可能与

l2_rqsts.rfo_miss
类似),但这会计算 L3 中命中的 RFO。
或者也许

offcore_response.demand_rfo.l3_miss_local_dram.any_snoop

对于单插槽系统,如果这符合我的想法,计算必须访问DRAM的RFO?我还没试过,但这个名字看起来很有希望。

offcore_response.demand_rfo.l3_miss.any_snoop,因为 L3 中缺少关键点。


在多插槽系统中,我不知道哪些事件组合可以对本地 DRAM(此插槽)与其他插槽上的 DRAM 进行计数,但如果可能的话,则不能对另一个插槽上的 L3 命中进行计数。显然,

snoop_non_dram

也是可能的,也许对于必须通过系统代理而不是内存控制器的可缓存设备内存?或者也许这涵盖了某些笔记本电脑 SKL 具有的可选 eDRAM 缓存中 L4 命中的可能性。

如果我没记错的话,

offcore_response

事件可能对其他逻辑核心上的活动敏感,因此请保持其闲置。

    

© www.soinside.com 2019 - 2024. All rights reserved.