Modern server applications are built around an event loop where they wait for some form of input from a user and then perform some computation in response to the content or type of input received. At the heart of this event loop is a method for the application to communicate interest in certain events to the operating system and for the operating system to return a list of requested events which have occurred to the process when requested.
The abstractions built for this event handling each come with a cost to performance. In this talk we will quantify this cost and propose a system, UKELELE, which provides an abstraction for event handling that is easy to use, as quantified by the amount of change required to port to it, and more performant than what is available in Linux today. We will also explore several optimizations available to us by building on UKL to create shorter code paths for event handling and measure each of their impacts on application performance. UKELELE shows an improvement in overall throughput but more significantly a reduction in tail latency when making use of all our available optimizations.