C++火焰图

Posted 第三眼的思绪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++火焰图相关的知识,希望对你有一定的参考价值。

基础

安装perf
apt install linux-tools-common
下载FlameGraph
git clone https://github.com/brendangregg/FlameGraph.git

on-cpu火焰图

编写采集脚本
#!/bin/bash

if [ $# -lt 1 ]
then
  echo 'please input pid:'
  echo './xxx.sh [pid] [option:filename] [option:sleepTime(seconds)] [option:dstPrefixPath]'
  exit 1
fi

# 默认参数
flameGraphpath=/home/jon/workspace/FlameGraph
dstPrefixPath=/home/jon/workspace/tmp
sleepTime=30
filename=test

if [[ $2 && -n "$2" ]]
then
  filename=$2
fi
if [[ $3 && $3 -gt 0 ]]
then
  sleepTime=$3
fi
if [[ $4 && -n "$4" ]]
then
  dstPrefixPath=$4
fi

sudo perf record -g -F 99 -p $1 -o $dstPrefixPath/$filename.data -- sleep $sleepTime
sudo perf script -i $dstPrefixPath/$filename.data > $dstPrefixPath/$filename.perf
$flameGraphPath/stackcollapse-perf.pl $dstPrefixPath/$filename.perf > $dstPrefixPath/$filename.floded
$flameGraphPath/flamegraph.pl $dstPrefixPath/$filename.floded > $dstPrefixPath/$filename.svg

以上是关于C++火焰图的主要内容,如果未能解决你的问题,请参考以下文章

C++火焰图

如何获得涉及 C++ 标准库的帧指针性能调用堆栈/火焰图?

火焰图(Flame Graphs)

Golang FlameGraph(火焰图)

如何看火焰图?

Arthas生成Kafka火焰图