OProfileは、システム全体の処理時間が、どのプログラム、カーネルやそのモジュール、ライブラリにどれだけ消費されたかを統計として取得するためのツールです。関数レベルで処理時間の割合を把握できるので、システムの動作が重くなったりトラブルが発生した場合の原因を、詳細に調査するのに役立ちます。カーネルはもちろん、ユーザーアプリケーションの解析も可能です。
Ubuntuにインストールするには、
$ sudo apt-get install oprofile
と実行します。Fedoraの場合は
$ su
# yum install oprofile
とします。
Oprofileでは、Oprofileデーモンに対して「opcontrol」コマンドから指示を与えることで、プロファイルデータを取得する仕組みになっています。
具体的には、まず起動中のOProfileデーモンに対して、プロファイル(OS/アプリの処理内容)を取得するため、opcontrolコマンドを実行。しばらく経ったら再びopcontrolコマンドでプロファイルの取得を停止し、opreportコマンドでデータを解析する、という流れになります。
試しに動かしてみる場合は次のように実行します。opcontrolはルート権限で実行する必要があります。
# opcontrol --no-vmlinx (1)
# opcontrol --start-daemon (2)
# opcontrol --init (3)
# opcontrol --start (4)
# opcontrol --stop (5)
(1)はカーネルのプロファイルまで取らないよう指定するコマンド。(2)でデーモンを起動します。(3)で、OProfileのモジュールをロードするなど準備しています。(4)でデータを記録し始め、(5)で記録を停止。以上の操作が終わったら、「opreport -n」と実行することでデータを見ることができます。