2013-03-21 128 views
3

我正在寻找C++代码/函数,该代码/函数允许监视多核CPU的CPU缓存/缓存上的读/写操作,以便能够检测到期的性能瓶颈涉及访问相同内存位置的多个内核之间的竞争。使用C++扫描多核系统中的CPU缓存操作

所有甚至接近的表示赞赏。谁能帮忙?提前致谢。


谢谢你所有的答案。在经过他们之后,我想我应该对实际问题的解决方案进行更具体的了解。

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

在这一点上是有很大的帮助,以获得一些VC++代码片段一样,我怎么连检测样的CPU,那种缓存它,而且当它读取/自/至写入数据在那个缓存中地址。 它不一定非常复杂,我只需要以简单的方式工作。

+0

[Cachegrind](http://valgrind.org/info/tools.html#cachegrind)怎么样? – 2013-03-21 14:31:50

+0

@ us2012,他们做错了:PMU(性能监视器单元)就是出于此目的。 – Ben 2013-03-21 14:35:23

+0

@本啊,不知道。我会删除我之前的评论。 – us2012 2013-03-21 14:36:12

回答

3

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

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

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

看到perf --help

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

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