17

Brendan D. Gregg (DTrace book の著者) は、興味深いプロファイリングのバリエーションを持っています: 「Off-CPU」プロファイリング(およびOff-CPU Flame Graph ;スライド 2013、p112-137 ) は、スレッドまたはアプリケーションがどこでブロックされたか (以前はCPU によって実行されませんが、I/O、pagefault ハンドラーを待機しているか、CPU リソース不足のためにスケジュール解除されています):

今回は、どのコード パスがブロックされ、オフ CPU で待機しているのか、正確な時間はどれくらいかを明らかにします。これは、特定の間隔でスレッドのアクティビティをサンプリングし、(通常は) スレッドが CPU 上で作業を実行している場合にのみスレッドを調べる従来のプロファイリングとは異なります。

また、オフ CPU プロファイル データとオン CPU プロファイルを組み合わせることができます: http://www.brendangregg.com/FlameGraphs/hotcoldflamegraphs.html

Gregg が提供する例dtraceは、Linux OS では通常利用できない を使用して作成されています。しかし、いくつかの同様のツール (ktap、systemtap、perf) があり、perfインストール ベースが最も広いと思います。通常、perf生成されるオン CPU プロファイル (CPU でより頻繁に実行される関数)。

  • perfGregg の Off-CPU の例をLinux のプロファイリング ツールに変換するにはどうすればよいですか?

PS: LISA13 の p124 のスライドに、オフ CPU フレームグラフの systemtap バリアントへのリンクがあります。「Yichun Zhang がこれらを作成し、Linux 上で SystemTap を使用してプロファイル データを収集しています。参照: • http://agentzh .org/misc/slides/off-cpu-flame-graphs.pdf " " (2013 年 8 月 23 日の CloudFlare Beer Meeting)

4

2 に答える 2

4

Brendan Gregg は、オフ CPU フレーム グラフの生成に関する説明を公開しました: http://www.brendangregg.com/blog/2015-02-26/linux-perf-off-cpu-flame-graph.html およびhttps://github com/brendangregg/FlameGraph/issues/47#

オフ CPU 時間のフレーム グラフは (たとえば) 問題の 60% を解決する可能性があり、残りはスレッド ウェイクアップを調べて根本原因を見つける必要があります。オフ CPU 時間のフレーム グラフ、このウェイクアップの問題、および追加の作業については、フレーム グラフに関する LISA13 の講演 (スライドYouTube ) で説明しました。

ここでは、Linux perf_events を使用してオフ CPU 時間フレーム グラフを実行する 1 つの方法を示します。

# perf record -e sched:sched_stat_sleep -e sched:sched_switch \
 -e sched:sched_process_exit -a -g -o perf.data.raw sleep 1
# perf inject -v -s -i perf.data.raw -o perf.data
# 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 "%s\n%d\n\n", exec, period_ms }' | \
./stackcollapse.pl | \
./flamegraph.pl --countname=ms --title="Off-CPU Time Flame Graph" --colors=io > offcpu.svg

フレームグラフの描画には、Gregg の stackcollapse.pl と flamegraph.pl が使用されます。

3.17 カーネル以降で使用される perf オプションがあります...

于 2015-02-28T17:18:19.053 に答える