Scalable kernel performance for Internet servers under realistic loads

Gaurav Banga
Proc. 1998 USENIX Annual Technical Conf, USENIX, pp. 1-12

Abstract

UNIX Internet servers with an event-driven architecture often perform poorly under real workloads, even if
they perform well under laboratory benchmarking conditions. We investigated the poor performance of eventdriven servers. We found that the delays typical in widearea networks cause busy servers to manage a large number of simultaneous connections. We also observed that
the selectsystem call implementation in most UNIX kernels scales poorly with the number of connections being
managed by a process. The UNIX algorithm for allocating file descriptors also scales poorly. These algorithmic
problems lead directly to the poor performance of eventdriven servers.

We implemented scalable versions of the select system call and the descriptor allocation algorithm. This led
to an improvement of up to 58% in Web proxy and Web
server throughput, and dramatically improved the scalability of the system.