プロフィール

kosaki

Author:kosaki
連絡先はコチラ

ブログ検索
最近の記事
最近のコメント
最近のトラックバック
リンク
カテゴリー
月別アーカイブ
RSSフィード
FC2ブログランキング

スポンサーサイト このエントリーをはてなブックマークに追加

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | 【--------(--) --:--:--】 | Trackback(-) | Comments(-)

2.6.34のused once ページに対する改善をcopybenchで検証してみた このエントリーをはてなブックマークに追加

従来のLinuxはread(2)やwrite(2)によるメモリアクセスは二回タッチでactiveリストへ移動だったのに、
mmapによるタッチは(pteのaccess bitが1bitしかない関係で)1回タッチでactiveリストになっていた。

そのため、現代的なマシンではmmapを使ってコピーすると逆に遅いという自体が発生していた。
以下のURL参照

http://d.hatena.ne.jp/kzk/20060513


んで、1年ぐらい前にmadviseしたときだけ、page activationを控えめにするパッチが入っていたのだが
今回2.6.34において、madviseなしでもused onceページはactiveリストに移動しないように論理が変更された。

と、定性的に説明するのも芸がないので、ベンチをとってみた。


測定ソフト
--------------------------
copybench ver 0.1 http://code.google.com/p/copybench/

測定環境
------------------------------------
メモリ: 500M (の環境をcgroupで作った)
コピー対象ファイルサイズ: 1.5G


+ time ./rw_cp /tmp/bigfile /tmp/bigfile2
0.09user 26.19system 0:54.32elapsed 48%CPU (0avgtext+0avgdata 1360maxresident)k
3072832inputs+5674032outputs (0major+106minor)pagefaults 0swaps

+ time ./rw_fadv_cp /tmp/bigfile /tmp/bigfile2
0.08user 25.82system 0:50.83elapsed 50%CPU (0avgtext+0avgdata 1376maxresident)k
3072584inputs+6752512outputs (0major+107minor)pagefaults 0swaps

+ time ./mm_sync_cp /tmp/bigfile /tmp/bigfile2
3.42user 32.59system 0:59.75elapsed 60%CPU (0avgtext+0avgdata 2042576maxresident)k
3073104inputs+3080320outputs (7major+768105minor)pagefaults 0swaps

+ time ./mm_sync_madv_cp /tmp/bigfile /tmp/bigfile2
3.54user 32.91system 1:00.02elapsed 60%CPU (0avgtext+0avgdata 2041536maxresident)k
3072856inputs+6056488outputs (2major+768103minor)pagefaults 0swaps

+ time ./mw_cp /tmp/bigfile /tmp/bigfile2
0.00user 28.39system 0:53.09elapsed 53%CPU (0avgtext+0avgdata 1380608maxresident)k
3072832inputs+4456448outputs (3major+384101minor)pagefaults 0swaps

+ time ./mw_madv_cp /tmp/bigfile /tmp/bigfile2
0.00user 27.91system 0:52.49elapsed 53%CPU (0avgtext+0avgdata 1021680maxresident)k
3072856inputs+5076432outputs (1major+384103minor)pagefaults 0swaps


以前は mm_sync_cp (readもwriteもmmapで、madviseなし)だけelapsが二倍遅いとかザラだったので、
結構いい感じ。

しかし、いまだに多くのツールでmmapのほうが速いと盲目的に信じているのは困りものである。ほむり。
関連記事


linux | 【2010-05-02(Sun) 00:27:57】 | Trackback:(0) | Comments:(0)
  1. 無料アクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。