$ sh flamesvg.sh record sudo yum install perf -y Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.atlanticmetro.net * epel: epel.mirror.constant.com * extras: mirror.math.princeton.edu * updates: centos5.zswap.net Package perf-3.10.0-1127.19.1.el7.x86_64 already installed and latest version Nothing todo sudo yum install perf -y Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.atlanticmetro.net * epel: epel.mirror.constant.com * extras: mirror.math.princeton.edu * updates: centos5.zswap.net Package perf-3.10.0-1127.19.1.el7.x86_64 already installed and latest version Nothing todo sudo yum install git -y Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.atlanticmetro.net * epel: epel.mirror.constant.com * extras: mirror.math.princeton.edu * updates: centos5.zswap.net Package git-1.8.3.1-23.el7_8.x86_64 already installed and latest version Nothing todo git clone https://github.com/brendangregg/FlameGraph Cloning into 'FlameGraph'... remote: Enumerating objects:1, done. remote: Counting objects:100% (1/1), done. remote: Total 1067 (delta 0), reused 0 (delta 0), pack-reused 1066 Receiving objects:100% (1067/1067), 1.87 MiB | 0 bytes/s, done. Resolving deltas:100% (612/612), done. sudo perf record --call-graph dwarf -asleep10 [ perf record: Woken up19 times towrite data ] [ perf record: Captured and wrote 6.307 MB perf.data (1544 samples) ]
第一次进行采集会安装相关的依赖,后续就不用了,如下:
1 2 3 4
$ sh flamesvg.sh record sudo perf record--call-graph dwarf -a sleep 10 [ perf record: Woken up 17timestowrite data ] [ perf record: Captured and wrote 5.403 MB perf.data (1364 samples) ]
执行完毕会在当前目录生成一个 perf.data 文件,该文件就是采集到的 cpu 数据。
生成火焰图
完成上述的 record 命令之后:
1 2 3 4
$ sh flamesvg.sh svg flame svg file generated: perf.svg ls perf.svg perf.svg
执行完毕会在当前目录生成一个 perf.svg 文件,这就是最终的火焰图,可以直接用浏览器打开。
生成文本形式
完成上述的 record 命令之后:
1 2 3 4
$ sh flamesvg.sh txt perf_symbol(function).data generated ls perf_symbol.data perf_symbol.data