Microsoft .NET Runtime introduces IO_uring socket engine for Linux, replacing epoll. Opt‑in via OTNET_SYSTEM_NET_SOCKETS_IO_URING=1 environment variable, enabling high‑performance networking for applications. Benchmarks show 15‑40% CPU savings on Kestrel HTTP/1.1 plaintext workloads. HTTPS/TLS workloads see 10‑25% CPU reduction, boosting secure traffic performance. Potential for further gains using IO_uring zero‑copy receive and additional optimizations. Pull request led by Ben Adams of Illyriad Games, open for community review.

Article Summaries:

  • Microsoft .NET On Linux Patches Use IO_uring For Massive Performance Benefits A pull request for the Microsoft .NET Runtime build on Linux to use IO_uring for sockets is showing some massive performance benefits. Ben Adams of Illyriad Games and a .NET contributor opened the pull request to use IO_uring for sockets on Linux. This implementation is a complete, “production grade” IO_uring socket I/O engine for .NET’s System.Net.Sockets layer. With the proposed code it’s currently opt-in via the OTNET_SYSTEM_NET_SOCKETS_IO_URING=1 environment variable. This IO_uring implementation for .NET System.

Sources: