linux性能分析工具之火焰图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux性能分析工具之火焰图相关的知识,希望对你有一定的参考价值。

一.环境

1.1 [email protected]:~$ uname -a

Linux jello 4.4.0-98-generic #121-Ubuntu SMP Tue Oct 10 14:24:03 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

1.2 [email protected]:~$ lsb_release -a

Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial

二.准备工作.

2.1安装systemtap (火焰图依赖于此工具)

sudo apt-get install systemtap

2.2 查找内核对应的debug包

[email protected]:~$ uname -r
4.4.0-98-generic

那么接下来就是去http://ddebs.ubuntu.com/pool/main/l/linux/下载对应的debug包,找4.4.0-98-generic一致的

2.3 下载对应的debug包

wget http://ddebs.ubuntu.com/pool/main/l/linux/linux-image-4.4.0-98-generic-dbgsym_4.4.0-98.121_amd64.ddeb  (这是笔者自己找到的对应下载路径)

2.4 安装debug包

sudo dpkg -i linux-image-4.4.0-98-generic-dbgsym_4.4.0-98.121_amd64.ddeb

2.5 安装nginx

sudo apt-get install nginx

此时在浏览器中输入localhost即可出现以下信息表明安装ok

Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

 

2.5 编写systemtap脚本nginx.systemtap,内容如下:

global s;
global quit=0;
probe timer.profile {
if (pid() == target()){
if (quit) {
foreach (i in s-) {
print_ustack(i);
printf("\t%d\n",@count(s[i]));
}
exit();
}
else {
s[ubacktrace()] <<< 1;
}
}
}
probe timer.s(20){
quit = 1
}

2.6 使用systemtap

sudo stap --ldd -d /usr/sbin/nginx --all-modules -D MAXMAPENTRIES=256 -D MAXACTION=20000 -D MAXTRACE=100 -D MAXSTRINGLEN=4096 -D MAXBACKTRACE=100 -x 2082 nginx.systemtap --vp 0001 > nginx.out

各参数解析:

--ldd,添加通过ldd解析出来的所有共享库符号表信息以便为probe到的用户空间二进制提供信息或者以-d选项列出来,注意:这会使得probe模块相当的大

-d /usr/sbin/nginx,为给定的模块(这里是nginx)添加符号表信息到内核对象模块,这可能使能这些模块或者程序的象征性traceback,即使他们没有显式probe到他们里面

--all-modules,相当于指定所有当前被加载的模块指定‘-dkernel‘和‘-d‘

 

 

未写完,待续...

 
























以上是关于linux性能分析工具之火焰图的主要内容,如果未能解决你的问题,请参考以下文章

使用linux perf工具生成java程序火焰图

Linux程序性能分析和火焰图

perf + 火焰图分析程序性能

[转]perf + 火焰图分析程序性能

perf + Flame Graph火焰图分析程序性能

033_linux操作系统火焰图探测系统性能