Scalable Locality-Aware Event Dispatching Mechanism for Network Servers   

Hao-Ran Liu and Tien-Fu Chen

Department of Computer Science, National Chung Cheng University, Taiwan


Abstract

Network servers often need to process a large amount of network events asynchronously. They usually use select() or poll() to retrieve events from file descriptors. However, previous researches have shown that these system calls scale poorly when the number of open connections are significantly increased. Several kernel-level solutions have been proposed. In this paper, we first compare several event dispatching mechanisms available under Linux, and then present our user-level solution that takes advantage of temporal locality among events while polling. We show that a memory-based web server with our approach can have about 20%-30% performance improvement.


The paper published in IEE Proceedings, Software, 2004

The slides for ICOS'02

Related software in this paper:

  1. FDM Library source

  2. Test web server source (with event driven threading code)

  3. C source code to make dead connections.

  4. httperf Web server Performance measurement tool

  5. Original dphttpd server source