安装火焰图生成工具

安装 SystemTap

环境 CentOS 6.5 2.6.32-504.23.4.el6.x86_64

SystemTap 是一个诊断 Linux 系统性能或功能问题的开源软件,为了诊断系统问题或性能,开发者或调试人员只需要写一些脚本,然后通过 SystemTap 提供的命令行接口就可以对正在运行的内核进行诊断调试。

首先需要安装内核开发包和调试包(可以从http://debuginfo.centos.org/下载rpm文件或者直接使用yum安装):

# #Installaion:
# rpm -ivh kernel-debuginfo-($version).rpm
# rpm -ivh kernel-debuginfo-common-($version).rpm
# rpm -ivh kernel-devel-($version).rpm    

其中 $version 使用 linux 命令 uname -r 查看,需要保证内核版本和上述开发包版本一致才能使用 systemtap 。(Github 地址,该工具包即是用 perl 生成 stap 探测脚本并运行的脚本,如果是要抓 lua 级别的情况,请使用工具 ngx-sample-lua-bt

# ps -ef | grep nginx  ( ps :得到类似这样的输出,其中 15010 即使 worker 进程的 pid ,后面需要用到)
hippo    14857     1  0 Jul01 ?        00:00:00 nginx: master process /opt/openresty/nginx/sbin/nginx -p /home/hippo/skylar_server_code/nginx/main_server/ -c conf/nginx.conf
hippo    15010 14857  0 Jul01 ?        00:00:12 nginx: worker process
# ./ngx-sample-lua-bt -p 15010 --luajit20 -t 5 > tmp.bt (-p 是要抓的进程的 pid --luajit20|--luajit51 是 luajit 的版本 -t 是探测的时间,单位是秒, 探测结果输出到 tmp.bt )
# ./fix-lua-bt tmp.bt > flame.bt  (处理 ngx-sample-lua-bt 的输出,使其可读性更佳)

其次,下载 Flame-Graphic 生成包:Github 地址,该工具包中包含多个火焰图生成工具,其中, stackcollapse-stap.pl 才是为 SystemTap 抓取的栈信息的生成工具

# stackcollapse-stap.pl flame.bt > flame.cbt
# flamegraph.pl flame.cbt > flame.svg

如果一切正常,那么会生成 flame.svg ,这便是火焰图,用浏览器打开即可。

你可能感兴趣的:(杂谈,SystemTap,火焰图)