Hatena::ブログ(Diary)

ablog このページをアンテナに追加 RSSフィード Twitter

2015-07-06

perf + Flame Graphs で Linux カーネル内のボトルネックを特定する

ddで1GBのファイルを作成し perfプロファイリングし、Flame Graphs可視化したものです。

下から上に行くほどコールスタックが深く、左から関数名のアルファベット順でソートされています。一番上で横幅が広い関数CPUを長く使っています。今回は "_aesni_enc1" つまり暗号化がボトルネックになっていることがわかります。

f:id:yohei-a:20150707040350p:image:w640


Flame Graphs の見方

P.35

f:id:yohei-a:20150707035438p:image:w360

P.40

f:id:yohei-a:20150707035437p:image:w360


手順

$ wget https://raw.githubusercontent.com/brendangregg/FlameGraph/master/stackcollapse-perf.pl
$ wget https://raw.githubusercontent.com/brendangregg/FlameGraph/master/flamegraph.pl
  • root 以外でも perf を使えるようにする
# echo 0 > /proc/sys/kernel/perf_event_paranoid
# cat /proc/sys/kernel/perf_event_paranoid
0
$ perf record -a -g -F100000 dd if=/dev/zero of=/tmp/test.dat bs=1024K count=1000
  • perf で取得したデータをテキストに変換する。
$ perf script> perf_data.txt
$ perl stackcollapse-perf.pl perf_data.txt|perl flamegraph.pl --title "Flame Graphs - dd if=/dev/zero of=/tmp/test.dat bs=1024K count=1000" > flamegraph_dd.svg

環境

$ cat /etc/issue
Oracle Linux Server release 6.6
Kernel \r on an \m
$uname -r
2.6.39-400.17.1.el6uek.x86_64

参考

Systems Performance: Enterprise and the Cloud

Systems Performance: Enterprise and the Cloud


関連

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/yohei-a/20150706/1436208007
おとなり日記