io_uring
の拡張機能
io_uring
は、記憶域デバイスの非同期I/O操作を管理するシステム・コール・インタフェースです。 実装では、UEK 8で使用可能ないくつかの機能および改善が提供されており、これらの一部は以前のUEKリリースにバック・ポートされている可能性があります。 更新には、セキュリティとパフォーマンスのための多くの最適化が含まれます。 重要な新機能と変更点は次のとおりです:
-
io_uring
では、データ・バッファとともにT10保護情報の送受信がサポートされるようになりました。 -
getsockopt()
,setsockopt()
,bind()
,listen()
およびwaitid()
の操作。 -
設定時にIORING_SETUP_SQPOLLを使用してシステム・コールを省略するメカニズム。
io_uring_enter()
をコールすると、発行キューをポーリングするカーネル・スレッドが開始され、そこで見つかったリクエストが自動的に送信されます。 -
recv()
コールおよびreads()
のバッチ・リクエスト。 -
IORING_OP_SENDZC:ゼロ・コピー書込みを実行します。
-
いくつかのリング・コードの最適化:
-
リングおよび送信キューは、ヒュージ・ページなどのユーザー・スペース・メモリーに配置できます。
-
1つのリングが別のリングにシグナルを送信して、メッセージ・リクエストを高速化できるようになりました。
-
リング関連の作業は、アプリケーションが要求するまで延期できます。
-
-
XFSでのバッファ書込みの
io_uring
の改善。 -
XFSおよびExt4での
io_uring
最適化では、ファイルへの複数のダイレクトI/O書込みをパラレルで処理できます。 -
絶対タイムアウトは、すでに使用可能な相対タイムアウトとともに可能になりました。