概要
perfは、開発者やシステム管理者がパフォーマンスの問題を診断し最適化するために不可欠なツールです。さまざまなサブコマンドを通じて、統計情報の収集、イベントの記録、レポートの生成など、広範なパフォーマンス分析機能を提供します。
主な機能
- CPUプロファイリング (CPU使用率、コールスタック分析)
- ハードウェアイベント監視 (キャッシュミス、分岐予測失敗など)
- ソフトウェアイベント監視 (スケジューリングイベント、ページフォールトなど)
- システムコール追跡および分析
- 動的トレーシング (kprobes, uprobes)
主なオプション (サブコマンド)
perfはさまざまなサブコマンドを通じて機能を提供します。各サブコマンドには固有のオプションがあります。
perf stat: 統計情報の収集
perf record: パフォーマンスデータの記録
perf report: 記録されたデータの分析
perf list: 使用可能なイベントリスト
生成されたコマンド:
コマンドを組み合わせてみてください。
説明:
`perf` コマンドを実行します。
これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。
使用例
perfコマンドのさまざまな活用例です。
lsコマンド実行統計の表示
perf stat ls
lsコマンド実行中のCPUサイクル、命令数、キャッシュミスなどの基本的なパフォーマンス統計を確認します。
特定プロセスを5秒間監視
perf stat -p 1234 sleep 5
PIDが1234のプロセスのパフォーマンス統計を5秒間監視します。(実際のPIDに置き換えてください)
アプリケーション実行中のコールグラフ記録
perf record -g ./my_app
my_app実行中の関数呼び出しスタック情報を含むパフォーマンスデータを記録します。記録されたデータはperf.dataファイルに保存されます。
記録されたデータの分析
perf report
perf recordで生成されたperf.dataファイルを対話形式で分析し、パフォーマンスのボトルネックを視覚的に確認します。
使用可能なハードウェアイベントリストの表示
perf list hw
現在のシステムでperfが監視できるすべてのハードウェアパフォーマンスイベントのリストを確認します。
インストール
perfは多くのLinuxディストリビューションでデフォルトでインストールされていない場合があります。次のコマンドを使用してインストールできます。
Debian/Ubuntu
sudo apt update
sudo apt install linux-tools-common linux-tools-$(uname -r)
DebianまたはUbuntuベースのシステムでperfをインストールするコマンドです。カーネルバージョンに合ったlinux-toolsパッケージをインストールする必要があります。
CentOS/RHEL/Fedora
sudo yum install perf
# または sudo dnf install perf (Fedora)
CentOS、RHELまたはFedoraベースのシステムでperfをインストールするコマンドです。
ヒントと注意点
perfの使用時に役立つヒントと注意すべき点です。
ルート権限
ほとんどのperfコマンドはシステム全体のパフォーマンスデータを収集するため、ルート権限(sudo)が必要です。
- perfコマンド実行時に「Operation not permitted」エラーが発生した場合は、sudoを使用してみてください。
カーネルシンボルのロード
perf reportで関数名が「unknown」と表示される場合、カーネルシンボルをロードする必要があります。これは「kernel-debuginfo」または「kernel-devel」パッケージのインストールによって可能です。
- CentOS/RHEL: `sudo debuginfo-install kernel`
- Ubuntu/Debian: `sudo apt install linux-image-$(uname -r)-dbg`
オーバーヘッド
perfは非常に詳細なデータを収集するため、特に高いサンプリング頻度で`perf record`を使用すると、システムに若干のオーバーヘッドが発生する可能性があります。本番環境では注意して使用する必要があります。
- パフォーマンスに敏感なシステムでは、低いサンプリング頻度(-Fオプション)から始めてオーバーヘッドを最小限に抑えてください。
perf topの活用
`perf top`は、リアルタイムでCPU使用率の高い関数を表示する便利なサブコマンドです。簡単なパフォーマンス監視に適しています。
- `perf top`を使用して、現在システムで最も多くのCPU時間を消費している関数を迅速に特定できます。