はじめに
Linux perf ツールは、Linux システムの CPU パフォーマンスをプロファイリングおよび監視するための軽量のコマンドライン ユーティリティです。このツールはシンプルですが、CPU の分析に役立つ詳細な情報を提供します。
このコマンドには、CPU イベント データを収集、トレース、および分析するための多くのサブコマンドが含まれています。
このガイドでは、パフォーマンス ツールの例を示します。

前提条件
- ターミナルへのアクセス
- root または sudo 権限を持つユーザーへのアクセス
- nano や Vi/Vim などのテキスト エディタ
perf のインストール方法
perf プログラムは Linux システムにプリインストールされていません。インストールは Linux ディストリビューションによって異なります:
- Ubuntu/Debian
sudo apt install linux-tools-$(uname -r) linux-tools-generic
- RHEL/CentOS
sudo yum install perf
- Fedora
sudo dnf install perf
インストールを確認します:
perf --version

出力には、インストールが成功したことを示すバージョン番号が表示されます。
通常のユーザーに perf の使用を許可する
perf
コマンドには、デフォルトで sudo
が必要です 特権。通常のユーザーが perf
を使用できるようにするには 、次のことを行います:
1. root ユーザーに切り替えます:
sudo su -
2. 次のコマンドを入力します:
echo 0 > /proc/sys/kernel/perf_event_paranoid
このコマンドは、通常のユーザーが現在のセッションで perf ユーティリティを使用することを許可します。
3. 通常のユーザーに戻ります:
exit

変更を永続化するには、次の手順を実行します:
1. sysctl を編集します 設定ファイル:
sudo nano /etc/sysctl.conf
2. 以下をファイルに追加します:
kernel.perf_event_paranoid = 0
3. 変更を保存して nano を終了します。
Linux perf コマンドの構文
perf
コマンド構文は次のとおりです:
perf <options> subcommand <options/arguments>
perf ツールは git のように機能します。これは、さまざまなサブコマンドとさまざまなアクティビティのインターフェイスとして機能します。オプションや引数を指定せずにコマンドを実行すると、使用可能なサブコマンドのリストが表示されます。
Linux perf サブコマンド
以下は、一般的に使用される perf
をまとめた表です。 サブコマンド:
サブコマンド | 説明 |
---|---|
annotate | 読み取りperf.data 注釈付きコードを表示します。 |
list | 測定可能なすべてのイベントを一覧表示します。 |
stat | パフォーマンス統計を収集します。 |
record | サンプルをperf.dataに記録します . |
report | 読み取りperf.data プロファイルを表示します。 |
script | 読み取りperf.data トレース出力を表示します。 |
top | プロファイリング ツール。 |
サブコマンドには追加のオプションがあります。個々のサブコマンドのオプションを表示するには、次を実行します:
perf <subcommand> -h

出力には、特定のサブコマンドの簡単なヘルプ ウィンドウが表示されます。
Linux perf コマンドの例
perf
をテストするには コマンドでは、Ubuntu 18.04 を実行している phoenixNAP の s0.d1 小さな BMC インスタンスを使用しています。
注: 小さな BMC インスタンスのその他の使用例については、いくつかのガイドをご覧ください:
- s0.d1.small BMC インスタンスにファイアウォールを設定する
- s0.d1.small BMC サーバーでロード バランサーをセットアップする方法
- S.0 BMC インスタンスでのサンドボックス環境のセットアップ
perf
で CPU をプロファイリングする場合 コマンド、典型的なワークフローは使用することです:
1. perf list
イベントを検索します。
2. perf stat
イベントを数えます。
3. perf record
イベントをファイルに書き込みます。
4. perf report
記録されたファイルを参照します。
5. perf script
処理後にイベントをダンプします。
出力は、システムとローカルで利用可能なリソースによって異なります。
1.利用可能なイベントのリスト
perf を使用して測定可能なすべてのイベントを一覧表示する list
で サブコマンド:
sudo perf list

出力には、タイプに関係なく、サポートされているすべてのイベントが一覧表示されます。 sudo
なし 、コマンドは短いリストを表示します。他のサブコマンドでイベントを参照する場合は、-e
を使用します タグの後に最初の列のイベント名が続きます。
コマンドの後に filter パラメーターを追加して、リストをイベント名 (最初の列) またはイベントの種類 (2 番目の列) で制限します。たとえば、次のようにハードウェア イベントのみを表示します。
sudo perf list hardware
または代わりに:
sudo perf list hw

出力には、指定されたパラメーターに基づいてフィルター処理された結果が表示されます。
2. CPU リアルタイム システム プロファイルの表示
CPU プロファイルをリアルタイムで表示するには、top
を使用します サブコマンド:
sudo perf top

このコマンドは、Linux の top コマンドと同様に、サンプリングされた関数をリアルタイムで表示します。出力には、次の 3 つの列が左から右の順に出力されます:
1. パーセンテージで表された関数に関連付けられた CPU 使用率。
2. 関数を使用しているライブラリまたはプログラム。
3. シンボルと関数名。[k]
カーネル空間と [.]
です ユーザー空間です。
デフォルトでは、perf top
オンラインのすべての CPU を監視します。追加のオプションは次のとおりです:
- すべての CPU (アイドルを含む) の監視 (
-a
). - 特定の CPU の監視 (
-C
). - サンプリング周波数の制御 (
-F
).
閲覧モード中に追加のオプションを表示するには、h を押します .

プロファイラーを終了して端末に戻るには、q を押します .
3. perf で CPU パフォーマンス統計を表示
すべての標準的な CPU 全体のハードウェアおよびソフトウェア イベントの CPU パフォーマンス統計を表示するには、次を実行します。
sudo perf stat -a sleep 5

出力には、5 秒間にわたって収集されたシステム全体の詳細なレポートが表示されます。 sleep 5
なし 、システムはCTRLで終了するまで測定します +C .
4.コマンドの CPU パフォーマンスを表示
特定のコマンドの CPU パフォーマンス統計を確認するには、次を実行します:
sudo perf stat <command>
たとえば、ls
を確認します。 コマンド:
sudo perf stat ls

コマンドにかかる合計時間は、経過時間として表示されます 出力の最後に。
5.プロセスの CPU パフォーマンスを表示する
-p
を使用して、特定の実行中のプロセスに CPU パフォーマンスの統計を添付します。 タグとプロセス ID (PID) の提供:
sudo perf -p <PID> sleep 5

出力は、特定のプロセスのパフォーマンス統計を収集して表示します。
6.タイプ別にイベント システム コールをカウントする
タイプ別に Linux カーネル システム コールをカウントするには、次を実行します。
sudo perf stat -e 'syscalls:sys_enter_*' -a sleep 5
5 秒後、システム全体のすべての呼び出しとその数が出力に表示されます。
7. CPU サイクルの記録
CPU サイクルはハードウェア イベントです。 CPU サイクルを記録するには、record
を使用します サブコマンドを開き、-e
でイベント名を指定します タグ:
sudo perf record -e cycles sleep 10

記録はデータを perf.data に保存します ファイル。出力には、ファイルのサイズと含まれるデータ サンプルの数が表示されます。
8.パフォーマンス結果を見る
perf.data からパフォーマンス結果を表示するには ファイル、実行:
sudo perf report

このコマンドは perf.data の読み取りに役立ちます ファイルに、収集されたすべてのイベントと統計が表示されます。ビューアを終了するには、CTRL を押します +C .
9.サンプル出力形式の変更
サンプル出力を標準出力形式で表示するには、次を実行します:
sudo perf report --stdio

追加の変更には、各イベントのサンプル番号の表示が含まれます (-n
)、特定の列を表示する (--sort <column name>
)。例:
sudo perf report -n --sort comm,symbol --stdio

出力には、サンプル番号とコマンドおよびシンボル情報の列が追加されます。
10.トレース出力の表示
script
を使用 perf.dat からのすべてのイベントを一覧表示するサブコマンド a.例:
sudo perf script

出力は perf.data を出力します 詳細は時系列で。 script
を使用 後処理データとしてのサブコマンド。
11.トレース ヘッダーを表示
perf.data からすべてのイベントを表示するには 追加のトレース ヘッダー情報を使用して、実行:
sudo perf script --header

出力には、トレースの開始時刻、継続時間、CPU 情報、データを取得したコマンドなど、ファイルのヘッダー情報が表示されます。イベント リストはヘッダー情報の後にあります。
12.生データをダンプ
perf.data から生データを 16 進数としてダンプするには ファイル、-D
を使用 オプション:
sudo perf script -D

結果は、ASCII 形式の未加工のイベント トレース情報です。このオプションは、イベントのデバッグに役立ちます。
13.データに注釈を付ける
データに注釈を付けてさらに逆アセンブルするには、annotate
を使用します サブコマンド:
sudo perf annotate --stdio -v

-v
オプションは、詳細な出力を提供します。結果には、イベントのソース コードと逆アセンブリが表示されます。
結論
このガイドの例を見れば、Linux perf
の基本的な使い方がわかります。 コマンドといくつかの主要なサブコマンド。 man コマンドを使用して、パフォーマンス分析ツールとサブコマンドの完全なドキュメントを表示します。