有没有一种方法可以衡量缓存一致性未命中

时间:2020-07-28 01:29:14

标签: performance cpu-cache

鉴于在多个内核上运行的程序,如果两个或多个内核在同一高速缓存行上运行,是否有办法测量存在的高速缓存一致性失效/丢失的次数(即,当Core1写入高速缓存行时,然后迫使Core2刷新其缓存行的副本,以便两个内核保持一致)?

让我知道我是否为此概念使用了错误的术语。

1 个答案:

答案 0 :(得分:2)

是的,可以使用硬件性能计数器。 但是,获取它们的方式通常取决于操作系统和处理器。在Linux上, perf 也可以用于跟踪性能计数器(尤其是perf stat -e COUNTER_NAME_1,COUNTER_NAME_2,etc.)。另外,在Linux和Windows上,英特尔VTune也可以做到这一点。

可以使用perf list(或使用PMU-Tools)检索硬件计数器列表。

您要度量的度量标准类似于MESI cache-coherence protocol中的所有权请求(RFO)。希望大多数现代(x86_64)处理器都包含用于测量RFO的硬件事件。在Intel Skylake处理器上,存在称为l2_rqsts.all_rfo的硬件事件,更确切地说是l2_rqsts.code_rd_hitl2_rqsts.code_rd_miss L2缓存级别上执行此操作。另外,还有许多更高级的RFO相关的硬件事件可以在核心级别中使用。