LinuxのI/O多重化、epollからio_uringへ ─ カーネル5.1以降で新規開発にepollを選ぶ理由はほぼない
DRANK

6月20日、sibexi.coが「epoll vs io_uring in Linux」と題した記事を公開した。LinuxにおけるI/O多重化の2大メカニズム、epollとio_uringの設計思想・実装・性能の違いを、実際にリバースプロキシを開発した経験をもとに詳しく解説している。記事の結論は明快だ。カーネル5.1以降が動く環境であれば、新規プロジェクトでepollを選ぶ理由はほとんどない。2019年に登場したio_uringは、単なる性能改善にとどまらず、I/O処理の「設計思想そのもの」を塗り替えた。CloudflareやNode.js、Rustの非同期ランタイム(Tokio)がio_uringのバックエンドを採用し始めており、このテーマを改めて整理する意義は大きい。なお、カーネル5.1以降はUbuntu 20.04 LTS(カーネル5.4)やDebian 11以降でデフォルトで利用可能であり、2026年現在、多くの本番環境でio_uringを選択できる状況にある。

by @tf_official
Related Topics: Linux Drone Software Design