Chinaunix首页 | 论坛 | 博客
  • 博客访问: 27221
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 320
  • 用 户 组: 普通用户
  • 注册时间: 2021-05-11 17:57
文章分类
文章存档

2021年(31)

我的朋友

分类: 信息化

2021-06-04 19:56:10

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

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

今天下午特地找了个物理机做了下示例。
支持和不支持的示例如下:



上图的上半部分是在云服务器上执行的,显示不出来cycles/instructions/branches了。
上图的下半部分是在物理主机上执行的,可以显示出来cycles/instructions/branches了。
这是一个区别,提醒大家在工作中注意一下。

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

perf是大部分linux上都带了的工具。一些前提条件就不提了,就是在编译内核的时候要各个选择什么的,琐碎得很。遇到这样的问题,我一般都扔给另一个兄弟去处理了。哈哈。
拿CPU消耗为例。这里最好带上-g的参数,这样可以看到类似下面这样的调用关系。这里可以看到符号表那一列有[k]或者[.],这里[k]的意思是内核态的;[.]的意思是用户态的。看你想看什么内容。


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


并且可以生成火焰图,如下所示,三步就可以生成。
perf script -i perf.data &> perf.unfold
perl stackcollapse-perf.pl perf.unfold &> perf.folded
perl flamegraph.pl perf.folded >perf.svg


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



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

之前有人讨论说,
初级的性能工程师是玩性能测试工具的。
中级的性能工程师是玩性能监控工具的。
高级的性能工程师是玩性能调试工具的。

我想说,这样划分是有问题的,应该这么说:
初级的性能工程师是玩工具的。(包括:压力工具、监控工具、调试工具)
中级的性能工程师是玩原理的。
高级的性能工程师是玩规划的。

我想说,工具其实都是浮云,理解原理之后,工具的使用只在想和不想之间。
而规划取决于是不是拍脑袋,拍脑袋的人贻害四方,要揍死为止。

阅读(499) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~