【发布时间】:2014-10-16 12:25:01
【问题描述】:
我正在调整一个高性能的多线程应用程序,我怀疑错误共享可能是导致性能不佳的原因。我如何验证是否是这种情况?
我正在使用 gcc 4.82 在 Ubuntu 12.04 上运行 C++。
【问题讨论】:
-
这些信息远不足以为您提供任何有用的信息。
-
去掉虚假分享,看看性能有没有提升。
-
@molbdnilo 我怀疑它正在发生,但我不确定它是否是。我正在寻找一种明确的方式来表示“是的错误共享正在发生”,然后我可以将其删除并查看性能是否有所提高。
-
虚假共享只是缓存性能不佳的一种特定方式。所以我建议this question,尤其是perf 来检查缓存未命中。使用
perf stat -e cache-misses运行维基百科错误共享示例:使用 OpenMP,129515 缓存未命中。没有 OpenMP(串行):1551 次缓存未命中。显然有一些与线程相关的缓存问题。
标签: c++ multithreading performance concurrency