首页 > 解决方案 > 如何使用 linux perf 并解释其输出以了解 CPU 缓存未命中?

问题描述

我正在尝试测量内存引用错过任何 CPU 缓存并需要从内存中获取缓存行的次数。我有一个非常简单的程序,它将 1 亿个 4 字节整数加载到一个数组中,然后随机扫描或探测它。我测量时间,然后使用 perf 报告各种与缓存相关的事件:LLC-load、LLC-load-misses、LLC-store、LLC-store-misses。我正在使用 Pop OS 18.10(Ubuntu 18.10 的变体)。

我以三种方式运行程序:

1)只需加载数组(100m 个整数)。

2) 加载阵列并按物理顺序扫描。

3) 加载数组并读取 100m 随机数组位置。

#3 比 #2 慢 40 倍,这并不奇怪。

我在知道要检查哪些性能事件以及如何解释结果方面都遇到了一些麻烦:

标签: linuxcpu-cacheperf

解决方案


推荐阅读