ネイティブ・イメージでのLinux Perfプロファイラのサポート

perfプロファイラは、Linuxのパフォーマンス分析ツールで、CPU使用率、メモリー使用量などの様々なパフォーマンス関連データを収集および分析できます。これは、アプリケーションの動作のプロファイリングおよび理解に特に役立ちます。

インストール

perfは、Linuxシステム用のプロファイラ・ツールです。ほとんどのディストリビューションには、perfが事前にインストールされていますが、存在しない場合は、パッケージ・マネージャを使用してインストールできます。

Oracle Linux/Red Hat/CentOSにperfをインストールするには、次のコマンドを実行します:

sudo yum install perf

Debian/Ubuntuにperfをインストールするには、次のコマンドを1つずつ実行します:

sudo apt update
sudo apt install linux-tools-common linux-tools-generic

perfをインストールした後、次のオプションのデフォルト値をバックアップします:

cat /proc/sys/kernel/perf_event_paranoid > perf_event_paranoid.backup
cat /proc/sys/kernel/kptr_restrict > kptr_restrict.backup

次に、それらを新しい目的の値に設定します:

echo -1 > /proc/sys/kernel/perf_event_paranoid
echo 0 > /proc/sys/kernel/kptr_restrict

前述の例では、-1および0が値として使用されていますが、これらは最も制限が少ないため、本番コードで使用することはお薦めしません。これらの値は、必要に応じてカスタマイズできます。

perf_event_paranoidには、4つの異なるレベル(値)があります:

kptr_restrictには、3つの異なるレベル(値)があります:

perfの使用が終了したら、元の値を復元します:

cat perf_event_paranoid.backup > /proc/sys/kernel/perf_event_paranoid
cat kptr_restrict.backup > /proc/sys/kernel/kptr_restrict

ネイティブ実行可能ファイルのビルド

次のコマンドは、native-imageがシステム・パスにあり、使用可能であると想定しています。インストールされていない場合は、スタート・ガイドを参照してください。

native-image -g <entry_class>

-gオプションは、生成されたバイナリのデバッグ情報を出力するようにネイティブ・イメージに指示します。perfは、このデバッグ情報を使用して、たとえばトレース内のタイプとメソッドに適切な名前を指定できます。

基本操作

CPUプロファイリング

  1. 使用可能なすべてのイベントをリストします:

    perf list
    

    このコマンドは、プロファイリングに使用できるすべてのイベントのリストを表示します。

  2. CPUイベントを記録します:

    perf record -e <event> -o perf.data <your_executable>
    

    <event>はリストの目的のイベントに置き換えます。このコマンドは、実行可能ファイルをプロファイルし、データをperf.dataという名前のファイルに保存します。

  3. レポートを生成します:

    perf report
    

    このコマンドは、収集されたデータに基づいてレポートを生成します。様々なオプションを使用して出力をカスタマイズできます。

メモリー・プロファイリング

  1. メモリー・イベントを記録します:

    perf record -e memory:<event> -o perf.data <your_executable>
    

    <event>は特定のメモリー・イベントに置き換えます。このコマンドは、メモリー関連のイベントをプロファイルします。

  2. メモリー・レポートを生成します:

    perf report --sort=dso
    

    このコマンドは、動的共有オブジェクト(DSO)でソートされた、メモリー関連のイベントに重点を置いたレポートを生成します。

トレース

  1. システム全体のトレースを記録します:

    sudo perf record -a -g -o perf.data
    

    このコマンドは、システム全体のトレース(コールグラフ情報を含む)を記録し、データをperf.dataという名前のファイルに保存します。システム全体のトレースにはsudoを使用します。

  2. トレース・レポートを生成します:

    perf script
    

    このコマンドは、記録されたトレース・データの分析に使用できるスクリプトを生成します。