ext4の遅延割り当て(delayed allocation)機能は、データがディスクに書き込まれる際に複数のブロックを連続した状態で確保できることから、データのフラグメンテーションを回避し、パフォーマンス向上に大きな効果があるとされている。デフォルトではこの遅延割り当てモード(delalloc)は有効になっているが、ディスクの空き容量が不足しているときやマウントオプションを使用しているときは無効にされる(nodelalloc)ことが多い。だがdelallocを無効にすると、エクステントのマージ(連続したブロックに1つのアドレスを割り当て)が無効になり、書き込みのパフォーマンスが大幅に低下するという問題が存在する。
このdelalloc無効時のパフォーマンス低下を解決するパッチを、SUSEのソフトウェアデベロッパであるJan Karaが作成、6月16日付けでコミットされている。Karaによれば、delalloc有効時のスループットが200MB/sの場合、これを無効にすると4MB/sまでパフォーマンスが低下するが、このパッチを適用することでdelalloc無効時でもエクステントのマージを安全に実現し、パフォーマンスの低下を抑えることができるという。
-
- index : kernel/git/tytso/ext4.git - Ext4 filesystem tree
ext4のパフォーマンス向上の実現に加え、「EXT4_GET_BLOCKS_CREATE_UNRIT_EXT
」というたった1行を追加しただけの、非常にシンプルな変更であることも注目される。このパッチは現在開発中の「Linux 5.19」の次のバージョンとなる「Linux 5.20」に実装される予定だ。