我是靠谱客的博主 苗条草丛,最近开发中收集的这篇文章主要介绍CentOS7 火焰图制作on-cpu火焰图on-cpu火焰图,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

on-cpu火焰图

准备

1. 首先目标二进制编译加参数 -fno-omit-frame-pointer

2. 安装perf:yum install -y perf

数据采样

perf record -F 99 -p PID -g -- sleep 60

perf record -g <binary>

-F 99: 每秒采样99次
-p PID: 指定进程id
-g: 记录调用栈
sleep 60: 持续60秒, 如果不加则一直采样到手动中断(CRTL+C)为止
上面的命令会生成一个perf.data的文件.

  • 执行perf report -n可以生成报告的预览
  • 执行perf report -n --stdio可以生成一个详细的报告
  • 执行perf script > out.perf可以 dump 出 perf.data 的内容

生成火焰图

通常的做法是将 out.perf 拷贝到本地机器在本地生成火焰图

复制

1
2
3
4
5
6
7
8
# 下载火焰图生成工程
git clone --depth 1 https://github.com/brendangregg/FlameGraph.git

# 折叠调用栈
FlameGraph/stackcollapse-perf.pl out.perf > out.folded

# 生成火焰图
FlameGraph/flamegraph.pl out.folded > out.svg

生成火焰图可以指定参数,–width 可以指定图片宽度,–height 指定每一个调用栈的高度  

on-cpu火焰图

准备

echo 1 >/proc/sys/kernel/sched_schedstats

yum install kernel-debug kernel-debug-devel kernel-debug-debuginfo

数据采样

进行采集(-t  <TID>)

sudo perf record -e sched:sched_stat_sleep -e sched:sched_switch -e  
sched:sched_process_exit -t 427173 -g -o perf.data.raw sleep 10

或(-p `pidof  <exec-file>`)

sudo perf record -e sched:sched_stat_sleep -e sched:sched_switch -e 
sched:sched_process_exit -p `pidof trade_server` -g -o perf.data.raw sleep 10

合并事件

sudo perf inject -v -s -i perf.data.raw -o perf.data

生成火焰图

sudo perf script -F  comm,pid,tid,cpu,time,period,event,ip,sym,dso,trace | awk '

    NF > 4 { exec = $1; period_ms = int($5 / 1000000) }

    NF > 1 && NF <= 4 && period_ms > 0 { print $2 }

    NF < 2 && period_ms > 0 { printf "%sn%dnn", exec, period_ms }' | 
    ./stackcollapse.pl | 
   ./flamegraph.pl --countname=ms --title="Off-CPU Time Flame Graph" --colors=io > offcpu.svg

参考

https://github.com/brendangregg/FlameGraph.git

https://www.sohu.com/a/152267069_736949

https://codertang.com/2018/12/17/perf/

最后

以上就是苗条草丛为你收集整理的CentOS7 火焰图制作on-cpu火焰图on-cpu火焰图的全部内容,希望文章能够帮你解决CentOS7 火焰图制作on-cpu火焰图on-cpu火焰图所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部