Rabbit Note

技術的な事柄をメモしていきます.

Linux ファイルシステムにおけるバグ傾向

Linux には複数のファイルシステムがあります.これらには,仕様としての機能差の他に,品質・安定度に関して大きな差があると考えられています.

今回は,そのあたりを定量的に分析した論文をご紹介.

A Study of Linux File System Evolution [キャッシュ]
https://www.usenix.org/conference/fast13/study-linux-file-system-evolution

調査の対象は,XFS/Ext4/Btrfs/Ext3/Reiser/JFS の 6 つのファイルシステム.これらについて,Linux 2.6.0 (Dec ’03) から 2.6.39 (May ’11) の間に取り込まれた 5,079 個のパッチを分析しています.

XFS vs Ext4 vs Btrfs vs Ext3 vs Reiser vs JFS

パッチの種類

まず,パッチを次の 5 種類に分類しています.

Bug
バグの修正.
Reliability
ファイルシステムのロバスト性向上.(チェックコードの追加等)
Feature
新機能の追加.
Maintenance
コードやドキュメントのメンテナンス.

これらの分布は下図の通り.

パッチの種類

新しいファイルシステムである Btrfs 以外では,Maintenance パッチが最も割合が大きいです.また,気になる Bug パッチは 40% 近くを占めています.比較的枯れていると考えられているファイルシステムと安定していないと考えられている Btrfs で割合がほぼ同じことに注目.

バグの分布

さて,気になるバグですが,どういう部分で多く発生しているのか気になるところです.そこで,ファイルシステムの主要なコンポーネント毎にバグの割合を調べたのが下図です.

横軸にそのコンポーネントがファイルシステム全体に占めるコードの割合,縦軸にコンポーネントで発生したバグが占める割合がプロットされています.赤線よりも上にきているコンポーネントはバグが発生しやすいことを,逆に下にきているものはバグが発生しにくいことを意味します.

バグの分布

各ファイルシステムで大きな傾向の差はなく,file,inode,super などでバグが発生しやすいようです.一般的にバグの温床になりやすいと考えられがちなtree は逆に少ない傾向があります.この理由として,tree の実装には注意が多く払われていることを著者は挙げています.例えば,Reiserfs では,tree のみにアサーションが挿入されています.

バグの時間推移

では,それらのバグは時間の経過とともに減っているのでしょうか?それを調べたのが下図.

バグ発生件数の推移

グラフ毎に縦軸のスケールが違うことに注意する必要がありますが,JFS 以外は全然減っていないようです.一般的に枯れていると思われる Ext3 も含めて大きな減少傾向や増加傾向はありません.

JFS のみ異なる傾向なのは,開発が停滞してきているのが原因とのこと.Reiserfs でパルス的にバグが発生しているのは,Big Kernel Lock を取り除いたことに起因するものだそうです.

バグの影響度

これまでは単純にバグの件数をカウントしていましたが,バグといっても軽微なものから影響が大きいものまでいろいろあるはず.そのあたりを分析したのが下図.

バグの重大度

ファイルシステムによらず,データ破壊につながるもの(Corrupt)がバグ全体の 40% 程度を占めているようです.

感想

膨大なパッチを丹念に分類した力作で,圧倒されます.そして,その努力に見合うだけの発見があるのが素晴らしい.一見定量的な議論ができないだろうと思われている内容について,数字を示したのは大きな成果.Best Paper に選ばれているのも納得.

今メインで使っている Btrfs の品質の推移が定量的に見れることを期待して軽く読み始めたのですが,意外な分析結果にただただ驚かされました.実データの分析は大切ですね.

ところで,ファイルシステムの品質を見るという目的に対しては,この論文では一つピースが欠けていいます.それは,パッチ対象のバグの遭遇頻度.同じくらい危険な結果を招くバグでも,起こりやすさが異なればバグの重大度は変わってくるはずです.

何らかの方法で算出できれば,ファイルシステム選択時の定量的根拠の一つにもなるし,喜ぶ人は多そうです.

実際に数字をだすのは非常に難しそうですが,今後の研究に期待したいです.

LINEで送る
Pocket

, ,

One thought on “Linux ファイルシステムにおけるバグ傾向

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です