oprofile使用概要
3208 ワード
Oprofile使用
1紹介
Oprofileはlinux上の性能モニタリングツールであり、CPUハードウェアが提供する性能カウンタを通じてイベントをサンプリングし、コードレベルからプログラムの性能消費状況を分析し、プログラムの性能の問題点を探し出す.
2 oprofileインストール
RHEL6.8 GAにはインストールパッケージが直接提供されており、yumソースを配置して直接インストールすればよい.
yum install oprofile
3 oprofile使用検出イベント を設定する.
opcontrol --event=::::
各フィールドの意味は次のとおりです.
event-name
イベント名、例えばCPU_CLK_UNHALTED、サポートされているイベントリストはopcontrol--list-eventsコマンドでリストできます
sample-rate
1回のサンプリングをトリガーするイベントカウント値(100000など)
unit-mask
ハードウェアユニットマスク、例えば0 x 0 F
kernel
カーネルをモニタリングするかどうか、0または1の値を取る
user
ユーザースペースをモニタリングするかどうか、0または1の値を取る
実測事例:
opcontrol --event=CPU_CLK_UNHALTED:6000:0 x 00:00:0:1#core cycleに対してprofileを行う検出開始 opcontrol--init#ロードモジュール
opcontrol--reset#現在のセッションのデータを消去
opcontrol--start#profilingを開始
注意:opcontrol–startが間違っている場合は、次のコマンドで解決できます.
opcontrol --deinit
echo 0 >/proc/sys/kernel/nmi_watchdogは、検出データ を保存する.
プログラム業務の実行が完了した後、以下のコマンドを使用して監視データをダンプします.
opcontrol--dump#収集したデータをファイルに書き込む検出停止 opcontrol–stop#profilingを停止
opcontrol–shutdown#デーモンプロセスを閉じるoprofiled
opcontrol–deinit#アンインストールモジュール
4 oprofileその他の使い方
イベントのモニタリングに加えて、oprofileでは以下の使用が可能です.カーネルファイル を監視するかどうか
カーネルをモニタリングする場合は、カーネルのファイルパスを指定する必要があります.fileがカーネルファイルのフルパスである次のコマンドを使用します.
opcontrol --vmlinux=file
カーネルのパフォーマンスモニタリングが不要な場合は、ここで直接--no-vmlinuxパラメータを使用します.
opcontrol --no-vmlinuxモニタデータ分離方式 を設ける.
opcontrol --separate=
いくつかのパラメータがあります.
none
do not separate the profiles (default)
library
generate per-application profiles for libraries
kernel
generate per-application profiles for the kernel and kernel modules
all
generate per-application profiles for libraries and per-application profiles for the kernel and kernel modules
例:
Opcontrol --separate=library oprofileより多くの使い方opcontrol–help を参照
5性能データ分析
データのダンプを監視すると、
1)各モジュール全体の性能消耗状況を表示する
opreport
2)各関数の性能消耗状況を表示する
opreport -l
3)コードレベルのパフォーマンスメッセージの表示
opannotate -s
6スクリプトの例以下のスクリプトは、以前のテスト中に一時的に書かれたもので、採集の考え方は参考になります.
参考文献 http://hutaow.com/blog/2013/12/29/performance-analysis-with-oprofile/
注:転載する必要がある場合は、出典を表示してください.
1紹介
Oprofileはlinux上の性能モニタリングツールであり、CPUハードウェアが提供する性能カウンタを通じてイベントをサンプリングし、コードレベルからプログラムの性能消費状況を分析し、プログラムの性能の問題点を探し出す.
2 oprofileインストール
RHEL6.8 GAにはインストールパッケージが直接提供されており、yumソースを配置して直接インストールすればよい.
yum install oprofile
3 oprofile使用
opcontrol --event=::::
各フィールドの意味は次のとおりです.
event-name
イベント名、例えばCPU_CLK_UNHALTED、サポートされているイベントリストはopcontrol--list-eventsコマンドでリストできます
sample-rate
1回のサンプリングをトリガーするイベントカウント値(100000など)
unit-mask
ハードウェアユニットマスク、例えば0 x 0 F
kernel
カーネルをモニタリングするかどうか、0または1の値を取る
user
ユーザースペースをモニタリングするかどうか、0または1の値を取る
実測事例:
opcontrol --event=CPU_CLK_UNHALTED:6000:0 x 00:00:0:1#core cycleに対してprofileを行う
opcontrol--reset#現在のセッションのデータを消去
opcontrol--start#profilingを開始
注意:opcontrol–startが間違っている場合は、次のコマンドで解決できます.
opcontrol --deinit
echo 0 >/proc/sys/kernel/nmi_watchdog
プログラム業務の実行が完了した後、以下のコマンドを使用して監視データをダンプします.
opcontrol--dump#収集したデータをファイルに書き込む
opcontrol–shutdown#デーモンプロセスを閉じるoprofiled
opcontrol–deinit#アンインストールモジュール
4 oprofileその他の使い方
イベントのモニタリングに加えて、oprofileでは以下の使用が可能です.
カーネルをモニタリングする場合は、カーネルのファイルパスを指定する必要があります.fileがカーネルファイルのフルパスである次のコマンドを使用します.
opcontrol --vmlinux=file
カーネルのパフォーマンスモニタリングが不要な場合は、ここで直接--no-vmlinuxパラメータを使用します.
opcontrol --no-vmlinux
opcontrol --separate=
いくつかのパラメータがあります.
none
do not separate the profiles (default)
library
generate per-application profiles for libraries
kernel
generate per-application profiles for the kernel and kernel modules
all
generate per-application profiles for libraries and per-application profiles for the kernel and kernel modules
例:
Opcontrol --separate=library
5性能データ分析
データのダンプを監視すると、
opreport
とopannotate
のコマンドでパフォーマンスの消費状況を確認できます.1)各モジュール全体の性能消耗状況を表示する
opreport
2)各関数の性能消耗状況を表示する
opreport -l
3)コードレベルのパフォーマンスメッセージの表示
opannotate -s
6スクリプトの例以下のスクリプトは、以前のテスト中に一時的に書かれたもので、採集の考え方は参考になります.
LOGFILE="/tmp/OProfile_LOG"
DURATION=600
echo "start OProfile ($DURATION s)"
echo "set up OProfile"
opcontrol --deinit 2>> $LOGFILE --
modprobe oprofile timer=1
opcontrol --setup --vmlinux=/usr/lib/debug/lib/modules/`uname -r`/vmlinux -- vmlinux
opcontrol -c 0
opcontrol –reset --
echo "start OProfile"
opcontrol --start >> $LOGFILE 2>&1 --
sleep $DURATION
echo "shutdown OProfile"
opcontrol --shutdown >> $LOGFILE 2>&1 --
echo "report OProfile"
opreport -l > $OUTDIR/opreport_-l.txt 2>> $LOGFILE --
echo "oprofile temp data size: $(du -sh /var/lib/oprofile)"
echo "cleanup OProfile"
opcontrol --reset
opcontrol --deinit 2>> $LOGFILE
echo "finish OProfile"
参考文献
注:転載する必要がある場合は、出典を表示してください.