Adding io_uring transport to Netty - Google Summer of Code 2020
- Student: Josef Grieb
- Github: @1Jo1
Aim
The new io_uring interface added to the Linux Kernel 5.1 is a high I/O performance scalable interface for fully asynchronous Linux syscalls. The goal of this project is to add io_uring based transport for Linux to make Netty more efficient in terms of throughput and latency by reducing the number of syscalls.
Implementation
io_uring consists of two ring buffers a submission queue and completion queue which are shared with the user application netty, we decided to use unsafe operations to access to the ring buffer information( like head & tail etc.) as JNI calls are quite slow
What still needs to be done
- missing error handling in JNI
- fixing bugs
- adding more tests
Pull Request: netty/netty#10356
Reported io_uring bugs:
- https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.8.5&id=df18711f9c002335f278628206ffc65af6fdf1f6
- https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.8.5&id=df18711f9c002335f278628206ffc65af6fdf1f6