【Ubuntu】 Perf工具的使用
一、perf工具的安装
sudo apt-get install linux-tools-common
sudo apt-get install linux-tools-"$(uname -r)"
sudo apt-get install linux-cloud-tools-"$(uname -r)"
sudo apt-get install linux-tools-generic
sudo apt-get install linux-cloud-tools-generic
perf --version #验证是否安装成功
二、火焰图生成工具的下载
git clone https://github.com/brendangregg/FlameGraph.git
无需编译等工作
三、perf工具的使用以及火焰图的生成
cd ~/Perf #保存perf获取的数据,与FlameGraph同目录下
sudo perf record -g -F 99 -ag -p 40789 -- sleep 20 #跟踪进程40789性能监控,每秒采样99次,时长20s
-F 99:每秒采样99次
-p:指定进程id
-g:记录调用栈
sleep 20:持续采样20s
sudo perf script --header > out.perf01
../FlameGraph/stackcollapse-perf.pl out.perf01 | ../FlameGraph/flamegraph.pl > perf-20s.svg #生成火焰图
perf相关命令
| 序号 | 命令 | 作用 |
|---|---|---|
| 1 | annotate | 解析perf record生成的perf.data文件,显示被注释的代码。 |
| 2 | archive | 根据数据文件记录的build-id,将所有被采样到的elf文件打包。利用此压缩包,可以再任何机器上分析数据文件中记录的采样数据。 |
| 3 | bench | perf中内置的benchmark,目前包括两套针对调度器和内存管理子系统的benchmark。 |
| 4 | buildid-cache | 管理perf的buildid缓存,每个elf文件都有一个独一无二的buildid。buildid被perf用来关联性能数据与elf文件。 |
| 5 | buildid-list | 列出数据文件中记录的所有buildid。 |
| 6 | diff | 对比两个数据文件的差异。能够给出每个符号(函数)在热点分析上的具体差异。 |
| 7 | evlist | 列出数据文件perf.data中所有性能事件。 |
| 8 | inject | 该工具读取perf record工具记录的事件流,并将其定向到标准输出。在被分析代码中的任何一点,都可以向事件流中注入其它事件。 |
| 9 | kmem | 针对内核内存(slab)子系统进行追踪测量的工具 |
| 10 | kvm | 用来追踪测试运行在KVM虚拟机上的Guest OS。 |
| 11 | list | 列出当前系统支持的所有性能事件。包括硬件性能事件、软件性能事件以及检查点。 |
| 12 | lock | 分析内核中的锁信息,包括锁的争用情况,等待延迟等。 |
| 13 | mem | 内存存取情况 |
| 14 | record | 收集采样信息,并将其记录在数据文件中。随后可通过其它工具对数据文件进行分析。 |
| 15 | report | 读取perf record创建的数据文件,并给出热点分析结果。 |
| 16 | sched | 针对调度器子系统的分析工具。 |
| 17 | script | 执行perl或python写的功能扩展脚本、生成脚本框架、读取数据文件中的数据信息等。 |
| 18 | stat | 执行某个命令,收集特定进程的性能概况,包括CPI、Cache丢失率等。 |
| 19 | test | perf对当前软硬件平台进行健全性测试,可用此工具测试当前的软硬件平台是否能支持perf的所有功能。 |
| 20 | timechart | 针对测试期间系统行为进行可视化的工具 |
| 21 | top | 类似于linux的top命令,对系统性能进行实时分析。 |
| 22 | trace | 关于syscall的工具。 |
| 23 | probe | 用于定义动态检查点。 |
火焰图的含义:
y 轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。
x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。注意,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。
火焰图就是看顶层的哪个函数占据的宽度最大。只要有"平顶"(plateaus),就表示该函数可能存在性能问题。
颜色没有特殊含义,因为火焰图表示的是 CPU 的繁忙程度,所以一般选择暖色调。
【Ubuntu】 Perf工具的使用的更多相关文章
- 使用linux perf工具生成java程序火焰图
pre.cjk { font-family: "Nimbus Mono L", monospace } p { margin-bottom: 0.1in; line-height: ...
- Perf工具
前段时间Linux下用nmon监控程序的运行,发现CPU的使用率很高,系统态Sys的比例很高.程序的速度不是很快,怀疑和上面的原因有关. 分别使用perf record,perf report和top ...
- SUSE11sp3 perf工具安装过程
工作环境是suse11sp3系统(内核版本3.0.101-0.47.90-default),需要通过perf排查系统性能问题,但是默认是没有perf工具的. 在网上搜索了一下,需要linux-tool ...
- 使用perf工具导致系统hang死的原因
[perf工具导致系统hang住的原因是触发了低版本kernel的bug] 今天在测试服务器做压测,运行perf record做性能分析时,系统再次hang住了,这次在系统日志中记录了一些有用的信息, ...
- perf工具crash的问题
perf抓取时系统crash的情况.找前同事了解到perf工具导致系统crash的一种情况, perf工具默认是使用cycles,这个硬件事件是使用NMI,可能会导致内核错误. 之前文档上的perf命 ...
- ubuntu截图工具
ubuntu截图工具 首先,我们用apt-get install 去安装一个,scrot 主要用在命令行下,它使用 imlib2 库来抓取并保存图像 sudo a ...
- ubuntu下载工具uget和aria2
一直想在ubuntu下找到个和迅雷差不多的下载工具.在网上找到了. 这篇文章完全是抄袭整理网上的. 我的系统版本是ubuntu14.04. 1.安装uget和aria2 sudo apt-get in ...
- 使用linux kernel代码编译perf工具
环境:Qemu + ARMv8 perf是一款综合性分析工具,大到系统全局性性能,再小到进程线程级别,甚至到函数及汇编级别. 在内核源码目录下执行编译脚本: #!/bin/bash cross_com ...
- Ubuntu截图工具gnome-screenshot使用教程
Ubuntu自带的截图工具非常好用,可以自已设置各种截图的快捷键,下面我们一起来了解一下这个截图工具gnome-screenshot Ubuntu自带的截图工具非常好用,可以自已设置各种截图的快捷 ...
- Ubuntu小工具
更好的工具 更多的界面风格: https://github.com/anmoljagetia/Flatabulous 更丰富的终端zsh: https://github.com/robbyrussel ...
随机推荐
- 数字子串的和 str2int
UVA1673 这道题可以用广义后缀自动机,不过陈锋老师给我们讲了一个巧妙地方法,使得这道题可以用普通的后缀自动机做. 题目大意: 给出NNN个完全由数字组成的字符串.计算将这个NNN的字符串的所有子 ...
- 【Win11】Win11家庭版升级专业版
1.将已激活的Win11家庭版升级成未激活的Win11专业版:输入密钥[BCQNW-3VWYB-4V7QD-M6R2B-7MH26] 2.将未激活的Win11专业版升级成已激活的专业版 :输入密钥[6 ...
- Testlink for linux by Xampp
Testlink 1.环境: (1)需要的环境配置: ①Linux system. ②Mysql ③apache ④Php (2)上面的2,3,4我们使用简易的Xamppp集成的环境,下面是安装配置x ...
- 手机设置fiddler代理后无法上网
方法一:打开防火墙设置 参考链接:https://www.jianshu.com/p/b122eab059c4 1.打开控制面板->系统和安全->Windows Defender 防火墙, ...
- Mxgraph
1. Hello World! Creating an HTML page that links the mxGraph client JavaScript, Creating a container ...
- Servlet(三)
dom4j 元素对象获取指定子元素 element("名字") ServletConfig: 1.在Servlet运行时,需要获取servlet的配置信息 可以使用servlet ...
- samba缓存问题
samba 在第一次登录时,会在windows上缓存着登录密码,当你重新修改samba服务端的密码, 再次登录时,windows会自动用缓存的旧密码登录,导致的登录失败.
- 前端复习之JavaScript(ECMAScript5)
啦啦啦啦啦啦啦啦绿绿绿绿绿绿 1 1.JavaScript: 2 前段三大语言:HTML CSS js 3 HTML:专门编写网页内容的语言 4 CSS:专门编写网页样式的语言 5 js:专门编写网页 ...
- Sqoop连接数据库MySQL报错
1.问题描述 (1)问题示例: [Hadoop@master TestDir]$ sqoop list-databases --connect jdbc:mysql://master:3306/ -- ...
- 115、商城业务---分布式事务---使用Springboot提供的Seata解决分布式事务
https://seata.io/zh-cn/ seata使用Seata AT模式控制分布式事务的步骤: 1.每一个想控制分布式事务的服务对应的数据库都需要创建一个UNDO_LOG 表 CREATE ...