High-performance memory-based web servers: Kernel and user-space performance
Abstract
Web server performance has steadily improved since the inception of the World Wide Web. We observe performance gains of two orders of magnitude between the original process-based Web servers and today's threaded Web servers. Commercial and academic Web servers achieved much of these gains using new or improved event-notification mechanisms and techniques to eliminate reading and copying data, both of which required new operating system primitives. More recently, experimental and production Web servers began integrating HTTP processing in the TCP/IP stack and providing zero copy access to a kernel-managed cache. These kernel-mode Web servers improved upon newer user-mode Web servers by a factor of two to six. This paper analyzes the significant performance gap between the newer user-mode and kernel-mode Web servers on Linux and Windows 2000. Several user-mode and kernel-mode Web servers are compared in three areas: data movement, event notification, and communication code path. To establish a user-mode baseline, the paper measures the performance of highly optimized Web servers. The paper positions these user-mode implementations with those from related research projects. In particular, the “Adaptive Fast Path Architecture” (AFPA) is described and then used to implement kernel-mode Web servers on Linux and Windows 2000. AFPA is a platform for implementing kernel-mode network servers on production operating systems without kernel modifications. AFPA runs on Linux, Windows 2000, AIX, and S/390. The results show that kernel-mode performance greatly exceeds the performance of user-mode servers implementing a variety of performance optimizations. The paper concludes that significant opportunities remain to bridge the gap between user-mode and kernel-mode Web server performance.