OProfile > 基本的な使い方

更新日 2012-04-15
広告
OProfileを使うと、Linuxのカーネルやアプリケーションをプロファイリングできます。ここでは、基本的な使い方を紹介します。

プロファイリング開始

以下のコマンドを実行すると、プロファイリングを開始します。 OProfileはバックグラウンドプロセスとして稼働し、/var/lib/oprofile/samples/current 以下にプロファイリング結果を蓄積します。
$ opcontrol --start
もしかすると、以下のメッセージが表示されるかもしれません。
$ opcontrol --start
No vmlinux file specified. You must specify the correct vmlinux file, e.g.
opcontrol --vmlinux=/path/to/vmlinux
If you do not have a vmlinux file, use 
opcontrol --no-vmlinux
Enter opcontrol --help for full option
これは、「カーネルのプロファイリングをしようとしたけど、プロファイリング用のカーネルのイメージが見つかりません」というエラー。vmlinuxファイルを用意/指定するか、もしくは、以下のように--no-vmlinuxオプションを指定して一度実行する必要があります。
$ opcontrol --no-vmlinux
--no-vmlinuxオプションを指定すると、次からはカーネルのプロファイリングをしなくなります。

プロファイリング停止

以下のコマンドを実行すると、プロファイリングを停止します。
 $ opcontrol --stop

プロファイリング結果のリセット

以下のコマンドで、それまでのプロファイリング結果をリセットできます。
 $ opcontrol --reset
プロファイリングを停止した後、リセットせずに、再びプロファイリングを開始すると、それまでのプロファイリング結果に追加する形でプロファイリング結果が蓄積されます。

プロファイリング結果の保存

プロファイリング結果をリセットする前に、以下のコマンドを実行すると、それまでのプロファイリング結果を保存できます。
 $ opcontrol --save=hogehoge
"hogehoge"の部分が、保存するディレクトリ名になります。/var/lib/oprofile/samples/ 以下に、指定した名前のディレクトリが作成され、プロファイリング結果が保存されます。

プロファイリング結果の参照

プロファイリング結果は、opreportコマンドで参照します。
 $ opreport
オプションを何も指定しない場合、/var/lib/oprofile/samples/current 以下のプロファイリング結果を参照し、各プロセスのCPU使用カウントと、使用率を一覧表示します。OSを含めた各プロセスの中で、一番CPUを使用しているプロセスがわかります。
特定のプロセスの詳細な結果を見るには、次のコマンドを実行します。
 $ opreport -l /usr/local/pgsql/bin/postgres
-l に続いて、プロファイリング結果を参照したいプロセスの、実行ファイルを指定します。指定したプロセスにおいて、どの関数が、どのくらいCPUを使用しているかが、わかります。上の例では、PostgreSQLの実行ファイルを指定しています。
ただし、指定した実行ファイルが、デバッグシンボルを残してコンパイルされていないと、詳細な結果を見ることはできません。ちなみに gcc でコンパイルする場合、 -g オプションを指定してコンパイルすると、デバッグシンボルを残せます。
また、-g オプションを合わせて指定すると、行数とシンボルも参照できます。
-d オプションを追加すると、非常に細かい情報を参照できます。関数の中の、どの行がボトルネックになっているかまでわかります。
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system