Linux性能分析工具perf基础使用介绍
perf是Linux内核内置的性能分析工具。从内核版本2.6.31开始出现该工具,如果没有安装,可以使用以下命令进行安装
yum -y install perf.x86_64
这里我们主要介绍一下如何使用,一些具体的背景知识,请查阅参考链接。
perf list列出能查看的性能事件,这里可以看做是事件的一些分类
#perf list -h
usage: perf list [hw|sw|cache|tracepoint|pmu|event_glob]
可以进一步查看hw(Hardware)分类的事件,只举例,不再列举
#perf list hwcpu-cycles OR cycles [Hardware event]instructions [Hardware event]cache-references [Hardware event]cache-misses [Hardware event]branch-instructions OR branches [Hardware event]branch-misses [Hardware event]stalled-cycles-frontend OR idle-cycles-frontend [Hardware event]stalled-cycles-backend OR idle-cycles-backend [Hardware event]ref-cycles [Hardware event]
使用perf stat
一个简单的c程序,foo1和foo2分别调用longa()100次和10次
# cat perf.c
//test.c
void longa()
{ int i,j; for(i = 0; i < 1000000; i++) j=i; //am I silly or crazy? I feel boring and desperate.
} void foo2()
{ int i; for(i=0 ; i < 10; i++) longa();
} void foo1()
{ int i; for(i = 0; i< 100; i++) longa();
} int main(void)
{ foo1(); foo2();
}
# cc perf.c
# perf stat ./a.outPerformance counter stats for './a.out':331.445189 task-clock (msec) # 0.999 CPUs utilized 0 context-switches # 0.000 K/sec 1 cpu-migrations # 0.003 K/sec 104 page-faults # 0.314 K/sec 571,668,722 cycles # 1.725 GHz [83.39%]241,223,545 stalled-cycles-frontend # 42.20% frontend cycles idle [83.41%]2,915,367 stalled-cycles-backend # 0.51% backend cycles idle [66.82%]550,449,588 instructions # 0.96 insns per cycle # 0.44 stalled cycles per insn [83.41%]110,422,677 branches # 333.155 M/sec [83.40%]6,461 branch-misses # 0.01% of all branches [83.10%]0.331874225 seconds time elapsed
以上也可以通过-e选项,指定需要分析的事件,也就是perf list列出的事件,多个事件可以通过逗号分隔。如下,添加 cache-references,cache-misses选项查看cache相关的事件。
#perf stat -e cache-references,cache-misses ./a.outPerformance counter stats for './a.out':10,718 cache-references 2,249 cache-misses # 20.983 % of all cache refs 0.340821068 seconds time elapsed
使用perf top
打开一个窗口,新建一个数据库,并用pgbech进行数据写入测试
hank=# \c postgres postgres
You are now connected to database "postgres" as user "postgres".
postgres=# create database perf_database;
CREATE DATABASE
postgres=# grant all on DATABASE perf_database to hank;
GRANT
postgres=# \q$pgbench -i perf_database -h 127.0.0.1 -U hank perf_database
dropping old tables...
NOTICE: table "pgbench_accounts" does not exist, skipping
NOTICE: table "pgbench_branches" does not exist, skipping
NOTICE: table "pgbench_history" does not exist, skipping
NOTICE: table "pgbench_tellers" does not exist, skipping
creating tables...
generating data...
100000 of 100000 tuples (100%) done (elapsed 0.06 s, remaining 0.00 s)
vacuuming...
creating primary keys...
done.执行压测pgbench
pgbench -M prepared -n -r -P 1 -h 127.0.0.1 -U hank perf_database -c 32 -j 32 -T 600
另外一个窗口使用perf top 进行查看,如下
perf top -agv -F 1000
命令参数见perf top --help,这里a指所有cpu,-g表示打开call-graph,-v表示展示更多信息,-F 表示频率
perf record和perf report使用,一般这一对命令一起使用
先看一个简单的例子:
还是上面c程序例子
编译
cc perf.c
收集
perf record -g ./a.out
生成报告
perf report -vg
可以看到foo1和foo2 在cpu使用上的比例,分别是90.76%和8.88%,基本符合代码,代码中一个循环100次,一个10次
再看一个postgresql使用pgbench的例子:
一个窗口执行pgbench
pgbench -M prepared -n -r -P 1 -U hank perf_database -c 32 -j 32 -T 600另外的窗口收集信息
收集20秒,当然也可以ctrl+c终止。
perf record -avg -- sleep 20生成报告
perf report -v -n -g
也可以使用–stdion查看
perf report -v -n -g --stdio
如下图
参考:
https://www.ibm.com/developerworks/cn/linux/l-cn-perf1/
https://www.ibm.com/developerworks/cn/linux/l-cn-perf2/
https://github.com/digoal/blog/blob/master/201611/20161129_01.md
Linux性能分析工具perf基础使用介绍相关推荐
- 2022最火的Linux性能分析工具--perf
►►► 介绍 perf是Linux性能分析中,比较常用的一款工具.它基于时间采集原理,以性能事件为基础,支持针对CPU处理器相关性能指标与操作系统相关性能指标的性能分析.常被用来查找.定位源码级性能问 ...
- linux 性能分析工具perf
perf 性能监控分析工具 perf 工具下载 https://cdn.kernel.org/pub/linux/kernel/tools/perf/v5.9.0/perf-5.9.0.tar.gz ...
- linux 性能分析工具——perf
Perf 简介 Perf 是用来进行软件性能分析的工具. 通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计.它不但可以分析指定应用程序的性能问题 (per t ...
- linux 系统级性能分析工具 perf 的介绍与使用
目录 1. 背景知识 1.1 tracepoints 1.2 硬件特性之cache 2. 主要关注点 3. perf的使用 3.0 perf引入的overhead 3.1 perf list 3.2 ...
- 系统级性能分析工具perf的介绍与使用
测试环境:Ubuntu16.04 + Kernel:4.4.0-31 apt-get install linux-source cd /usr/src/tools/perf make &&am ...
- java perf_系统级性能分析工具perf的介绍与使用
测试环境:Ubuntu16.04 + Kernel:4.4.0-31 系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化. 性能剖析的目标是寻找性能瓶颈, ...
- linux 解析pdf下载工具,Linux高级系统级性能分析工具-perf.pdf
Linux高级系统级性能分析工具-perf Linux 的系统级性能剖析工具‐perf (二) 承刚 TAOBAO Kernel Team chenggang.qin@ 第三章 Perf top ...
- Linux 性能分析工具汇总
Linux 性能分析工具汇总 我从cnaaa.com购买了服务器. 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章.本文也可以作为检验基础知识的指标,另外文章涵盖了一个系 ...
- 【开发工具】【perf】性能分析工具perf的编译和使用说明
源码位置: kernel/tools/perf 配置内核以支持perf make xxx_defconfig make menuconfig设置以下配置: CONFIG_HAVE_PERF_EVENT ...
最新文章
- UI设计培训之:5个小技巧快速学会PS抠图
- ArrayList的实现及原理
- 运维调试记录:Opendaylight铍版本开发环境搭建流程
- ORMLite框架 的使用方法---给你的数据库操作插上翅膀
- Hadoop入门经典:WordCount
- linux shutdown 命令 关机 重启
- D3 dataset - what is usage of key function in data
- ubuntu mysql innodb_Ubuntu MYSQL环境搭建
- java 发送邮件添加附件_java邮件自动发送时添加网络附件
- ios 请在设置中打开相机权限_在iOS中请求摄像头权限对话框启动(Prime权限)
- 1000道Python题库系列分享六(40道)
- python实现50行代码_利用 50行Python 代码构建一个在线文本生成器!
- smb协议讲解_SMB/CIFS协议解析
- numpy部份函数或命令用法(不定时更新)
- ​华为回应出售手机业务传闻:假消息;微软将ChatGPT整合到更多工具中:不用写代码就能开发应用;苹果更新Mac产品线|极客头条...
- qtablewidget翻页禁止_PyQt—QTableWidget实现翻页功能
- 2021最新短信验证码接收平台收费价格对比「二」:亿佰云、秒嘀科技、极光短信、华信云通信
- SQL中去除重复数据的几种方法,我一次性都告诉你​
- 阿里云高级技术专家白常明:边缘云的技术挑战和应用创新
- 人体感应(红外感应)
热门文章
- odbc An unsupported operation was attempted
- 【今日分享】官方实例用python调用OpenAI tahcTPG的APIkey生成智能问答
- 软考分类精讲-知识产权与标准化
- 如何用纯 CSS 创作一只愤怒小鸟中的绿猪
- C++实验3-税收计算
- U-BOOT中mmc命令简介
- 从零开始足球战术分析
- 码绘:使用p5.js进行简单的作画
- win7 共享计算机 网络密码怎么设置,Win7无线网络共享设置方法丨Win7无线网络共享设置方法图解...
- CSS解决hover选择器生硬效果