13章perf
perf(1)は、Linuxの公式プロファイラであり、Linuxカーネルソースのtools/perf以下にある†1。perf(1)は、プロファイリング、トレーシング、スクリプティングの機能を持つ多機能ツールで、カーネルのperf_eventsサブシステムのフロントエンドになっている。perf_eventsは、Performance Counters for Linux(PCL)とかLinux Performance Events(LPE)とも呼ばれている。perf_eventsとperf(1)フロントエンドは、PMC(Performance Monitoring Counter)の機能としてスタートしたが、イベントベースのトレーシングソース(トレースポイント、kprobe、uprobe、USDT)もサポートするように成長してきている。
[†1] perf(1)は、大規模で複雑なユーザーレベルプログラムでありながら、Linuxカーネルソースツリーに含まれている点で特異な存在である。メンテナのアーナルド・カルヴァーリョ・デ・メロは、このような形を“実験”だと私に言ったことがある。perf(1)とLinuxは歩調を揃えて開発されてきたので、この形はperf(1)とLinuxの両方にとってメリットがあったが、どうも落ち着かない気持ちになるという人もいる。しかし、perf(1)は、Linuxソースに含まれている複雑なユーザーソフトウェアという地位を維持し続けるかもしれない。
この章と「14章 Ftrace」、「15章 BPF」は、ひとつ以上のシステムトレーサーを深く学びたいと思う読者のためのオプションの章である。
perf(1)は、特にCPUの分析では、ほかのトレーサーよりも適している。CPUスタックトレースのプロファイリング(サンプリング)、CPUスケジューラのふるまいのトレーシング、サイクルのふるまいなどマイクロアーキテクチャレベルでCPUのパフォーマンスを理解するためのPMCの解析である。perf(1)のトレーシング機能は、ディスクI/Oとソフトウェア関数の関係など、ほかのターゲットの分析にも使える。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access