ソフトウェア
上級

io_uring (非同期I/O API)(アイオーユーリング)

Jens Axboe 開発のLinux 非同期I/O API。Linux 5.1 (2019) で導入、Submission/Completion Queue ペアでシステムコール削減、高性能ストレージ / ネットワークI/O 革新。

0 回閲覧
0 いいね
2026/5/15 更新
関連タグ
Linux
Kernel
非同期I/O

概要

io_uring はJens Axboe (元Facebook・現Meta・Linux Block Layer maintainer) が主導開発したLinux 非同期I/O API。2019年5月Linux 5.1 で導入、Submission Queue (SQ) / Completion Queue (CQ) のリングバッファペアでカーネル↔ユーザ空間のシステムコールを大幅削減、従来 POSIX AIO / Linux AIO / epoll / select に代わる新世代非同期I/O 機構。

主要マイルストーン

年月Linux主要追加
2019-055.1初期io_uring (read/write/poll)
2019-115.4SQPOLL カーネルスレッド
2020-045.6recv / send / connect等のソケット対応
2020-105.10sqe_flags 拡張
2021-055.13Multishot poll / accept
2022-035.17io_uring_register_buf_ring
2022-116.0Multishot recv
2023-046.3Network Zerocopy 強化
2024-Q16.7+DirectIO 強化・futex 対応

主要機能

機能説明
Submission Queue (SQ)アプリ → カーネルへ操作リクエスト送信
Completion Queue (CQ)カーネル → アプリへ完了通知
SQPOLLカーネルポーリングスレッド (高性能モード)
IORING_OP_*60+ の操作種 (read/write/poll/send/recv等)
Buffer Registration事前buf 登録で領域参照高速化
FixedFiles事前fd 登録
LinkedSQEs複数操作の連結 (cp / read+write 等)
Multishot1 SQE で複数完了 (accept ループ等)
MSG_RING別io_uring 間メッセージ送信

性能比較

ベンチマークepollLinux AIOio_uring
4KB Random Read IOPS240k280k1.7M
nginx シングルスレッド95k req/s-145k req/s
RocksDB GET QPS1.0×1.1×1.4×
Network ECHO80k qps-200k qps

主要採用

ソフトウェアio_uring 採用
RocksDBoptional backend
CephRBD client
QEMUvirtio-blk async
nginx(実験的)
SQLiteoptional backend
Docker / containerd一部
ScyllaDB標準
io_uring-cp (cp utility)あり

セキュリティ問題

CVE年内容
CVE-2022-322502022sqe_flags 競合状態
CVE-2023-25982023fixed buffer の use-after-free
CVE-2023-18722023poll cancel UAF

Google Project Zero / kernelCTF で多数の脆弱性発見、Linux 6.1+ で大幅修正・現在は安定化。Google ChromeOS / Android はio_uring を無効化 (セキュリティ重視)。

関連用語との違い

  • vs Linux AIO: 旧 / 新・Linux AIO はDirect I/O 専用
  • vs epoll: ファイルI/O 対応 (io_uring) / イベント通知 (epoll)
  • vs Windows IOCP: 同様コンセプト・カーネル横並び

FAQ

Q1: 一般アプリで使うべき? A: 標準ライブラリ統合進行中 (rust async-std / tokio・C liburing)。直接利用は専門用途で。

Q2: WindowsからLinux 性能差? A: io_uring 採用Linux でWindows IOCP を上回るスループット報告増・SQLPolling 採用環境で1M+ IOPS 達成可能。

Q3: Android で動く? A: Linux カーネル 5.10+ ベース Android 12+ で動くが Google が無効化推奨。アプリレベル直接使用は限定的。

この記事について
カテゴリーソフトウェア
難易度上級
作成日2026/5/15