7

问题

是否有任何开源工具或是否有人有任何技术/代码来分析std::mutex运行代码中的争用程度?

我想以每个std::mutex实例的粒度(按时间或数量)计算锁争用的百分比。如果有一个不需要重新编码的插入式工具,那就更好了。

我正在寻找一种可以与std::threadg++ 一起使用的技术:在应用程序退出时,我想将互斥争用统计信息的配置文件转储到日志文件中,以便我可以监控实际运行下线程代码的质量上下文。

笔记

我见过这个线程。不幸的是,答案要么需要大量现金,要么在 Windows 上运行。

4

1 回答 1

4

我推荐AMD CodeXLIntel VTune之类的东西。CodeXL 是免费的;英特尔 VTune 提供适用于您的免费学术许可证,或者您可以尝试 30 天试用。它们都在 Linux 中工作。

在最基本的层面上,这些工具可以通过例如测量您在std::mutex. 每个工具中还包含其他更高级的分析技术/工具,可以进一步帮助您。您根本不需要更改代码,尽管您可能需要检查您是否使用调试符号编译和/或没有剥离二进制文件。您可能还希望远离极端优化级别,例如-O3,坚持使用-O1-O2-Og

PS:与所有优化查询一样,我必须提醒您在开始优化之前始终衡量您的性能问题实际在哪里。无论您对锁争用有多么担心,在您花费大量精力尝试减轻您可能遇到或可能不存在的任何锁争用之前,请先使用分析器验证您的担忧。

于 2013-06-27T06:00:22.317 回答