我想得到一个我的程序的采样配置文件,其中包括阻塞时间(等待网络服务)以及CPU时间。
perf的默认性能分析模式(perf record -F 99 -g -- ./binary
)对整个系统的运行时间进行采样,但没有明确指出我的程序在程序的哪些部分花费了多少时间:它偏向于CPU密集型部分并且根本不显示IO密集型部件。 sleep time profiling mode(related on SO)显示的是睡眠时间,但没有一般情况。
我想要的是一件非常简单的事情:每隔10毫秒记录一次我程序的调用堆栈,无论它是在运行还是当前被阻止。然后从中做出flamegraph。