我正在开发一个复杂的网络软件,但我无法确定如何提高系统性能。
特别是在使用阻塞同步调用的软件的一部分。由于系统的这一部分正在进行繁重的计算,因此几乎不可能确定该组件的缓慢是由这些计算引起的还是由等待系统的其他部分引起的。
是否有任何轻量级分析器可以捕获此信息?我不能使用像 valgrind 这样的重型配置文件,因为这会完全扭曲结果(尽管 valgrind 是完美的,因为它捕获了所有必需的信息)。
我尝试使用 oProfile,但无法从中获得任何有意义的结果(也许如果某处有简明教程...)。
最佳答案
您需要的是在挂钟时间(不仅仅是像 gprof 这样的 CPU 时间)为您提供堆栈样本的东西,并按行(不只是按函数)报告包含样本的百分比行。
Zoom会做的, 但我只是do random-pausing .这是 why it works . 这是一个逐个打击example . 这是 another explanation .
关于c - Profiling 网络软件/Profiling software with lot of system call waiting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6263933/