Veritas™ File System プログラマーズリファレンスガイド - Linux
- Veritas File System Software Developer's Kit
- FCL(File Change Log)
- マルチボリュームサポート
- 名前付きデータストリーム
- Veritas File System I/O
- シン再生
ダイレクト I/O
ダイレクト I/O とは、ファイルアクセスのための非バッファ形式の I/O です。VX_DIRECT キャッシュアドバイザリを設定している場合、ユーザーは、ディスクとユーザーバッファ間でデータを直接転送し、読み書きするよう要求します。 この機能により、データはカーネルにバッファリングされず、カーネルバッファとユーザーバッファ間のデータコピーが省略されるため、I/O に関連付けられている CPU オーバーヘッドを削減できます。ダイレクト I/O はまた、バッファキャッシュの領域が使われないため、その分、アプリケーションキャッシュなどほかの用途に活用できます。アプリケーションによっては、ダイレクト I/O 機能によってパフォーマンスが大幅に向上します。
ダイレクト I/O として実行される I/O 操作は、整列に関する基準を満たす必要があります。通常、ディスクドライバ、ディスクコントローラ、システムメモリ管理ハードウェアおよびソフトウェアが、整列制約を決めます。ファイルオフセットは、ブロックデバイスのブロックサイズに揃える必要があります。すべてのユーザーバッファは、長い境界またはセクタの境界に揃える必要があります。ファイルオフセットがセクタの境界に揃えられていないと、VxFS は直接読み取りまたは書き込みではなく、通常の読み取りまたは書き込みを実行します。
要求がダイレクト I/O の整列制約を満たさない場合は、データ同期 I/O が実行されます。メモリマップ I/O を使ってファイルがアクセスされている場合は、ダイレクト I/O の代わりにデータ同期 I/O が実行されます。
ダイレクト I/O は、同期 I/O と同様のデータ整合性を保持するため、現在、同期 I/O を使っている多くのアプリケーションで使うことができます。ダイレクト I/O 要求で領域割り当てやファイルの拡張を実行しない限り、i ノードメタデータへの書き込みがただちに実行されることはありません。
ダイレクト I/O の CPU コストは、RAW ディスク転送とほぼ同じです。大容量ファイルへの順次 I/O を、大容量転送サイズを使ったダイレクト I/O に置き換えると、バッファ付き I/O と同等の速度でデータが転送できるため、CPU オーバーヘッドを削減できます。
ファイルが拡張され、または領域が割り当てられる場合、ダイレクト I/O は i ノード更新の書き込みを、アプリケーションに制御を戻す前に実行する必要があります。この書き込みのため、ダイレクト I/O の一部のパフォーマンスの優位性が低下します。
ダイレクト I/O アドバイザリは、ファイル記述子単位で保持されます。