gpt4 book ai didi

c++ - 如何分析 g++/std::mutex 下的锁争用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:09 26 4
gpt4 key购买 nike

问题

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

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

我正在寻找一种适用于 std::thread 和 g++ 的技术:在应用程序退出时,我想将互斥锁争用统计信息转储到日志文件中, 这样我就可以在实际运行的上下文中监控线程代码的质量。

注意

我看过this thread .不幸的是,答案要么需要大量现金,要么在 Windows 上运行。

最佳答案

我推荐像 AMD CodeXL 这样的东西或 Intel VTune . CodeXL 是免费的;英特尔 VTune 有免费的学术许可证(如果适用),或者您可以试用 30 天。他们都在 Linux 中工作。

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

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

关于c++ - 如何分析 g++/std::mutex 下的锁争用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17334050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com