perf可以针对进程进行profile,也可以对线程进行profile。再对进程profile之后,拿到perf.data,也可以修改为针对进程下的线程进行profile。所以照理来说应该是可以从perf.data中查看到有多少线程。
这也符合我们的一般要求,即有perf.data之后,可以针对线程显示火焰图。经过查询资料发现,perf中有perf data convert --force --to-json temp.json
可以把perf.data转成json进行查看,但是要新版本的perf才有…这就恨坑爹,以为着我们需要自己安装最新的perf。
安装perf
我的系统是RedHat系列,对应的Debian系列需要自己修改一下install相关。
拉取最新的内核代码git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git --depth 1000
[root@ip-10-155-128-114 ~]# cd linux/tools/perf/
[root@ip-10-155-128-114 perf]# LIBBABELTRACE=1 LIBBABELTRACE_DIR=/usr/local make
BUILD: Doing 'make -j2' parallel build
HOSTCC fixdep.o
HOSTLD fixdep-in.o
LINK fixdep
Warning: Kernel ABI header at 'tools/include/uapi/linux/kvm.h' differs from latest version at 'include/uapi/linux/kvm.h'