第23章 OProfile
OProfile は、維持負担の少ないシステム全体のパフォーマンス監視ツールで、oprofile パッケージに含まれています。プロセッサー上にあるパフォーマンス監視ハードウェアを使用して、メモリーの参照タイミング、第 2 レベルのキャッシュ要求の回数、受け取ったハードウェア割り込みの回数など、システム上のカーネルと実行可能ファイルに関する情報を取得します。OProfile は、Java Virtual Machine (JVM) で実行されるアプリケーションのプロファイリングも実行できます。
以下は、OProfile で提供されるツールのオプションです。従来の opcontrol ツールと新たな operf ツールは同時に利用できない点に注意してください。
- ophelp
- システムプロセッサーで使用可能なイベントとその簡単な説明を表示します。
- operf
-
opcontrolの後継となる予定です。operfツールは Linux Performance Events Subsystem を使用するので、単一プロセスでも、システム全体でもプロファイルのターゲットの精度を向上できます。また、システム上でパフォーマンス監視ハードウェアを使用する他のツールと OProfile がよりうまく共存することが可能になります。opcontrolとは異なり、初期設定が不要で、--system-wideオプションを使用していなければ、root 権限なしで使用できます。
- opimport
- サンプルデータベースファイルをシステム用に外部のバイナリー形式からネイティブの形式に変換します。異なるアーキテクチャーからのサンプルデータベースを解析する時にのみこのオプションを使用して下さい。
- opannotate
- アプリケーションがデバッグシンボルでコンパイルされている場合は、実行可能ファイル用の注釈付きのソースを作成します。
- opreport
- プロファイルデータを取得します。
- opcontrol
-
このツールは OProfile デーモン (
oprofiled) を開始/終了し、プロファイルセッションの設定に使われます。
- oprofiled
- デーモンとして実行して定期的にサンプルデータをディスクに書き込みます。
レガシーモード (opcontrol、oprofiled、および post-processing ツール) は依然使用可能ですが、プロファイリング方法としては推奨されません。レガシーモードの詳しい説明は『システム管理者のガイド』の「レガシーモードを使った OProfile の設定」の章を参照してください。
23.1. OProfile の使用
operf は、推奨されるプロファイリングデータ収集ツールです。このツールは、初期設定が必要なく、すべてのオプションはコマンドラインで渡されます。レガシーの opcontrol ツールとは異なり、operf は root 権限なしに実行できます。operf ツールの使用方法に関する詳しい情報は、『システム管理者ガイド』の「operf の使用」の章を参照してください。
例23.1 Java プログラムのプロファイリングでの operf の使用
以下の例では、operf ツールを使用して Java (JIT) プログラムからのプロファイリングデータを収集し、次に opreport を使用して、シンボル毎にデータを出力します。
この例で使用するデモの Java プログラムをインストールします。これは、java-1.8.0-openjdk-demo パッケージの一部で、Optional チャンネルに含まれます。Optionalチャンネルの使用方法については、「Enabling Supplementary and Optional Repositories」を参照してください。Optional チャンネルを有効にしたら以下のパッケージをインストールします。
~]# yum install java-1.8.0-openjdk-demo
OProfile の oprofile-jit パッケージをインストールして、Java プログラムからプロファイルデータを収集できるようにします。
~]# yum install oprofile-jit
OProfile データのディレクトリーを作成します。
~]$ mkdir ~/oprofile_data
デモプログラムが含まれるディレクトリーに移動します。
~]$cd /usr/lib/jvm/java-1.8.0-openjdk/demo/applets/MoleculeViewer/プロファイリングを開始します。
~]$ operf -d ~/oprofile_data appletviewer \ -J"-agentpath:/usr/lib64/oprofile/libjvmti_oprofile.so" example2.html
ホームディレクトリーに移動して、収集したデータを分析します。
~]$cd~]$opreport --symbols --threshold 0.5出力例は以下のとおりです。
$ opreport --symbols --threshold 0.5 Using /home/rkratky/oprofile_data/samples/ for samples directory. WARNING! Some of the events were throttled. Throttling occurs when the initial sample rate is too high, causing an excessive number of interrupts. Decrease the sampling frequency. Check the directory /home/rkratky/oprofile_data/samples/current/stats/throttled for the throttled event names. warning: /dm_crypt could not be found. warning: /e1000e could not be found. warning: /kvm could not be found. CPU: Intel Ivy Bridge microarchitecture, speed 3600 MHz (estimated) Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (No unit mask) count 100000 samples % image name symbol name 14270 57.1257 libjvm.so /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.51-1.b16.el7_1.x86_64/jre/lib/amd64/server/libjvm.so 3537 14.1593 23719.jo Interpreter 690 2.7622 libc-2.17.so fgetc 581 2.3259 libX11.so.6.3.0 /usr/lib64/libX11.so.6.3.0 364 1.4572 libpthread-2.17.so pthread_getspecific 130 0.5204 libfreetype.so.6.10.0 /usr/lib64/libfreetype.so.6.10.0 128 0.5124 libc-2.17.so __memset_sse2
23.2. OProfile のドキュメント
OProfile に関する詳細情報は、oprofile(1) man ページを参照してください。Red Hat Enterprise Linux には、OProfile に関する包括的なガイドが含まれており、このガイドは file:///usr/share/doc/oprofile-version/ にあります。
- OProfile Manual
-
OProfile の詳細にわたる設定や用途の説明が含まれる包括的なマニュアルは、
file:///usr/share/doc/oprofile-version/oprofile.htmlにあります。 - OProfile Internals
-
OProfile の内部での機能に関する情報は、
file:///usr/share/doc/oprofile-version/internals.htmlにあり、OProfile アップストリームへの貢献に興味のあるプログラマーには役立つ情報が含まれています。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.