调试CPU高速缓存
我目前正试图优化我的软件以获得更好的CPU缓存使用率。 SO上有一些帖子表明,有时很难猜测 CPU缓存在做什么,以及为什么在某些情况下性能会下降。 例如:
因此,为了获得缓存未命中发生的线索,我可以运行perf
来获得缓存未命中的次数,以及valgrind --tool=cachegrind
模拟缓存(至少是L1和last-级高速缓存)。
这是非常好的知道在哪里高速缓存未命中发生,但我想知道他们为什么会发生(例如高速缓存捣毁等)。 有没有办法显式地暂停程序,看看缓存里面有什么(可能是运行在valgrind
和vgdb
的程序)?
根据我的经验,您需要反汇编您的二进制文件,并查看程序使用缓存的位置。 看看预取或缓存指令被调用的位置。 这会给你它的位置和用途。 这是一个不幸的痛苦过程。
链接地址: http://www.djcxy.com/p/85963.html下一篇: Why does my 8M L3 cache not provide any benefit for arrays larger than 1M?