调试/性能分析
< 调试
由于性能退化、未优化的新功能或仅仅是影响性能的未知因素,可能需要对应用程序进行性能分析。根据维基百科
- 在软件工程中,性能分析(“程序性能分析”、“软件性能分析”)是一种动态程序分析形式,用于测量例如程序的空间(内存)或时间复杂度、特定指令的使用情况或函数调用的频率和持续时间。最常见的是,性能分析信息有助于程序优化,更具体地说是性能工程。
安装
获取调试符号
为了获得可解释的结果,您要调试的应用程序的调试符号是强制性的。请参阅Debugging/Getting traces#Manually getting debug info。perf 尚不支持 debuginfod,因此必须手动获取调试符号。
如果要在没有调试符号的情况下对应用程序进行性能分析或以其他方式进行调试,则只会显示指针而不是实际的函数名称,这几乎是无用的。
用法
就像 gdb 一样,应用程序将在 perf 中运行。
注意: 可能需要使用
-F
调整性能分析频率。自从2012-05-22以来,它默认为 4000。较高的值会导致更高的负载。虽然默认值在大多数情况下都可以,但您可能希望为运行时非常短的程序进一步增加该值,或者如果程序将长时间运行则降低该值。还要记住系统负载,因为高负载会导致采样开销并隐藏正在调试的实际瓶颈。请参阅perf-record(1)。$ perf record -g -- command
这会将数据记录到 perf.data
。程序完成后,使用以下命令显示结果
$ perf report --stdio
为了获得更美观的显示效果,请考虑使用cargo-flamegraph。
如果向上游报告错误,请提交 perf.data
文件。