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.