A scalable and explicit event delivery mechanism for UNIX

  • Authors:
  • Gaurav Banga;Jeffrey C. Mogul;Peter Druschel

  • Affiliations:
  • Network Appliance Inc., Santa Clara, CA;Compaq Computer Corp. Western Research Lab., Palo Alto, CA;Department of Computer Science, Rice University, Houston, TX

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

Quantified Score

Hi-index 0.00

Visualization

Abstract

UNIX applications not wishing to block when doing I/O often use the select() system call, to wait for events on multiple file descriptors. The select() mechanism works well for small-scale applications, but scales poorly as the number of file descriptors increases. Many modern applications, such as Internet servers, use hundreds or thousands of file descriptors, and suffer greatly from the poor scalability of select(). Previous work has shown that while the traditional implementation of select() can be improved, the poor scalability is inherent in the design. We present a new event-delivery mechanism, which allows the application to register interest in one or more sources of events, and to efficiently dequeue new events. We show that this mechanism, which requires only minor changes to applications, performs independently of the number of file descriptors.