従来のファイルシステムベンチマークは、通常、デフォルト設定で単一のデバイスに対して`fio`などのツールを実行します。これらは生のスループットを測定するのには有用ですが、複数のデバイスにわたって複雑なデータ構造を管理するように設計された現代のCopy-on-Write(CoW)ファイルシステムの挙動を捉えることはできません。CoWシステムでは、すべての書き込み操作においてメタデータの更新やデータブロックの移動を伴う可能性があり、スナップショットの蓄積、圧縮、または冗長性の管理といった特定のワークロード下でのみ顕在化するオーバーヘッドが発生します。従来のベンチマークはこれらの「仕組み」のコストを無視するため、データの安全性や高度な機能が優先される本番環境において、ファイルシステムがどのように動作するかについて誤解を招く結果を与える可能性があります。

この課題に対処するため、`modern-fs-benchmark`スイートは、単一デバイスのテストではスキップされる特定の挙動を測定します。これには、CoWのトランザクションコミット(ZFSのトランザクショングループやBtrfsのコミット間隔など)によって引き起こされる周期的なスパイクを捉える「fsyncテールレイテンシ」や、「スナップショットの経年変化」が含まれます。後者は、スナップショットが蓄積して断片化を引き起こすことによるパフォーマンスの低下を測定します。また、このスイートは「物理I/O増幅」も追跡します。これは、アプリケーションによって要求された論理的なバイト数に対する、物理ディスクに実際に書き込まれたバイト数の比率です。この指標は、冗長性レイアウトやファイルシステムのオーバーヘッドによる隠れたコストを明らかにし、データ整合性を維持するためにファイルシステムがどれだけの「余分な」作業を行っているかをより明確に示します。

これらの現代的なファイルシステムにおける重要な違いの一つは、データ破損へのアプローチです。標準的なRAIDアレイ上のext4やXFSといった従来のスタックには、エンドツーエンドのチェックサムがなく、ディスクが破損したデータを返した場合、アレイはその「嘘の」データをエラーなしでアプリケーションに提供する可能性があります。対照的に、Btrfs、ZFS、およびbcachefsは、すべての読み取りをチェックサムに対して検証し、パリティやレプリカから破損したブロックを再構築することができます。しかし、これらの機能には「ほぼフル」の状態のようなトレードオフがあります。CoWファイルシステムは削除操作を行う際にも空き容量を必要とするため、容量に近づくとファイルシステムが書き込み不能になる壁に突き当たる可能性があります。これらのシステムは優れた信頼性を提供しますが、そのパフォーマンスは、それらが処理するために構築されたマルチデバイスかつ高冗長なワークロード下でのみ表面化する管理オーバーヘッドと密接に関連しています。