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とソフトウェア関数の関係など、ほかのターゲットの分析にも使える。 ...

Get 詳解 システム・パフォーマンス 第2版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.