小弟维护的一个程序在客户现场运行占用 CPU 过高(几百上千),请问怎么能不重启这个程序就能大概分析出耗费 CPU 的大概代码段?谢谢了
1
detailyang 2017-11-10 11:34:20 +08:00 1
cpu 利用率高是一种非常容易优化的行为(复现条件),你可以利用成熟的 linux 跟踪工具 stap 和 perf 等来进行在线活体分析,你的场景下,建议使用 perf, 方便安装。你可以通过 `perf record -F 99 -p 13204 -g -- sleep 30` 来采样 on-cpu 的热点函数,或者 perf top -p 13204 直接进行观测,注意跟踪工具只能做到 C-Land 级别的跟踪,更上一层的虚拟机级别的需要自己额外实现。
|
2
jimy1 OP 谢谢 detailyang
|
3
chunk 2017-11-10 12:02:28 +08:00 1
我记得 perf 可以直接查看运行中的进程的 https://perf.wiki.kernel.org/index.php/Tutorial#Attaching_to_a_running_process
|
4
Mirana 2017-11-10 12:18:04 +08:00 1
perf top -p <pid>
|
5
gouchaoer 2017-11-10 12:24:12 +08:00 1
perf 查看调用栈对不同的语言有的可能看不到,建议你看看: https://huoding.com/2016/08/18/531
|