Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

30.6.3.4. 最大 Discard Sectors

VDO デバイスに対する DISCARD(TRIM)操作の最大サイズは、システムの使用率に基づいて /sys/kvdo/max_discard_sectors を使用して調整できます。デフォルトは 8 セクター(つまり 4 KB ブロック)です。VDO が引き続きループで処理できますが、同時に 1 つのブロックを処理し、破棄されたブロックのメタデータの更新がジャーナルに書き込まれ、次のブロックから開始する前にディスクにフラッシュされるようになります。
VDO ボリュームをローカルファイルシステムとして使用すると、Linux カーネルの汎用のブロックデバイスコードが、複数のサイズの小さい破棄要求を壊し、並行して送信するため、小さいサイズの破棄サイズが最適であることが見つかります。デバイスに I/O アクティビティーが小さいと、VDO は、多数の小さな要求を同時に処理でき、1 つの大きな要求よりもはるかに迅速に処理できます。
VDO デバイスを SCSI ターゲットとして使用すると、イニシエーターとターゲットソフトウェアに追加要素が導入されます。ターゲットの SCSI ソフトウェアが SCST の場合は、最大破棄サイズを読み取り、イニシエーターにリレーします。(Red Hat は、LIO SCSI ターゲットコードとともに VDO 設定のチューニングを試みていません。)
Linux の SCSI イニシエーターコードは一度に 1 つの破棄操作を許可するため、最大サイズを超える破棄要求は、複数のサイズの破棄に障害が発生し、一度に 1 つずつ、ターゲットシステム(および VDO)に送信されます。したがって、VDO がシリアルで小さい破棄操作を多数処理することに加え、2 つのシステム間のラウンドトリップ通信時間により、追加のレイテンシーが追加されます。
最大破棄サイズが大きいと、この通信オーバーヘッドを削減することができます。しかし、大規模なリクエストが VDO 全体に渡され、一度に 1 つの 4 KB ブロックを処理します。ブロックごとの通信遅延はありませんが、大規模なブロックに追加の処理時間が経つとなっても、SCSI イニシエーターのソフトウェアがタイムアウトする可能性があります。
SCSI ターゲットの使用の場合、Red Hat は、イニシエーターのタイムアウト設定内で一般的な破棄時間を確保しつつも、破棄サイズが大きくなるように設定することを推奨します。数秒ごとに余分なラウンドトリップコスト(たとえば、パフォーマンスが大幅に影響せず、タイムアウトが 30 秒か 60 秒の SCSI イニシエーターはタイムアウトしないようにする必要があります)。