【发布时间】:2014-09-13 07:33:59
【问题描述】:
我用 perf stat -e cache-misses 命令连续执行了 6 次 1000x1000 矩阵乘法代码,得到以下结果
Observation Cache-Misses Time elapsed(sec)
1 48822173 7.697147087
2 48663517 7.710045908
3 48667119 7.701690126
4 48867057 7.766267284
5 48610651 7.701600681
6 49203583 7.719180737
正如我们在此处看到的,观察 1 的缓存未命中率大于观察 2、3 和 5 中的缓存未命中。但观察 1 的经过时间小于观察 2、3 和 5。另一方面在所有这些观察中,观察 4 的经过时间最长,但观察 4 的缓存未命中少于观察 3 和观察 6。根据教科书,增加缓存未命中会延长程序的执行时间。那么我们如何解释这种行为呢?谢谢
这是我的系统详细信息:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 42
Stepping: 7
CPU MHz: 2300.000
BogoMIPS: 4589.89
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3
【问题讨论】:
标签: linux performance caching profiling computer-architecture