- GraalVM for JDK 23 (最新)
- GraalVM for JDK 24 (早期アクセス)
- GraalVM for JDK 21
- GraalVM for JDK 17
- アーカイブ
- 開発ビルド
ネイティブイメージにおけるLinux Perfプロファイラサポート
perf
プロファイラ は、Linuxのパフォーマンス分析ツールであり、CPU使用率、メモリ使用量など、さまざまなパフォーマンス関連データの収集と分析を可能にします。アプリケーションの動作をプロファイリングして理解するのに特に役立ちます。
インストール #
PerfはLinuxシステムのプロファイラツールです。ほとんどのディストリビューションにはperf
がプリインストールされていますが、利用できない場合はパッケージマネージャーを使用してインストールできます。
Oracle Linux/Red Hat/CentOSにperf
をインストールするには、次のコマンドを実行します。
sudo yum install perf
Debian/Ubuntuにperf
をインストールするには、次のコマンドを順番に実行します。
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つの異なるレベル(値)があります。
- -1: すべてのユーザーによる(ほぼ)すべてのイベントの使用を許可します。
- >=0:
CAP_SYS_ADMIN
を持たないユーザーによるftrace
関数トレースポイントの使用を禁止します。 - >=1:
CAP_SYS_ADMIN
を持たないユーザーによるCPUイベントアクセスを禁止します。 - >=2:
CAP_SYS_ADMIN
を持たないユーザーによるカーネルプロファイリングを禁止します。
kptr_restrictには3つの異なるレベル(値)があります。
- 0: カーネルポインタはすべてのユーザーが読み取ることができます。
- 1: カーネルポインタは特権ユーザー(
CAP_SYS_ADMIN
機能を持つユーザー)のみがアクセスできます。 - 2: カーネルポインタはすべてのユーザーから非表示になります。
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
オプションは、Native Imageに生成されたバイナリ用のデバッグ情報を生成するように指示します。perf
は、このデバッグ情報を使用して、トレース内の型とメソッドの適切な名前を提供できます。
基本操作 #
CPUプロファイリング #
-
利用可能なすべてのイベントをリストします。
perf list
このコマンドは、プロファイリングに使用できるすべてのイベントのリストを表示します。
-
CPUイベントを記録します。
perf record -e <event> -o perf.data <your_executable>
<event>
をリストから目的のイベントに置き換えます。このコマンドは実行可能ファイルをプロファイリングし、データをperf.dataという名前のファイルに保存します。 -
レポートを生成します。
perf report
このコマンドは、収集されたデータに基づいてレポートを生成します。さまざまなオプションを使用して出力をカスタマイズできます。
メモリプロファイリング #
-
メモリイベントを記録します。
perf record -e memory:<event> -o perf.data <your_executable>
<event>
を特定のメモリイベントに置き換えます。このコマンドは、メモリ関連イベントをプロファイリングします。 -
メモリレポートを生成します。
perf report --sort=dso
このコマンドは、動的共有オブジェクト(DSO)別にソートされた、メモリ関連イベントに焦点を当てたレポートを生成します。
トレース #
-
システム全体のトレースを記録します。
sudo perf record -a -g -o perf.data
このコマンドは、コールグラフ情報を含むシステム全体のトレースを記録し、データをperf.dataという名前のファイルに保存します。システム全体のトレースにはsudoを使用してください。
-
トレースレポートを生成します。
perf script
このコマンドは、記録されたトレースデータの分析に使用できるスクリプトを生成します。