Debug_性能分析工具_Perf +火焰图

这篇具有很好参考价值的文章主要介绍了Debug_性能分析工具_Perf +火焰图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. perf 作用

2. perf 安装

3. perf 使用示例

3.1 耗时统计,画出火焰图

1. 下载绘制火焰图的开源pl代码

2. 执行以下命令

3. 用浏览器打开svg文件,看当前进程各子模块耗时占比


1. perf 作用

Perf 是Linux kernel自带的系统性能优化工具。 Perf的优势在于与Linux Kernel的紧密结合,它可以最先应用到加入Kernel的new feature。pef可以用于查看热点函数,查看cashe miss的比率,从而帮助开发者来优化程序性能,也可以分析程序运行期间发生的硬件事件,比如 instructions retired ,processor clock cycles 等;您也可以分析
软件事件,比如 Page Fault 和进程切换,这使得 Perf 拥有了众多的性能分析能力,

通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计。它不但可以分析指定应用程序的性能问题 (per thread),也可以用来分析内核的性能问题,当然也可以同时分析应用代码和内核,从而全面理解应用程序中的性能瓶颈。

举例来说,使用 Perf 可以计算每个时钟周期内的指令数,称为 IPC,IPC 偏低表明代码没有很好地利用 CPU。Perf 还可以对程序进行函数级别的采样,从而了解程序的性能瓶颈究竟在哪里等等。Perf 还可以替代 strace,可以添加动态内核 probe 点,还可以做 benchmark 衡量调度器的好坏。。。

它和Oprofile性能调优工具等的基本原理都是对被监测对象进行采样,最简单的情形是根据 tick 中断进行采样,即在 tick 中断内触发采样点,在采样点里判断程序当时的上下文。假如一个程序 90% 的时间都花费在函数 foo() 上,那么 90% 的采样点都应该落在函数 foo() 的上下文中。运气不可捉摸,那么只要采样频率足够高,采样时间足够长,那么以上推论就比较可靠。因此,通过 tick 触发采样,我们便可以了解程序中哪些地方最耗时间,从而重点分析。

上面介绍了perf的原理,“根据 tick 中断进行采样,即在 tick 中断内触发采样点,在采样点里判断程序当时的上下文”,我们可以改变采样的触发条件使得我们可以获得不同的统计数据,例如 以时间点 ( 如 tick) 作为事件触发采样便可以获知程序运行时间的分布;以 cache miss 事件触发采样便可以知道 cache miss 的分布,即 cache 失效经常发生在哪些程序代码中。如此等等。

2. 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

若安装出现 类似 “Unable to locate package linux-cloud-tools-4.4.50-040450-generic” 现象,

则 解决方法:

1).  更换软件源, 然后 sudo apt-get update, 以及 sudo apt-get upgrade, 然后 再次安装

2).  源码安装

sudo apt-get install linux-source
cd /usr/src/linux-source-4.4.0/tools/perf
make
make install
sudo cp ./perf /usr/bin/perf

测试是否安装成功:perf --version, 例如

johnpc@john:~$ perf --version
perf version 5.15.99

3. perf 使用示例

3.1 耗时统计,画出火焰图

1. 下载绘制火焰图的开源pl代码

地址:GitHub - brendangregg/FlameGraph: Stack trace visualizer

主要使用其中的两个脚本:stackcollapse-perf.pl 和 flamegraph.pl 

2. 执行以下命令

top #查看你要监控的进程的PID, 此处比如wps的PID为 171622

sudo perf record -F 99 -a -g -p 171622 #在当前目录下生成 perf.data 记录文件
sudo perf script -f > wps.perf         # 将 perf.data文件转换成 xxx.perf 文件

sudo /path-to/stackcollapse-perf.pl wps.perf > wps.folded #从 xxx.perf文件生成 xxx.folded文件
sudo /path-to/flamegraph.pl wps.perf > wps.svg            #从 xxx.folded 文件生成 xxx.svg 制图文件

perf record 各参数的含义:

-F 99:每秒采样99
-a:记录系统范围内所有cpu的集合
-g:记录调用栈
-p:指定进程id
--sleep n:n秒后停止

-f :File perf.data not owned by current user or root (use -f to override)

3. 用浏览器打开svg文件,看当前进程各子模块耗时占比

Debug_性能分析工具_Perf +火焰图,Debug,系统安装,debug,系统性能分析,调试工具
 点击每个长方块,可以进入看到其子模块的耗时占比。

Debug_性能分析工具_Perf +火焰图,Debug,系统安装,debug,系统性能分析,调试工具

如果svg图出现 unknown 函数,使用如下命令

sudo perf record -e cpu-clock --call-graph dwarf -p pid

范例:perf record -e cpu-clock -g -p 29713 --call-graph dwarf 

使用–call-graph dwarf 之后record生成的perf.data很大,大家生成的时候要时刻注意设备剩余空间是否足够。

参考:

perf性能分析工具使用分享 - 知乎

【Ubuntu】Perf工具的使用 - 第一PHP社区

系统性能分析工具--Perf - 知乎

使用Flame Graph进行系统性能分析

Flame Graphs文章来源地址https://www.toymoban.com/news/detail-528041.html

到了这里,关于Debug_性能分析工具_Perf +火焰图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux CPU 性能分析工具火焰图(Flame Graphs)认知

    博文内容为 《BPF Performance Tools》 读书笔记整理 详细了解小伙伴可以访问作者官网: https://www.brendangregg.com/flamegraphs.html 有油管上分享的作者在 USENIX ATC 2017 的视屏 理解不足小伙伴帮忙指正 不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经

    2024年02月20日
    浏览(58)
  • 使用火焰图进行性能分析(一)

    分析函数执行的频度; 分析哪些函数经常阻塞; 分析哪些函数频繁操作内存; 火焰图的主要特点: 每一列代表一个调用栈,每个格子代表一个函数; 纵轴呈现出栈的深度,按照各函数的调用关系自下而上排列; 最顶端的格子代表采样时正在占用CPU的函数; 横轴:采集到的

    2024年02月05日
    浏览(69)
  • Linux系统运维:性能监视和分析工具sar命令详解

    目          录 一、sar工具介绍 二、sar工作原理 (一)原理概述 (二)sar数据收集器 三、sar命令语法 四、sar主要功能介绍 (一)功能概述 (二)CPU统计数据 (三)磁盘I/O统计数据 (四)网络统计数据 1、是使用-n DEV选项的sar输出 2、关于网络错误的信息可以用sar -n EDE

    2024年02月21日
    浏览(73)
  • 辅助性能优化——长安链性能分析工具原理及用法

    如何提升区块链系统性能是很多开发者都会关注的事,但是有些对区块链并非十分熟悉的开发者可能会感到没有头绪。长安链提供了性能分析工具帮助开发者梳理系统耗时,优化系统性能。下面对长安链性能分析工具原理及使用进行介绍。 time_counter.sh是长安链性能分析工具,

    2024年02月13日
    浏览(57)
  • unity 渲染性能分析工具

    既然要优化,肯定要有个目标: pc上一般要求:一秒渲染60帧 移动端:一秒渲染30帧 这应该是最低的要求,如果游戏运行时,游戏帧率有变化,人眼能够明显的感觉到帧率下降。 优化的首要规则是找到性能问题的所在。 一般出现问题不是在cpu就是gpu。 unity内置了性能检测工

    2024年02月03日
    浏览(57)
  • Lighthouse前端性能分析工具

    我们多数性能测试,基本上针对接口的性能测试,很少涉及到前端页面的性能测试。 但影响用户体验的因素除了后端接口数据的返回,还有前端页面的渲染等等。 所以我们除了在开发的过程中注意代码的质量,同时还需要专业的网站测试工具辅助,让我们知道自己的网页还

    2024年02月16日
    浏览(40)
  • 前端性能分析工具——Lighthouse

    1、谷歌插件lighthouse的基本介绍 Lighthouse 是一个网站性能测评工具, 它是 Google Chrome 推出的一个开源自动化工具,能够对 PWA 和网页多方面的效果指标进行评测,并给出最佳实践的建议以帮助开发者改进网站的质量。它的使用方法也非常简单,我们只需要提供一个要测评的网

    2024年02月13日
    浏览(44)
  • 前端性能分析工具-Lighthouse

    对于前端开发人员来说,除了实现页面功能外,那就是页面的性能响应问题也要关注。同样对于测试人员在进行性能测试时,也要关注前端页面的性能指标。测试前端性能市面上可以用到的工具也比较多,比如可以用 HttpWatch 进行页面的抓取与分析,或者也可以使用抓包工具

    2024年02月11日
    浏览(59)
  • 【Lighthouse前端性能分析工具】

    我们多数性能测试,基本上针对接口的性能测试,很少涉及到前端页面的性能测试。 但影响用户体验的因素除了后端接口数据的返回,还有前端页面的渲染等等。 所以我们除了在开发的过程中注意代码的质量,同时还需要专业的网站测试工具辅助,让我们知道自己的网页还

    2024年02月12日
    浏览(43)
  • MySQL性能分析工具的使用

    当我们遇到数据库调优问题的时候,该如何思考呢?这里把思考的流程整理成下面这张图。 整个流程划分成了 观察( Show status ) 和 行动( Action ) 两个部分。字母 S 的部分代表观察(会使用相应的分析工具),字母 A 代表的部分是行动(对应分析可以采取的行动)。    

    2024年02月09日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包