之前小弟一直在宣传推广火焰图,结果是很多童鞋凡事都用火焰图。说实话,火焰图特别适合分析运行时热点(无论是on-cpu、off-cpu、还是内存等,火焰图的想象力可以无穷放大),但是你要分析一个的如果是一个时序问题,比如系统启动的慢、一个软件启动的慢,用火焰图固然可能有一点帮助,但是帮助肯定很微妙。
因为这种某个过程慢的问题,是一个时序问题。不是一个运行时热点的问题,所以你最重要的是画出来你的这个过程的时序图。这里面说不定有i/o的牵绊,说不定就是狂占cpu,说不定谁傻不拉几地在sleep。
linux界有一个杀手级分析linux本身启动慢的工具,叫做bootchart,它其实把启动过程中进程的io,cpu占用情况进行了描述。注意这类图都有一个共同特点,横轴是时间,纵轴是cpu、线程等的状态(运行、睡眠、io什么的)。
bootchart确实有利于分析开机过程,但是你平时某个软件启动慢呢?或者更广泛地说,某个特定过程特别慢呢?或者更加更加广泛地说,我写的程序在系统里面是怎么在运行,几个线程怎么在跑?我们则要描绘出它的时序图。
这个时候,我们可以用perf的timechart,比如,下面我们写一个很简单的包含了2个线程周期循环做事情和睡眠的代码:
我们运行上面这个a.out,下面我们用perf录制系统的sched情况:
~$ sudo perf sched record -a^c[ perf record: woken up 1 times to write data ][perfrecord:capturedandwrote1.909mbperf.data(9039samples)]
接下来生成timechart:
~$ sudo perf timechartwritten6.4secondsoftracetooutput.svg.
我们用firefox打开这个时序图:
时序图上我们看到了我的8个cpu的运行情况,以及a.out中2个线程一会儿蓝色(running)一会灰色(sleeping)的情况。我们看到,系统差不多在用cpu2和cpu7跑我们a.out里面的2个占用cpu比较高线程。
不过,这类工具里面压轴的不是perf timechart,说实话,有点太粗糙了!我们来看看大名鼎鼎的内核鲨鱼——kernelshark。
下面我们用trace-cmd来录制sched相关的trace点:
~$ sudo trace-cmd record -e 'sched_wakeup*' -e sched_switch -e 'sched_migrate*'hit ctrl^c to stop recording^ccpu0 data recorded at offset=0x60e000 61440 bytes in sizecpu1 data recorded at offset=0x61d000 184320 bytes in sizecpu2 data recorded at offset=0x64a000 24576 bytes in sizecpu3 data recorded at offset=0x650000 12288 bytes in sizecpu4 data recorded at offset=0x653000 12288 bytes in sizecpu5 data recorded at offset=0x656000 86016 bytes in sizecpu6 data recorded at offset=0x66b000 172032 bytes in sizecpu7 data recorded at offset=0x69500028672bytesinsize
用kernelshark来打开录制的点:
~$ kernelshark trace.datloadingtrace.dat
看到下面的图形界面:
我们可以在ui上面进行各种操作,比如我们关注a.out,我们就选择task:
我们得到这样的视图:
比如我图上画的那个点,a.out的颜色发生了变化,而下面的文字则表达了发生变化的原因是调度,调度的目标是swapper,这个调度点发生在cpu4上面:
如果你期待的是一个横轴是时间,纵轴是每个线程、cpu在某个时间段里面在干什么的图,kernelshark,你当然值得拥有。
原文标题:宋宝华:当linux内核遭遇鲨鱼—kernelshark
文章出处:【微信公众号:linuxer】欢迎添加关注!文章转载请注明出处。
微软Chromium版Edge Canary功能调整
MIT:使用深度卷积神经网络提高稀疏3D激光雷达的分分辨率
华为linux和windows的区别_华为linux系统好用吗
拍照KING线下引关注,陈伟霆和李易峰“现身””网红地铁站”
5G来了还有必要换4G手机,机友一致赞同
杀手级分析——bootchart
魅族16X新品发布会确定 9月19日一起见证
移动设备电池续航如何突破
Yaskawa安川电机:实现高精度运动控制的利器
什么样的电信号可以作为RC一阶电路零输入响应的激励信号呢?
业界猜想苹果牌汽车iCar或将走到台前
工业控制计算机的未来市场发展前景十分广阔
华为正式推出旗下首款可穿戴智能眼镜“EyeWear”,支持无线充电
华为Mate10什么时候上市?华为Mate10硬钢苹果三星,配置再曝光:麒麟970+全面屏价格超5000贵不贵?
基于 NVIDIA Jetson 使用硬件在环设计机器人
关于嵌入式电量检测设备的设计实现和应用
华为预计液晶电视机于今年9月或10月上市
国民技术汇聚11大主题与2款新品添彩ELEXCON 2022
20家企业瓜分超8成市场 企业应借鉴“黑马”冲击第一阵营
变电站自动化有哪些基本要求(二)