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:
-
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?
-
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?
-
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!