Linux 。色んなアーキテクチャに対応。但し CPU によっては性能を全部発揮できない。ノートPCだと残念な場合も。
これも kernel モジュール & クライアントユーティリティ。というか sysprof よりかなり古い。(参考: sysprofアナウンスへのoprofileでいいじゃんというコメントへの反論)
なんかもう色々できる。
% opcontrol --vmlinux=/usr/src/linux-2.6.15.4/vmlinux --callgraph=20 # 設定 % opcontrol --start # 動け % opcontrol --reset # カウンタのリセット % ./a.out # 実行 % opcontrol --dump # 結果をファイルに保存 % opreport # 結果見る % opreport -c # コールグラフ見る % opannotate -a -s # ソースつきで見る % opcontrol --stop # 止める % opcontrol --shutdown # プロセスも止める
とかがよくありそうなストーリー。
google-perftools やら sysprof みたいなタイマーベースの実装以外にも、なんか CPU のプロファイル情報を使う。よって対応している CPU では出鱈目に多くのサンプル数を拾ってくれる。
あと、対応してる CPU だと opcontrol --event で拾うイベントを選択できる。L2キャッシュミスだけをカウントしたりできるのです。
/dev/oprofile に oprofilefs とかいうファイルシステムでマウント。なんか独自のプロファイラをここ見て作るのも面白そうなんだけど…