/var/log/hadoop.log

logs about distributed processing frameworks

HDFS-4953(mmap(2) を用いたローカル読み込みの高速化)について

HDFSが高速に?mmapによるzero-copyでの読み込みにて,id:kawamon さんが,HDFS-4953 のチケットについてコメントをしていた.Hadoop の処理は,IO した後の Java のオブジェクト生成などが原因で CPU ボトルネックになりやすい.よって,この手のCPUコストを削減するための高速化手法は頻繁に使われるようになるだろう.

ところで,mmap(2) について1点,気になる話を教えてもらったのでまとめておく.CentOS 5 のような古い OS では,ページフォールトハンドラがmmap用のセマフォを保持したまま IO を発行してしまう*1mmap 用のセマフォを保持したまま IO を発行してしまうと,その間に発生した全てのページフォールトが IO 待ちになってしまい,結果非常に動作が重くなる.もっとも,最近のカーネルだとロックをリリースした後にしてくれるので,関係ないのだが,CentOS 5 上で上記の機能は利用しない方が良い.該当機能をオフにするには,dfs.client.mmap.cache.size を 0 に設定すれば良い.

*1:http://lwn.net/Articles/200215/