perf を使ってプロファイルを取る方法(その2)

perfのインストール方法は、http://d.hatena.ne.jp/pyopyopyo/20140702/p1 を参照してください。
要点だけまとめると debianubuntu なら

$ apt-cache search linux-perf
$ sudo apt install linux-perf-5.3

カーネルのバージョンに合わせた linux-perf パッケージをインストールするだけです

インストール後は

$ perf_5.3

のように perf_バージョン番号 のコマンドがつかえるようになります

以下コマンドの使用例を簡単に列挙します。表記の都合上,コマンド名は perf としておきます

詳細は

$ perf --help
$ perf record --help

のような感じで、コマンドラインから help が参照できます。

パフォーマンスカウンタの統計情報を見る

$ perf stat  プログラム

コードを行単位でプロファイルする

プログラムには、予めデバッグ情報を付けてコンパイルした状態で

$ perf record  プログラム
$ perf report 
$ perf annotate

OSのコンテキストスイッチを確認する

$ perf record -e context-switches  -g  プログラム
$ perf script 
$ perf script -f tid,time,event 

なおperf scriptで出力されるタイムスタンプは、スケジューラがlinuxカーネル内部で使っているタイマの値(sched_clock)で、その値はユーザ空間からは参照できないっぽい。
clock_gettime(CLOCK_MONOTINIC)やclock_gettime(CLOCK_MONOTINIC_RAW)で得られる値は、NTP等で補正がかけらた後の値(adjtimeされている)で、一致しない。