問題タブ [io-uring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
184 参照

linux - epoll と io_uring を同時に待機しています

パフォーマンスを向上させるために、プロジェクトを io_uring に移行しています。ただし、システムの一部は epoll がイベント システムであり、io_uring に移動できないことに依存しています (例: データベース ドライバー、内部でソケットに書き込み、通知の読み取り/書き込みイベントを取得し、生のソケットに何が書き込まれたかを確認しません)。epoll と io_uring を一緒に使用することを余儀なくされました。1 つは epoll 用、もう 1 つは io_uring 用の 2 つのスレッドを作成することは、さまざまな理由からオプションではありません。

私の計画は、次のように、イベント ループで epoll の後に io_uring をポーリングすることでした。

これは実行不可能であることが判明しました。進行中のデータベース アクティビティがない可能性が高いepoll_waitため、タイムアウトまでブロックされるため、io_uring のすべての操作が同じタイムアウトを待機します。順序を逆にして呼び出すio_uring_wait_cqeこともありません。DB トラフィックはあるが、io_uring に何も送信されていない可能性があります。epoll が io_uring タイムアウトを待機するようにします。

これまでのところ、タイムアウトを減らすことを検討しました。しかし、それはエレガントなソリューションではありません。CPU 使用率が増加し、不要なレイテンシが追加されます。epoll と io_uring を同時に待つ方法はありますか? つまり、epoll または io_uring のいずれかが処理する必要があるとすぐにブロックを解除する関数です。

0 投票する
0 に答える
32 参照

linux-kernel - Linux: aio/io_uring で既存の vfs を使用しないのはなぜですか?

最近、io_uringの非常に初期のソース コードをトレースしていて、基本的にはLinux の aioからアイデアを取り入れていることがわかりました。これは、v5.1-rc1 の io_uring が aio に非常に似ていることを意味します。

io_それらを読んだ後でも、なぜ両方がVFS と同様のことを行うレイヤー (io_uring の場合、 prefix: で始まる) を実装するのか理解できません。私が正確に意味するのは、 io_uringの io_write です。io_uring が のようなものを呼び出さないのはなぜvfs_writeですか?

VFS のような関数が I/O 操作のオフロード (io_uring が行うこと) を達成できることを証明するために、 create_io_thread + vfs のような関数によって I/O 要求をオフロードできることを意味する最小限のプロジェクトを実装しました。