FreeBSD Daily Topics

2012年5月17日FreeBSD ZFS、DMUの最適化と高速化:3倍~10倍/第8回FreeBSD勉強会、6/8に開催

zfs

Optimizing ZFS for Block Storage

BSDCan 2012で現在開発が進められているZFSに関する取り組みがOptimizing ZFS for Block Storageとして発表されました。大規模ストレージプロダクトを開発・提供しているSpectra Logicの後援で進められている取り組みで、開発の進捗をみる限りでは、成果物はFreeBSD 10-CURRENTにマージされるのではないかと思います。

取り組まれている開発はZFSのDMU(Data Management Unit)を対象としたものです。とくに次の3つの点が改善された点が注目されます。

  • 特定の条件下(レコードサイズよりも小さいチャンクでZFSデータブロックの書き込みを実施しようとした場合)でコピーオンライトフォールトが発生するため、これを回避する
  • DMUにおける同期読み込みを非同期読み込みになるように書き換える
  • DMU経由で実施される並列読み込み処理において入出力ごとにスレッドコンテキストのアロケートが発生しないように書き換える

DMUのステート遷移を従来のものよりもより細かく管理するように変更したり、スレッドブロックの実装をコールバックの実装に置き換えるなどの開発を実施して、上記目的を達成したと説明がありました。現状のパッチはZFS Projects - Copy On Write Avoidance / Asynchronous DMUから取得することができます。かなり書き換えが実施されていることがわかります。

発表中に実際にデモンストレーションがありました。目の前でZFSプールをexportした後ZFSカーネルモジュールをアンロード、開発中のZFSカーネルモジュールをロードして再度ZFSプールをimportして処理状況を比較するといったデモが実施されました。機能的にはそのとおりなのですが、実際に開発中のZFSカーネルモジュールに動的に切り替えて処理を比較するというデモは見ていて新鮮に思いました。

現在の実装で書き込み(シーケンシャル・ランダム)と読み込み(ランダム)の性能が向上したということです。場合によるのですが、効果が見込めるケースでだいたい3倍から10倍の性能向上が確認できたということです。示されたグラフではシーケンシャルな読み込みに関しても若干の性能向上が確認できました。

今後の開発目標もいくつか紹介されており、取り組みが成功した場合にはさらに性能の向上が期待できそうです。ZFSはその仕組上、読み込みの性能がファイルシステム全体の性能に大きな影響を与えます。今回、DMUに手を入れてこの部分の最適化(特に同期読み込みを非同期読み込みに書き換えた)を実施したことは、注目に値します。

タイムラインから考えてFreeBSD 10-CURRENTに取り込まれることになると思いますので、FreeBSD 10-RELEASEは優れたZFSパフォーマンスを実現したバージョンとして注目されることになりそうです。

勉強会

FreeBSD Study 8th

約1年4ヵ月ぶりにFreeBSD勉強会が再開します。

今回のテーマは「FreeBSDのJail機構と資源制御⁠⁠、講師は東京工業大学の佐藤広生氏です。FreeBSD上で複数の独立した仮想環境の構築・資源制御を行うための方法をいくつか紹介し、具体的な例を使って各々の利点・欠点を詳説します。

お申込みは以下サイトから可能となっています。

第8回 FreeBSD勉強会
http://atnd.org/events/29114

おすすめ記事

記事・ニュース一覧