概述
摘要: 在主机上启动一台虚拟机,在这台虚拟机里测试fio,运行了fio的脚本,运行一会儿机器无任何反应。
问题的分析: 使用top -p xxxx 发现虚拟机的进程CPU利用率是100%,进程一直运行在CPU1上,而且利用率一直是100%左右。所以这个适合火焰图的on-cpu的情况,可以进行分析on-cpu的情况
具体如下图:
2. 使用perf分析目前虚拟机运行在那个部分代码导致的问题。
使用perf+ flamegraph软件来呈现问题:
使用命令行:
790 ./tools/perf/perf record -F 99 -p 1789 -g -- sleep 300
792 ./tools/perf/perf script >out.perf
793 ../FlameGraph/stackcollapse-perf.pl out.perf >out.folded
794 ../FlameGraph/flamegraph.pl out.folded >out.svg
使用浏览器查看火焰图的情况:
从火焰图中,看到vmx_cpu_run.part.83采样比较多,主要消耗都在这个函数中。
我们分析下这个函数具体位置情况,打开out.perf文件,可以看到具体函数执行地址:
这个函数采样中,还有其他的地址占用时间,但是最多时间: vmx_cpu_run.part.83+0xcc9.
3. 我们objdump kvm.ko看下这个函数具体执行了什么:
使用命令: objdump -dS kvm-intel.ko
执行的函数的地址: 7549, 7549这一样在做movzbl命令。这条指令执行次数太多,如果优化,我们需要看看如何减少这条指令的执行。
offcpu介绍:
Off-CPU Analysis
Off-CPU Flame Graphs
Off-CPU Analysis
需要工具如下:
bcc/INSTALL.md at master · iovisor/bcc · GitHub
# yum install bcc-tools
#/usr/share/bcc/tools/offcputime -df -p 4846 500 >out.stacks
#./FlameGraph/flamegraph.pl --color=io --title="Off CPU Time Flame Graph" --countname=us ~/out.stacks >~/out.svg
可以看到,性能优化点在ioctl 性能优化部分
最后
以上就是沉默翅膀为你收集整理的火焰图分析性能问题的全部内容,希望文章能够帮你解决火焰图分析性能问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复