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 でより頻繁に実行される関数)。
perf
Gregg の 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)