ホーム > パッケージ・システム管理 > perf

perf: Linuxパフォーマンス分析ツール

perfはLinuxカーネルに組み込まれた強力なパフォーマンス監視および分析ツールです。CPU使用率、キャッシュミス、システムコールなど、さまざまなハードウェアおよびソフトウェアイベントを追跡し、アプリケーションやシステムのパフォーマンスボトルネックを特定して最適化するために使用されます。カーネルレベルで動作するため、非常に詳細で正確なパフォーマンスデータを提供します。

概要

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時間を消費している関数を迅速に特定できます。

同じカテゴリのコマンド