火焰图工具 SystemTap
1. 安装 SystemTap
1. 首先安装内核开发包和调试包:
# rpm -ivh kernel-debuginfo-common-($version).rpm
# rpm -ivh kernel-debuginfo-($version).rpm
# rpm -ivh kernel-devel-($version).rpm
其中 $version 使用 linux 命令 uname -a 查看,需要保证内核版本和上述开发包版本一致才能使用 systemtap。
centos 7 的 debuginfo 相关 rpm 包可以在如下链接下载:debuginfo.centos.org/7/x86_64。
kernel-devel-uanme-r 的 rpm 在该链接中下载:kernel-devel-uname-r
2. 安装 systemtap
# yum install -y systemtap
# ...
# 测试systemtap安装成功否:
# stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}'
# 出现如下信息表示安装成功:
Pass 1: parsed user script and 472 library scripts using 239992virt/41844res/3436shr/38528data kb, in 430usr/30sys/618real ms.
Pass 2: analyzed script: 1 probe, 1 function, 7 embeds, 0 globals using 398364virt/193628res/2916shr/196900data kb, in 2940usr/1090sys/5956real ms.
Pass 3: translated to C into "/tmp/stapxURoCZ/stap_f5b7f67a728f30f97a97a649622c8cb0_2689_src.c" using 398364virt/193968res/3256shr/196900data kb, in 30usr/90sys/144real ms.
Pass 4: compiled C into "stap_f5b7f67a728f30f97a97a649622c8cb0_2689.ko" in 10490usr/1940sys/14306real ms.
Pass 5: starting run.
read performed
Pass 5: run completed in 10usr/30sys/329real ms.
2. 火焰图绘制
下载工具包:openresty/openresty-systemtap-toolkit,该工具包即是用 perl 生成 stap 探测脚本并运行的脚本,如果是要抓 Lua 级别的情况,使用工具 ngx-sample-lua-bt。
下载工具包:brendangregg/FlameGraph,该工具包中包含多个火焰图生成工具,其中,stackcollapse-stap.pl 才是为 SystemTap 抓取的栈信息的生成工具。
2.1 抓取 C 级别的运行状态
1. 首先获取 nginx worker 进程的 pid
# ps -ef | grep nginx
root 1118 1 0 09:53 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
root 5693 10721 0 16:02 pts/1 00:00:00 grep --color=auto nginx
root 6682 1118 0 11:15 ? 00:00:21 nginx: worker process
2. 执行如下指令
参数 -p 表示要抓取的进程id,-t是探测的时间,单位是秒,-u表示抓取用户空间,对应的-k表示内核空间,探测结果输出到 tmp.bt:
# ./sample-bt -p 6682 -t 20 -u > tmp.bt
3. 生成火焰图:
# cd xxx/FlameGraph/
# ./stackcollapse-stap.pl flame.bt > flame.cbt
# ./flamegraph.pl flame.cbt > flame.svg
用浏览器打开生成的火焰图 flame.svg 如下图:

火焰图工具 SystemTap的更多相关文章
- pg_flame postgresql EXPLAIN ANALYZE 火焰图工具
pg_flame 是golang 编写的一个将pg的EXPLAIN ANALYZE 转换为火焰图,使用简单 以下是一个简单的demo 环境准备 docker-compose 文件 version: ...
- linux 内核分析工具 Dtrace、SystemTap、火焰图、crash等
<< System语言详解 >> 关于 SystemTap 的书. 我们在分析各种系统异常和故障的时候,通常会用到 pstack(jstack) /pldd/ lsof/ tc ...
- 动态追踪技术(中) - Dtrace、SystemTap、火焰图
http://openresty.org/cn/presentations.html http://weibo.com/agentzh?is_all=1 http://openresty.org/po ...
- Java程序性能定位工具-火焰图
Java程序性能定位工具-火焰图 前言 Java火焰图是一种新的查看CPU利用率方式.今天就带大家一起使用来自Google大神的工具来生成火焰图.火焰图非常的直观,问题一目了然,希望有一天它能成为JA ...
- Skynet服务热点火焰图分析
最近花了一周时间对场景服务进行热点分析,利用以前的火焰图工具做了一点微小的贡献,分享下心得(仓库地址在https://github.com/spin6lock/skynet_systemtap_set ...
- 火焰图(Flame Graphs)的安装和基本用法
火焰图(Flame Graphs) 一.概述: 火焰图(flame graph)是性能分析的利器,通过它可以快速定位性能瓶颈点. perf 命令(performance 的缩写)是 Linux 系统原 ...
- 如何利用火焰图定位 Java 的 CPU 性能问题
常见 CPU 性能问题 你所负责的服务(下称:服务)是否遇到过以下现象: 休息的时候,手机突然收到大量告警短信,提示服务的 99.9 line 从 20ms 飙升至 10s: 正在敲代码实现业务功能 ...
- linux系统分析工具续-SystemTap和火焰图(Flame Graph)
本文为网上各位大神文章的综合简单实践篇,参考文章较多,有些总结性东西,自认暂无法详细写出,建议读文中列出的参考文档,相信会受益颇多.下面开始吧(本文出自 “cclo的博客” 博客,请务必保留此出处ht ...
- linux性能分析工具之火焰图
一.环境 1.1 jello@jello:~$ uname -a Linux jello 4.4.0-98-generic #121-Ubuntu SMP Tue Oct 10 14:24:03 UT ...
随机推荐
- vue -- 数组过滤 filter (vue 表格)
如下图: 左边表格滑动滚轮,可以自动赋值右边表格: 现在是后台只有一个接口,把整个页面的数据全部返回出来了, 左边表格滑动到每一项时显示右边表格内容,但是需要code相同: 问题: 右边表格 ...
- 利用 CAKeyframeAnimation实现任意轨迹移动
自定义 View,实现以下方法即可 - (void)drawRect:(CGRect)rect { // Drawing code // 初始化UIBezierPath UIBezierPath ...
- rabbitMQ centos7 的安装
安装erlang 1:下载erlang. http://erlang.org/download/otp_src_20.3.tar.gz 2:把erlang压缩包上传到Linux服务器上,并解压.我的解 ...
- Springboot整合cxf后不能访问controller,不能访问接口
参考版本 springboot 1.4.X <=========> cxf-spring-boot-starter-jaxws 3.1.X springboot 1.5.X <=== ...
- SecureCRT进行端口转发
总共3台机器:my电脑.跳转机器(外网).内网服务器. 首先配置至跳板机(150.236.223.72:22)的连接: 配置完成后选择Connect连接至跳板机,输入密码后可选择“Save p ...
- linux网络编程之简单的线程池实现
转眼间离15年的春节越来越近了,还有两周的工作时间貌似心已经不在异乡了,期待与家人团聚的日子,当然最后两周也得坚持站好最后一班岗,另外期待的日子往往是心里不能平静的,越是想着过年,反而日子过得越慢,于 ...
- k8s的etcd
etcd是一个高可用的分布式键值(key-value)数据库.etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现. etcd是一个服务发现系统,具备以下的特点: 简单:安装配置简单, ...
- FontLab
FontLab 字体制作软件
- 设置input 中placeholder的样式
::-webkit-input-placeholder { /* Chrome/Opera/Safari */ position: relative; top: 4px; } ::-moz-place ...
- 7月新的开始 - Axure学习05 - 元件库的创建
元件库的创建 元件库的创建.载入.编辑和删除等操作 元件库的后缀名名:.rplib 学习结果: 实现iPhone6的原型图 分辨率是 1080*1920,现在我们按比例缩小去实现(360*640)