Io uring

io_uring (旧aioring) はストレージデバイスの非同期IO操作のためのLinuxカーネルのシステムコールインターフェースの一つであり、類似インターフェース（ファイル記述子を介してアクセスされるデータをする/や/のような関数によって提供されるもの）におけるパフォーマンス問題に対処したものとなっている。
このインターフェースの開発は進行中であり、主に Meta のジェンス・アクスボーが作業を行っている。
インターフェース.
この io_uring は I/O リクエストの提出 (submission) と完了 (completion) それぞれを保存するために2つの「キューリング」と呼ばれるリングバッファを作成することによって機能する。ストレージデバイスの場合、これらキューは「提出キュー (SQ)」と「完了キュー (CQ)」と呼ばれている。これらのバッファをカーネルとアプリケーション間で共有し続けることは、両社の間でバッファをコピーするための余分で高価なシステムコールの発行を不要にし、I/Oパフォーマンスを向上させる。io_uringの設計書によれば、SQバッファは利用アプリケーションによってのみ書き込み可能であり、CQバッファはカーネルによってのみ書き込み可能となっている。
歴史.
このカーネルインタフェースはLinuxカーネル バージョン5.1 で採用された。ライブラリはユーザースペースから簡単にカーネルインタフェースとやりとりするためのAPIを提供している。Linuxカーネルはバージョン2.5以降非同期IOをサポートしていたが、使用が難しくかつ非効率であると見られていた。この古いAPIは特定のニッチなユースケースのみをサポートしていた。