Comparing and Evaluating epoll, select, and poll Event Mechanisms
Louay Gammo, Tim B. Brecht, Amol Shukla, David Pariag · 2004
This paper uses a high-performance, event-driven, HTTP server (the server) to compare the performance of the select, poll, and epoll event mechanisms. We subject the server to a variety of workloads that allow us to expose the relative strengths and weaknesses of each event mechanism. Interestingly, initial results show that the se-lect and poll event mechanisms perform com-parably to the epoll event mechanism in the absence of idle connections. Profiling data shows a significant amount of time spent ex-ecuting a large number of epoll_ctl sys-tem calls. As a result, we examine a variety of techniques for reducing epoll_ctl over-head including edge-triggered notification, and introducing a new system call (epoll_ctlv) that aggregates several epoll_ctl calls into a single call. Our experiments indicate that al-though these techniques are successful at re-ducing epoll_ctl overhead, they only im-prove performance slightly. 1