Lazy asynchronous I/O for event-driven servers

  • Authors:
  • Khaled Elmeleegy;Anupam Chanda;Alan L. Cox;Willy Zwaenepoel

  • Affiliations:
  • Department of Computer Science, Rice University, Houston, Texas;Department of Computer Science, Rice University, Houston, Texas;Department of Computer Science, Rice University, Houston, Texas;School of Computer and Communication Sciences, EPFL, Lausanne, Switzerland

  • Venue:
  • ATEC '04 Proceedings of the annual conference on USENIX Annual Technical Conference
  • Year:
  • 2004

Quantified Score

Hi-index 0.00

Visualization

Abstract

We introduce Lazy Asynchronous I/O (LAIO), a new asynchronous I/O interface that is well suited to event-driven programming. LAIO is general in the sense that it applies to all blocking I/O operations. Furthermore, it is lazy in the sense that it creates a continuation only when an operation actually blocks, and it notifies the application only when a blocked operation completes in its entirety. These features make programming high-performance, event-driven servers using LAIO considerably easier than with previous interfaces. We describe a user-level implementation of LAIO, relying only on kernel support for scheduler activations, a facility present in many Unix-like systems. We compare the performance of web servers implemented using LAIO to the performance obtained with previous interfaces. For workloads with an appreciable amount of disk I/O, LAIO performs substantially better than the alternatives, because it avoids blocking entirely. In one such case, the peak throughput with LAIO is 24% higher than the next best alternative. For in-memory workloads it performs comparably.