CFQに関する次の記述は矛盾していると思います。
- 「非同期要求の場合、すべてのプロセスからのすべての要求がまとめてバッチ処理されます。プロセスのI/O優先順位に応じて」。
- IOスケジューラが非同期と見なす唯一の要求は、定期的な「バッファリングされた」書き込みです。。
- 」
ionice
非同期書き込みIOの優先順位を下げません。」。
どのステートメントが正しくないのですか?あるいは、両方が正しい場合、なぜ互いに矛盾しないのですか?
答え1
私の考えでは、2回と3回の声明が間違っていると思います。
ユーザープロセスは、以下をsync_file_range()
使用して非同期書き込みIOを生成できます。これらのIOは呼び出しプロセスによって直接送信されるため、プロセスIOの優先順位の影響を受ける可能性があります。
sync_file_range() は、非同期書き込みストアがトリガーされるように設計されています。現在の実装(Linux v4.20)では、書き込み保存モードWB_SYNC_NONEを使用してREQ_SYNC設定を防ぎます。プログラムが SYNC_FILE_RANGE_WAIT_AFTER フラグを含む書き込み保存を待つ場合も同様です。 (しかし、v2.6.29とv4.4の間のカーネルはWB_SYNC_ALLを誤って使用したため、REQ_SYNCはsync_file_range()によってトリガーされたすべての書き込み保存に使用されました。)
非同期write()呼び出し中に「直接収集」を実行する必要がある場合は、プロセスIO優先順位も使用できます。という2011年に廃止。