研究日誌。

大規模なグラフ処理に対してメモリ階層構造を考慮した高性能なソフトウェアを開発。

TLB ミスの測定。

2008-03-01 10:59:43 | Weblog
oprofile を用いるとキャッシュミスの測定や、TLB ミスの測定を行える。

イベント一覧の表示
$ sudo opcontrol --list-events

イベントの設定
$ sudo opcontrol --event=DTLB_MISSES:500:0x01

初期化する
$ sudo opcontrol --shutdown
$ sudo opcontrol --start

実行
$ sudo opcontrol --reset
$ ./a.out
$ sudo opcontrol --dump

テーブルの表示
$ opreport -c ./a.out

ソースコードレベルでのプロファイル情報の表示
(-a でアセンブリコード、-s でソースコードの表示)
$ opannotate -a -s ./a.out

一時停止
$ opcontrol --stop

終了する
$ opcontrol --shutdown




p2p タイプの10クエリを1スレッドで解いた際のサンプリング結果を一部のせておく。
・バケット法
2181704 99.6357 dijkstra_with_heap
4150 0.1895 quicksort_by_tail
1017 0.0464 read_dimacs_graph

・2分ヒープ
1540940 99.4507 dijkstra_with_bucket
4108 0.2651 quicksort_by_tail
1022 0.0660 read_dimacs_graph

やはりダイクストラ法のループ内で大量の TLB ミスが起こってしまっている。
特にポテンシャルを比較するところである。これを減らしていくことが今後の目標だ。