Redoxがio_uring似のリングバッファを実装、IPCを15〜20%高速化

Redox: Ring Buffers Project Summary

Redox OSはNLnetの助成を受け、io_uringに似たリングバッファ通信をシステムタスク層に実装した。カーネルを介さずユーザー空間のプロセス間でSQ/CQを共有し、メモリコピーなしでI/Oを発行できる。RamFSやNVMedへの対応、ドライバ向け非同期エグゼキュータも完成。ベンチマークでは従来の同期システムコール比で14〜15倍高速、IPCレイテンシも15〜20%削減された。

カーネルは、呼び出し元と呼び出し先がシステムコール経由でカーネルに入った場合にベクトルレジスタを保存・復元するのではなく、ゼロで埋めるようにした。
  1. digikata

    NVMeのキューやそのアトミックなドアベル用のhead/tailレジスタから二段階隔たっていることを念頭に置くと、興味深い読み物だね。

  2. happyPersonR

    これはすごいね!!

    ストレージ以外に、これで恩恵を受けられるものがあるのか見てみたい。たとえばBTとか、そういう無線系とか。

  3. rvz

    これはRedoxチームによる素晴らしい仕事だ。ただ、RustとRedoxの非同期I/Oに関する高度に技術的なブログ記事なのに4時間でコメントが10件未満というのは、リアルタイムでスキルを衰退させエージェントに依存している多くのHNerには難しすぎるのかもしれない。

    このプロジェクトはあらゆる種類のAI利用に断固反対しているので、この記事の内容はコードを読み、自分が何をしているか分かっている人物によってチェックされ書かれたものだと信頼できる。

    > Linuxのio_uringインターフェースでは、ユーザーが1つ以上のI/O操作をカーネルに投入でき、それらはユーザースペースのプロセスをブロックすることなく非同期に処理される。マイクロカーネルであるRedoxは、I/Oをカーネル内ではなくユーザースペースのスキームプロセスで処理する。

    io_uringは非同期I/Oとしては信じられないほど高速だが、Linuxカーネルにおける巨大なセキュリティ災害でもある。Redoxが非同期I/Oのための安全なインターフェースを示せるなら、それに越したことはない。おそらくこれはOSの長期的な目標の一部だろう。

    > 長年にわたり大幅に改善されてきたとはいえ、RedoxではIPCがまだかなり遅く、リングバッファはこのオーバーヘッドをある程度までしか相殺できないため、これを最適化することは重要だ。これはシステム性能を改善する我々の取り組みの焦点となってきた。

    Redoxのリングバッファから始めて全体的な改善を目指す、この的を絞った思慮深いアプローチがとても気に入っている。Linuxと非同期エグゼキュータのベンチマーク結果を比較し、そこから改善を続けていく必要がある。

    > ここで行われた最適化は […]

この日のほかの記事

2026-10-31