Linux 4.5からperf reportのソート方針がちょっと変わっているので忘れないようにメモ。
こんな感じでprobeを設定し、
perf probe -a _do_fork
こうやって実行する。
perf record -e probe:_do_fork -aR sleep 10
そして、perf reportを使った場合、
perf report
カーネル4.4のソースコードに含まれるperfだとこのようになります。
Samples: 9 of event 'probe:_do_fork', Event count (approx.): 9 Overhead Command Shared Object Symbol 88.89% bash [kernel.vmlinux] [k] _do_fork 11.11% tracker-miner-f [kernel.vmlinux] [k] _do_fork
カーネル4.5のだとこのように。
Samples: 9 of event 'probe:_do_fork', Event count (approx.): 9 Overhead Trace output 100.00% (ffffffff810
これは↓のpatchからソート方法が変わったためで、今まではSORT_MODENORMALだったと思うんだけど、これがSORT_MODETRACEPOINTが使われるようになりました。
なので今まで通りに表示をさせたい場合は-sオプションでソート順を指定する必要があります。ソート順はデフォルト値がtools/perf/util/sort.cに書かれていています。
13 const char default_sort_order[] = "comm,dso,symbol"; 14 const char default_branch_sort_order[] = "comm,dso_from,symbol_from,symbol_to,cycles"; 15 const char default_mem_sort_order[] = "local_weight,mem,sym,dso,symbol_daddr,dso_daddr,snoop,tlb,locked"; 16 const char default_top_sort_order[] = "dso,symbol"; 17 const char default_diff_sort_order[] = "dso,symbol"; 18 const char default_tracepoint_sort_order[] = "trace";
従来通りのソート順にするならcomm,dso,symbolですね。
sudo ./perf report -i ~/perf.data -s comm,dso,symbol
そうするとこうなります。
Samples: 9 of event 'probe:_do_fork', Event count (approx.): 9 Overhead Command Shared Object Symbol 88.89% bash [kernel.vmlinux] [k] _do_fork 11.11% tracker-miner-f [kernel.vmlinux] [k] _do_fork
まおうさんに感謝!
Linuxカーネル Hacks ―パフォーマンス改善、開発効率向上、省電力化のためのテクニック
- 作者: 池田宗広,大岩尚宏,島本裕志,竹部晶雄,平松雅巳,高橋浩和
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/07/26
- メディア: 単行本(ソフトカバー)
- 購入: 4人 クリック: 50回
- この商品を含むブログ (4件) を見る