Skip to content

[Discussion] Re-evaluating the adoption of io_uring in Netpoll and its positioning vs. Monoio #407

@NineSue

Description

@NineSue

Hi developers,

I've been following the performance optimizations in Netpoll for a while. As Linux kernel versions (6.x+) and io_uring become more mature, I have a few small questions regarding the roadmap:

  1. Performance Threshold for io_uring: In your previous internal evaluations, what were the specific QPS or latency bottlenecks where epoll fell short of io_uring? With the latest kernels, is there a plan to introduce a formal io_uring branch?

  2. Go 1.21+ runtime.Pinner Integration: One of the historical challenges for io_uring in Go was memory pinning/safety. Since Go 1.21 introduced runtime.Pinner, does the team have plans to leverage this feature to resolve the buffer ownership issues in a potential io_uring implementation?

  3. Selection Logic (Netpoll vs. Monoio): Given that Monoio (Rust) is built heavily around io_uring, in which specific business scenarios would ByteDance recommend migrating from Netpoll (Go) to Monoio/Volo (Rust)? Is Netpoll's goal to remain as an optimized epoll-based refactor of Go's netpoller, or will it eventually embrace Proactor models?

Looking forward to your insights!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions