ディスク使用量をFlameGraphで可視化する
こんにちわ。しいたけです。今日はディスク使用量をFlameGraphにするツールの話です。
FlameGraphについては、 Flame Graphs や GolangでFlame Graphを描く | SOTA を読んでもらうのが手っ取り早いのですが、ようはプロファイル結果を可視化する方法です。縦軸が呼び出しの階層に、横軸がサンプル数や実行時間などに対応しており、どの関数が支配的かを直感的に見ることができる優れたグラフですよ。
で、このFlameGraph、別にプロファイル結果だけではなく、ツリー構造で各ノードが量を持つ場合に、枝毎の累積量を可視化するのに利用できます。プロファイル以外に、ツリー構造でノードが量を持つ例として、ディレクトリ階層毎のディスク使用量が考えられます。
というわけで、指定ディレクトリ以下のディスク使用量をFlameGraph化するツールを書きました。
GitHub - yuroyoro/du-flamegraph: visualize disk usage as flamegraph
こんな感じのグラフが出力されます
goで書かれており、使い方は、 `go get -u yuroyoro/du-flamegraph` でインストールできます。
このツールは、 FlameGraphの描画に `flamegraph.pl` というスクリプトが必要であり、これは GitHub - brendangregg/FlameGraph: Stack trace visualizer にあります。
これを git cloneなどで手元に入れて、 $PATHに追加するか、 `--flamegraph-script` で位置を指定するかしてやれば、FlameGraph がsvgとして出力されます。
NAME: du-flamegraph - visualize disk usage as flamegraph USAGE: du-flamegraph [global options] [FILE] VERSION: 0.0.0 GLOBAL OPTIONS: --width value, -w value width of image (default 1200) (default: 1200) --height value, -h value height of each frame (default 16) (default: 16) --flamegraph-script value path of flamegraph.pl. if not given, find the script from $PATH --out value distination path of grenerated flamegraph. default is ./du-flamegraph.svg (default: "./du-flamegraph.svg") --verbose show verbose log --version, -v print the version
FlameGraph、色々と応用がききそうですね。