Online / 6 & 7 February 2021


The Evolution of File Descriptor Monitoring in Linux

From select(2) to io_uring

File descriptor monitoring is at the core of event-driven applications from graphical applications to web servers. Over the history of Linux, a number of system calls APIs have been introduced to improve upon the performance, features, and interface design. Developers may ask themselves which API they should use and how they differ.

This talk covers select(2), poll(2), epoll(7), as well as the more recent Linux AIO and io_uring APIs. We will look at the classic scalability challenges with these APIs as well as the latest shared kernel memory ring and polling approaches. An understanding of the evolution of file descriptor monitoring in Linux exposes API design topics that have relevance even if you don't need to implement an event loop in your application.

The Linux logo used for this talk was created by Larry Ewing.


Photo of Stefan Hajnoczi Stefan Hajnoczi