Io_uringとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > Io_uringの意味・解説 

io_uring

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/06/13 09:32 UTC 版)

io_uring (旧aioring) はストレージデバイスの非同期IO操作のためのLinuxカーネルシステムコールインターフェースの一つであり、類似インターフェース(ファイル記述子を介してアクセスされるデータを操作するread()/write()aio_read()/aio_write()のような関数によって提供されるもの)におけるパフォーマンス問題に対処したものとなっている[1][2](p2)

このインターフェースの開発は進行中であり、主に Meta のジェンス・アクスボーが作業を行っている[1]

インターフェース

この io_uring は I/O リクエストの提出 (submission) と完了 (completion) それぞれを保存するために2つの「キューリング」と呼ばれるリングバッファを作成することによって機能する。ストレージデバイスの場合、これらキューは「提出キュー (SQ)」と「完了キュー (CQ)」と呼ばれている[3]。これらのバッファをカーネルとアプリケーション間で共有し続けることは、両者の間でバッファをコピーするための余分で高価なシステムコールの発行を不要にし、I/Oパフォーマンスを向上させる[1][4][3]。io_uringの設計書によれば、SQバッファは利用アプリケーションによってのみ書き込み可能であり、CQバッファはカーネルによってのみ書き込み可能となっている[1]:3

歴史

元々Linuxカーネルにおいてはバージョン2.5以降より長らく非同期IO APIが搭載されていたが、この古いAPIの使用は難しくかつ非効率であると見られており[5]、また特定のニッチなユースケースにのみに向いたものとなっていた[6][7]

2019年、Linuxカーネル バージョン5.1 において独自の非同期APIである io_uring カーネルインタフェースが登場し[1][4][8]、またユーザースペースから簡単にカーネルインタフェースとやりとりするためのliburingライブラリも用意されるようになった[1][1]:12

その後、2020年代にはこの io_uring を採用したソフトウェアが数々登場した。これには後述のライブラリのほか、Intel Cloud-Hypervisor 0.9以降[9]、Limbo(SQLite互換実装)[10]PostgreSQL 18 以降(予定)[11]などが存在する。

io_uringを使用したライブラリ

  • Seastar - C++によるthread-per-coreなサーバーアプリケーション向けフレームワーク。オープンソース。リアクターの実装にlinux-aio、epoll、io_uringの3つのバックエンドが存在する[12]ScyllaDBで使われている。
  • glommio - Rustによるthread-per-coreプログラミング向けライブラリ。オープンソース。上記のSeastarに影響を受けて開発された[13]。メイン、低レイテンシ用、NVMe IOのポーリング用の3つのリングを作るのが特徴となっている[13]
  • Storage Performance Development Kit - Intelにより開発され、その後オープンソース化されたNVMe SSD向け開発キット[14]。独自のNVMeブロックデバイスはio_uringよりも高速とされている[15]が、io_uringをブロックデバイスとして使うこともできる[16]

出典

  1. ^ a b c d e f g Linux Kernel Getting io_uring To Deliver Fast & Efficient I/O - Phoronix”. Phoronix. 2021年3月14日閲覧。
  2. ^ ジェンス・アクスボー (2019年10月15日). “Efficient IO with io_uring”. 2023年4月閲覧。 エラー: 閲覧日は年・月・日のすべてを記入してください。
  3. ^ a b Getting Hands-on with io_uring using Go” (英語). developers.mattermost.com. 2021年11月20日閲覧。
  4. ^ a b The rapid growth of io_uring [LWN.net]”. lwn.net. 2021年11月20日閲覧。
  5. ^ Corbet, Jonathan. “Ringing in a new asynchronous I/O API”. LWN.net. 2021年3月14日閲覧。
  6. ^ What's new with io_uring”. 2022年6月1日閲覧。
  7. ^ How io_uring and eBPF Will Revolutionize Programming in Linux ScyllaDB 2020年5月5日
  8. ^ Faster IO through io_uring | Kernel Recipes 2019” (英語). 2021年3月14日閲覧。
  9. ^ Intel Cloud-Hypervisor 0.9 Brings io_uring Block Device Support For Faster Performance Phoronix 2020年8月8日
  10. ^ Limbo Is An SQLite-Compatible OLTP DBMS Leveraging IO_uring & Rust Phoronix 2024年5月9日
  11. ^ PostgreSQL Database Lands Initial Support For IO_uring: "Can Be Considerably Faster" Phoronix 2025年3月27日
  12. ^ seastar::reactor_options Struct Reference - reactor_backend ScyllaDB
  13. ^ a b Introducing Glommio, a Thread-per-Core Crate for Rust & Linux Datadog
  14. ^ 120 Million I/O Per Second with a Standard 2U Intel® Xeon® System SDPK 2023年2月1日
  15. ^ Understanding Modern Storage APIs: A systematic study of libaio, SPDK, and io_uring Diego Didonaら 2022年
  16. ^ Block Device User Guide SPDK

外部リンク




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  
  •  Io_uringのページへのリンク

辞書ショートカット

すべての辞書の索引

「Io_uring」の関連用語

1
8% |||||


Io_uringのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Io_uringのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのio_uring (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS