4.8. perf について


perf は、パフォーマンス分析ツールです。これは、簡単なコマンドラインインターフェイスを提供し、Linux のパフォーマンス測定における CPU ハードウェアの相違点を分けます。Perf はカーネルによってエクスポートされた perf_events インターフェイスに基づいています。
perf の 1 つの利点は、カーネルとアーキテクチャーの両方です。分析データは、特定のシステム設定なしに確認できます。
perf を使用できるようにするには、root として次のコマンドを実行して perf パッケージをインストールします。
~]# yum install perf
Copy to Clipboard Toggle word wrap
perf には以下のオプションがあります。最も一般的なオプションと機能の例を以下に示しますが、すべてのオプションの詳細情報は perf help コマンド で参照できます。

例4.2 perf オプションの例

]# perf

 usage: perf [--version] [--help] COMMAND [ARGS]

 The most commonly used perf commands are:
   annotate        Read perf.data (created by perf record) and display annotated code
   archive         Create archive with object files with build-ids found in perf.data file
   bench           General framework for benchmark suites
   buildid-cache   Manage build-id cache.
   buildid-list    List the buildids in a perf.data file
   diff            Read two perf.data files and display the differential profile
   evlist          List the event names in a perf.data file
   inject          Filter to augment the events stream with additional information
   kmem            Tool to trace/measure kernel memory(slab) properties
   kvm             Tool to trace/measure kvm guest os
   list            List all symbolic event types
   lock            Analyze lock events
   record          Run a command and record its profile into perf.data
   report          Read perf.data (created by perf record) and display the profile
   sched           Tool to trace/measure scheduler properties (latencies)
   script          Read perf.data (created by perf record) and display trace output
   stat            Run a command and gather performance counter statistics
   test            Runs sanity tests.
   timechart       Tool to visualize total system behavior during a workload
   top             System profiling tool.
   trace           strace inspired tool
   probe           Define new dynamic tracepoints

See 'pert help COMMAND' for more information on a specific command.

Copy to Clipboard Toggle word wrap
以下の例は、レコード、アーカイブ、レポート、統計、リストなど、最も使用される機能の選択を示しています。

例4.3 perf レコード

perf レコード機能は、システム全体の統計を収集するために使用されます。すべてのプロセッサーで使用できます。
~]# perf record -a
^C[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.725 MB perf.data (~31655 samples) ]
Copy to Clipboard Toggle word wrap
この例では、すべての CPU がオプション -a で指定されており、プロセスは数秒後に終了しました。その結果は、0.725 MB のデータを収集し、以下の結果ファイルを作成していることが示されています。
~]# ls
perf.data
Copy to Clipboard Toggle word wrap

例4.4 perf レポートおよびアーカイブ機能の例

perf レコード 機能からのデータは、perf report コマンドを使用して直接調査できるようになりました。サンプルを別のシステムで分析する場合は、perf archive コマンドを使用します。DSO (バイナリーやライブラリーなど) が ~/.debug/ キャッシュなどの分析システムにすでに存在している場合や、両方のシステムに同じバイナリーセットがある場合、これは必ずしも必要ではありません。
アーカイブコマンドを実行し、結果のアーカイブを作成します。
~]# perf archive
Copy to Clipboard Toggle word wrap
結果を tar アーカイブとして収集し、設定 レポート のデータを作成します。
~]# tar xvf perf.data.tar.bz2 -C ~/.debug
Copy to Clipboard Toggle word wrap
perf レポート を実行して tarball を分析します。
~]# perf report
Copy to Clipboard Toggle word wrap
レポートの出力は、アプリケーションの最大 CPU 使用率順に並べ替えられます。これは、サンプルがプロセスのカーネルまたはユーザー空間で発生したかどうかを示します。
カーネルサンプルは、カーネルモジュール内で実行されていない場合は 、[kernel.kallsyms] という表記でマークされます。カーネルサンプルがカーネルモジュール内で実行されている場合、[module][ext4] としてマークされます。ユーザー空間のプロセスでは、プロセスにリンクされた共有ライブラリーが結果に表示される可能性があります。
レポートは、プロセスがカーネルまたはユーザースペースでも発生するかどうかを示します。結果の [.] はユーザー空間を示し、[k] は カーネル空間を示します。経験のある perf 開発者に適したデータなど、詳細を確認することができます。

例4.5 perf list および stat 機能の例

perf list および stat 機能は、プローブ可能なハードウェアまたはソフトウェアのトレースポイントをすべて示します。
次の例は、perf stat 機能を使用してコンテキストスイッチの数を表示する方法を示しています。
~]# perf stat -e context-switches -a sleep 5
Performance counter stats for 'sleep 5':

            15,619 context-switches

       5.002060064 seconds time elapsed
Copy to Clipboard Toggle word wrap
結果には、5 秒間に 15619 のコンテキストスイッチが発生したことが示されています。また、以下のスクリプト例のように、ファイルシステムのアクティビティーも表示可能です。
~]# for i in {1..100}; do touch /tmp/$i; sleep 1; done
Copy to Clipboard Toggle word wrap
別のターミナルで、次の perf stat 機能を実行します。
~]# perf stat -e ext4:ext4_request_inode -a sleep 5
 Performance counter stats for 'sleep 5':

                 5 ext4:ext4_request_inode

       5.002253620 seconds time elapsed
Copy to Clipboard Toggle word wrap
その結果、スクリプトが 5 秒以内に 5 秒以内に 5 つのファイルを作成すると、inode 要求が 5 つあることが分かります。
ハードウェアトレースポイントアクティビティーを取得するために利用可能なオプションは複数あります。次の例は、perf list 機能のオプションの選択を示しています。
List of pre-defined events (to be used in -e):
  cpu-cycles OR cycles                               [Hardware event]
  stalled-cycles-frontend OR idle-cycles-frontend    [Hardware event]
  stalled-cycles-backend OR idle-cycles-backend      [Hardware event]
  instructions                                       [Hardware event]
  cache-references                                   [Hardware event]
  cache-misses                                       [Hardware event]
  branch-instructions OR branches                    [Hardware event]
  branch-misses                                      [Hardware event]
  bus-cycles                                         [Hardware event]

  cpu-clock                                          [Software event]
  task-clock                                         [Software event]
  page-faults OR faults                              [Software event]
  minor-faults                                       [Software event]
  major-faults                                       [Software event]
  context-switches OR cs                             [Software event]
  cpu-migrations OR migrations                       [Software event]
  alignment-faults                                   [Software event]
  emulation-faults                                   [Software event]
  ...[output truncated]...
Copy to Clipboard Toggle word wrap
重要
周波数が高くなりすぎると、リアルタイムシステムのパフォーマンスに悪影響を及ぼす可能性があります。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat