首页 > 其他分享 >性能分析之内核调试工具

性能分析之内核调试工具

时间:2023-04-03 17:37:06浏览次数:31  
标签:perf 调试 工程师 性能 内核 工具 pl

最近给自己定了些任务,把PPT重新编写一下,所有性能相关的话题都在计划的范围里。

最近这几天在整理调试工具的培训PPT,本来是在7D Group的云服务器上做实例的。结果发现有些数据显示不出来。看来现在的调试工具也是需要更新了,还要再出新版支持现在的云主机了。

今天下午特地找了个物理机做了下示例。

支持和不支持的示例如下:

性能分析之内核调试工具_云服务


上图的上半部分是在云服务器上执行的,显示不出来cycles/instructions/branches了。

上图的下半部分是在物理主机上执行的,可以显示出来cycles/instructions/branches了。

这是一个区别,提醒大家在工作中注意一下。


这里也把工具的使用稍提一下。这里以pef为例,其他工具如果有感兴趣的,也可以来探讨,像systemstap之类的。GDB最近就不打算整了,毕竟有点老,并且使用上感觉不是顺藤摸瓜型。


perf是大部分linux上都带了的工具。一些前提条件就不提了,就是在编译内核的时候要各个选择什么的,琐碎得很。遇到这样的问题,我一般都扔给另一个兄弟去处理了。哈哈。

拿CPU消耗为例。这里最好带上-g的参数,这样可以看到类似下面这样的调用关系。这里可以看到符号表那一列有[k]或者[.],这里[k]的意思是内核态的;[.]的意思是用户态的。看你想看什么内容。

性能分析之内核调试工具_Group_02

如果这里跟踪自己的应用程序,就可以直接去根据函数名找到了。


并且可以生成火焰图,如下所示,三步就可以生成。

perf script -i perf.data &> perf.unfold

perl stackcollapse-perf.pl perf.unfold &> perf.folded

perl flamegraph.pl perf.folded >perf.svg

性能分析之内核调试工具_调试工具_03

通过Brendan Gregg的写好的工具(stackcollapse-perf.pl ,flamegraph.pl),基本上可以满足大部分的要求。有兴趣和有能力的也可以自己写一下。Cor-Paul Bezemer也写过一个差分火焰图的工具flamegraphdiff,一个页面显示三个屏,点函数名时,其他图上也会高亮显示。如下所示:



性能分析之内核调试工具_Group_04


最近调试工具的整理告一段落,下面该重写其他内容了。


之前在7D Group的QQ群中有人讨论说,

初级的性能工程师是玩性能测试工具的。

中级的性能工程师是玩性能监控工具的。

高级的性能工程师是玩性能调试工具的。


我想说,这样划分是有问题的,应该这么说:

初级的性能工程师是玩工具的。(包括:压力工具、监控工具、调试工具)

中级的性能工程师是玩原理的。

高级的性能工程师是玩规划的。


我想说,工具其实都是浮云,理解原理之后,工具的使用只在想和不想之间。

而规划取决于是不是拍脑袋,拍脑袋的人贻害四方,要揍死为止。


标签:perf,调试,工程师,性能,内核,工具,pl
From: https://blog.51cto.com/u_15181572/6166922

相关文章

  • 性能分析之数据理解和数学基础
    PS:差不多完成了这一轮性能培训相关PPT的编写,一个最艰苦的部分也有了起色。对于每一个做性能分析的来说,不可跳过的一个提升阶段是对数据的理解。当初学者经历了工具的使用之后,下一步就面对了工具产出的数据,所以看得懂数据是必须的一个过程。性能分析中的数据理解:在数据理解上,有两个......
  • Python 自动化指南(繁琐工作自动化)第二版:十一、调试
    原文:https://automatetheboringstuff.com/2e/chapter11/既然你已经知道了足够多的知识来编写更复杂的程序,你可能会开始发现其中不那么简单的错误。这一章介绍了一些工具和技术,用于查找程序中错误的根本原因,帮助您更快、更省力地修复错误。套用程序员之间的一个老笑话,写代码占......
  • Linux内核简介
    下面几个特点是Unix强大的根本原因Unix很简洁,Unix仅仅提供了几百个系统调用并且有一个非常明确的设计目的。在Unix中,所有东西都被当作文件对待。Unix的内核和相关的系统工具软件是用C语言编写而成--正是这个特点使得Unix在各种硬件体系架构面前都具有惊人的移植能力。Unix......
  • 《渗透测试》信息打点-APP资产&知识产权&应用监控&静态提取&动态抓包&动态调试 2023 D
     案例1:名称获取APP信息(爱企查/小蓝本/七麦/点点)1、爱企查知识产权2、七麦&点点查名称https://www.xiaolanben.com/https://aiqicha.baidu.com/https://www.qimai.cn/https://app.diandian.com/ 案例2:URL网站备案查APP1、查备案信息在搜2、网站上有APP下载3、市场......
  • 《渗透测试》信息打点-小程序应用&解包反编译&动态调试&抓包&静态分析&源码架构 2023
     #小程序获取-各大平台&关键字搜索-微信-百度-支付宝-抖音头条 #小程序体验-凡科建站&模版测试上线测试:https://qz.fkw.com/参考:https://blog.csdn.net/qq_52445443/article/details/1223518651.主体结构小程序包含一个描述整体程序的app和多个描述各自页面的pa......
  • chrome模拟微信浏览器内核
     1、ios-QQ——内置浏览器UAMozilla/5.0(iPhone;CPUiPhoneOS7_1_2likeMacOSX)>AppleWebKit/537.51.2(KHTML,likeGecko)Mobile/11D257>QQ/5.2.1.302NetType/WIFIMem/282、ios-微信——微信内置浏览器UAMozilla/5.0(iPhone;CPUiPhoneOS7_1_2......
  • Spark视频王家林第119课: Spark Streaming性能优化:如何在生产环境下应对流数据峰值巨变
    Spark视频王家林第119课:SparkStreaming性能优化:如何在生产环境下应对流数据峰值巨变?本节讲解SparkStreaming性能优化:如何在生产环境下应对流数据峰值巨变?数据峰值及流量变化的不稳定有2个层面:1)第一个层面就是数据确实不稳定,例如晚上11点的时候访问流量特别高,相对其他时间而言表......
  • 从MLSQL性能设计到对架构师的重新思考
    从MLSQL性能设计到对架构师的重新思考五年前,我会认为,架构仅仅是针对一个可大可小的问题,把流程设计好,然后往里面填充合适的组件,从而最终解决这个问题。在这个过程中,区分架构师是否资深主要是在设计过程中对可扩展性,可维护性,以及成本权衡的把控能力。现在,我觉得架构不应该仅仅是这样......
  • 性能分析之调试工具——GDB之二
    由于上一个GDB的写的水份比较足,所以应看官们的要求,来写些具体的东西。其实网上有很多GDB的教程。我也搜索过。但是总是有那么一两个点缺少的。所以决定自己还是把工作中的记录一些下来。至少是具体工作中的实践操作。前几天因为遇到个redis的问题,所以编译了一下reids,并且做一些监控......
  • 性能分析之dubbo性能参数导致单cpu高
    今天记录一个小问题。问题不大,也没什么分析的逻辑可以讲的。但是想着比较典型,所以就写一写。某年某月的某一天,就像一张破碎的脸......不对,串台了。这一日,一个朋友发来个问题。听起来是个问题。一个线程忙,这种情况应该比较好处理吧。再看一下CPU的状态是什么样,记住这一步是看进程......