HN🔥 25
💬 4
LinuxのI/Oを支配するのはどっち?epoll vs io_uring徹底比較
Sibexico
約13時間前
Linuxにおける高速な非同期I/Oの選択肢として、従来のデファクトスタンダードである「epoll」と、次世代の高性能インターフェース「io_uring」がよく比較されます。epollは長年信頼されてきたイベント通知システムですが、io_uringは低遅延かつ高スループットを実現するために、カーネルとのコンテキストスイッチを最小限に抑える設計となっており、現代のハイパフォーマンスなアプリケーション開発において注目を集めています。
C++と非同期ネットワークが好きならBoost asioがおすすめ。
そう、io_uringはepollよりかなり速いよ(確かリクエスト/秒で20%くらい速くなったはず)。ただ、難点はカーネル側でオプトインが必要なことと、セキュリティ上の理由でほとんどの環境で無効化されていることかな。カーネルとユーザーランド間でメモリを直接共有する仕組みがあって、それがちょっと危うい感じなんだよね。最近もio_uringを突いた脆弱性がいくつか報告されてるし。だからGoみたいに極限のパフォーマンスを目指すプロジェクトですら、標準でio_uringをデフォルトに採用するのは慎重なんだと思う。まあリスクを取るなら、好きな言語で自分で試すのは全然アリ。速いのは間違いないけど、それなりの代償として脆弱性のリスクを負うことになるね。