Scalable kernel performance for Internet servers under realistic loads

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


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.

Research Areas