oprofileについてのメモ(随時加筆予定)
Ubuntu での実行
参考: http://smackerelofopinion.blogspot.jp/2013/05/getting-started-with-oprofile-on-ubuntu.html
インストール
$ sudo apt-get install oprofile
vmlinuxのインストール
oprofileを実行するにはvmlinuxを指定する必要があるが、Ubuntuには標準で用意されていないため、別途インストールする必要がある。
$ echo "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ddebs.list
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 428D7C01
$ sudo apt-get update
$ sudo apt-get install linux-image-$(uname -r)-dbgsym
容量が大きいのでインストールに時間がかかる。(自分の環境では2時間ほど)
前準備
oprofileにvmlinuxのありかを教える。
$ sudo opcontrol --vmlinux=/usr/lib/debug/boot/vmlinux-$(uname -r)
設定は/root/.oprofile/daemonrc
に書き込まれるため次回からは指定不要。
デーモンoprofiled
を起動する。
$ sudo opcontrol --init
$ sudo opcontrol --start
start時に以下のエラーが出ることがある。
$ sudo opcontrol --start
Cannot find event CPU_CLK_UNHALTED
Using default event: CPU_CLK_UNHALTED:100000:0:1:1
Cannot find event CPU_CLK_UNHALTED
上記のように出てoprofiled
が起動できない時は以下を行う。
$ sudo opcontrol --deinit
$ sudo modprobe -r oprofile
$ sudo modprobe oprofile timer=1
プロファイル実行
例えばQt5のexampleにあるopenglwindowをプロファイルしてみる
$ sudo opcontrol --start
$ /usr/local/examples/gui/openglwindow
$ sudo opcontrol --dump
再度プロファイルするときはstartの代わりにresetをすれば良い。
$ sudo opcontrol --reset
プロファイル結果参照
プロファイル結果の参照にはopreport
を使用。
opreport
にはいろいろなオプションがある。
例えばコールグラフを見る場合は以下のとおり。
$ opreport -c
終了
oprofiled
の終了はshutdownでおこなう。
$ sudo opcontrol --shutdown