Skip to content

Use io_uring instead of epoll when supported #753

@lpereira

Description

@lpereira

io_uring is a new method to perform efficient I/O on Linux systems. It provides a completion model (rather than a readiness model), similar to what IOCP on Windows provides, and unlike the standard poll-like interfaces, it can be used to request I/O from regular files as well (and, unlike the old/broken AIO in Linux, it doesn't require files to be opened in O_DIRECT mode).

It is a recent development, but reports of it being used by servers are very promising, often yielding gains exceeding 2 or 4x in throughput. Here's a talk by its main author with details, including benchmarks.

In addition to I/O (read/write/poll), it's also possible to handle connections (accept/connect) and a bunch of other things.

It should be possible to enable this and have both io_uring and epoll (as a fallback) in pal_networking.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-System.Net.SocketsenhancementProduct code improvement that does NOT require public API changes/additionsos-linuxLinux OS (any supported distro)tenet-performancePerformance related issue

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions