DM-IntegrityがBTRFSより遅いのはなぜですか?

DM-IntegrityがBTRFSより遅いのはなぜですか?

BTRFSがファイルを検出する方法と同様に、ブロックデバイスの自動破損を検出したいと思います。 BTRFSが許可するよりも多くのパラメータを調整できるように、BTRFSでこれを行い、BTRFSのデフォルトのチェックサムを無効にしたいと思います。 DM-Integrityが最良の選択のようです。原則として、BTRFSと同じことを行う必要があります。

問題は非常に遅く、使用できないということです。 BTRFSの順次書き込み速度は170MiB / s以上(圧縮無効)ですが、DM-Integrityの順次書き込み速度は8〜12MiB / sです。 DM-IntegrityパラメータをBTRFS(セクタサイズ、ハッシュアルゴリズムなど)と一致させ、他のパラメータ(データインターリーブ、ビットマップ、基本対汎用ハッシュドライバなど)のさまざまな組み合わせを試しました。

書き込みは非同期ですが、書き込みをコミットするのにかかる時間に基づいて速度が計算されます(したがって、メモリキャッシュによる違いではないようです)。すべてが書き込み順序を並べ替える必要がある書き込みパスBcacheの上にあります(それでBTRFS並べ替え書き込みではないと思います)。この大きなパフォーマンスの違いを説明する他の理由は思い出されません。

私はDebian 11と独自にコンパイルされた6.0.12 Linuxカーネルを使用しており、ハッシュアルゴリズムとしてsha256を使用しています。私のブロックレイヤーは(dm-integrityまたはbtrfs)/lvm/dm-crypt/bcache/dm-raidです。

私のテストに欠陥がありますか?それとも、この大きなパフォーマンスの違いについての他の説明はありますか? BTRFSと同様のパフォーマンスを得るためにDM-Integrityを使用していくつかのパラメータを変更できますか?

答え1

以前のテストで少なくとも2つの欠陥が見つかりましたが、違いが完全に説明されているかどうかはまだわかりません。ログ/ビットマップモードまたは整合性アルゴリズムはどちらもDM-Integrityスーパーブロックに保存されません。フォーマット時にこれらのオプションを提供しましたが、有効にするときは提供しなかったため、デフォルト値(ログモードとsha256)に戻りました。

ログモードはパフォーマンスに大きな影響を与え、おそらく違いのほとんどを説明します。実際の影響を理解するには、まだすべてのテストを再作成する必要があります。

関連情報