Linux系统性能分析工具指南
1. 符号表与编译标志
在对系统进行性能分析时,我们会立即遇到一个问题。虽然观察系统的自然状态很重要,但工具往往需要额外的信息才能解读事件。
部分工具需要特殊的内核选项,比如perf、Ftrace和LTTng。因此,可能需要构建并部署一个新的内核来进行相关测试。
调试符号对于将原始程序地址转换为函数名和代码行非常有帮助。部署带有调试符号的可执行文件不会改变代码的执行,但需要有包含调试信息的二进制文件和内核副本,至少对于想要分析的组件要如此。例如perf,在目标系统上安装这些调试符号后,工具才能更好地工作。
如果希望工具生成调用图,可能需要在编译时启用栈帧。若要工具准确地将地址与代码行关联起来,可能需要以较低的优化级别进行编译。
最后,有些工具需要在程序中插入检测代码来捕获样本,因此需要重新编译这些组件。对于应用程序,gprof需要这样做;对于内核,Ftrace和LTTng需要这样做。
需要注意的是,对所观察系统的修改越多,就越难将测量结果与生产系统联系起来。最好采取观望态度,只有在需求明确时再进行更改,并要意识到每次更改都会改变测量的内容。
2. 开始性能分析
当观察整个系统时,一个很好的起点是使用像top这样的简单工具,它能快速提供系统概况。它会显示内存使用量、哪些进程在消耗CPU周期,以及这些情况在不同核心和时间上的分布。
- 如果top显示单个应用程序在用户空间占用了所有CPU周期,那么可以使用perf来分析该应用程序。
- 如果有两个或更多进程的CPU使用率很高,可能存在某种因素将它们耦合
超级会员免费看
订阅专栏 解锁全文
1403

被折叠的 条评论
为什么被折叠?



