3

我正在搜索允许监视 CPU 缓存/多核 CPU 缓存上的读/写操作的 C++ 代码/函数,以便能够检测由于访问相同内存位置的多个内核之间的竞争而导致的性能瓶颈。

一切甚至接近的东西都会受到赞赏。任何人都可以帮忙吗?提前致谢。


感谢您到目前为止的所有答案。在经历了它们之后,我认为我应该更具体地了解实际问题的解决方案。

  1. 期望的结果是一个用 Visual C++ 编写的用于 Windows 系统的软件。
  2. 该软件应该能够与所有 CPU 一起工作,而不仅仅是特定制造商的 CPU。
  3. 当涉及到双重检查结果时,工具很方便,但只要没有完整记录的源代码,我就不会从中得到太多。

在这一点上,获取一些 VC++ 代码片段会很有帮助,例如,我如何检测 CPU 的类型、它拥有的缓存类型,以及它何时从该缓存中的地址读取/写入数据。它不必非常复杂,我只需要以简单的方式工作。

4

1 回答 1

3

我能找到的最好/最简单的工具是perf,例如,以下命令:

perf stat -e LLC-load-misses,LLC-store-misses /bin/ls

将输出运行的最后一级缓存未命中数ls

perf --help

其他好的工具是vTune,或者cachegrind前面提到的。

对于编程方法,您还可以检查PAPI API

于 2013-03-21T14:38:57.153 回答