Applications running on a UNIX platform need to be notified when some activity occurs on a socket or other descriptor, and this is traditionally done with the select() or poll() system calls. However, it has been shown that the performance of these calls does not scale well with an increasing number of descriptors. These interfaces are also limited in the respect that they are unable to handle other potentially interesting activities that an application might be interested in, these might include signals, file system changes, and AIO completions. This paper presents a generic event delivery mechanism, which allows an application to select from a wide range of event sources, and be notified of activity on these sources in a scalable and efficient manner. The mechanism may be extended to cover future event sources without changing the application interface.
[1]
Jeffrey C. Mogul,et al.
Scalable Kernel Performance for Internet Servers Under Realistic Loads
,
1998,
USENIX Annual Technical Conference.
[2]
David Mosberger,et al.
httperf—a tool for measuring web server performance
,
1998,
PERV.
[3]
Peter Druschel,et al.
A Scalable and Explicit Event Delivery Mechanism for UNIX
,
1999,
USENIX Annual Technical Conference, General Track.
[4]
Chuck Lever,et al.
Scalable Network I/O in Linux
,
2000,
USENIX Annual Technical Conference, FREENIX Track.
[5]
Carl Staelin,et al.
lmbench: Portable Tools for Performance Analysis
,
1996,
USENIX Annual Technical Conference.