我是靠谱客的博主 沉默翅膀,最近开发中收集的这篇文章主要介绍火焰图分析性能问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

摘要: 在主机上启动一台虚拟机,在这台虚拟机里测试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 性能优化部分

最后

以上就是沉默翅膀为你收集整理的火焰图分析性能问题的全部内容,希望文章能够帮你解决火焰图分析性能问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部