Check out the new USENIX Web site. next up previous
Next: Conclusion Up: Performance Analysis Previous: Zero copy TCP send


Howl

In defining the best possible user-mode performance it's important to not rely solely on commercial user-mode examples for performance analysis. To that end a user-mode Web server was implemented using the best practices for performance on Linux and Windows 2000. This user-mode Web server is referred to as Howl. Howl is an attempt at estimating the maximum performance that can be achieved by a user-mode server on current versions of Linux and Windows 2000 using standard APIs. On Linux, Howl is a simple loop executing four system calls to process an HTTP request: accept(), read(), write(), and close(). It uses a user-mode version of the AFPA cache for storing responses (with pre-generated HTTP response headers). Howl offers very limited functionality and performance (no logging, only one request is processed at a time). Howl is a test case. It is not intended for general use. But under the assumption that (i) all requests fit into the first data packet, (ii) all requests hit in the cache, (iii) all responses can be sent with a non blocking write (by configuring a sufficiently large socket buffer), and (iv) consecutive client requests do not block the server task receiving the request, Howl has performance close to the best achievable using the standard Linux APIs. On Windows 2000, Howl uses AcceptEx(), TransmitFile(), and I/O Completion ports to achieve best possible user-mode performance.

Compared to the user-mode results shown in Figure 3, Howl on Linux is 32% faster than Zeus and Howl on Windows is 21% faster than IIS for 64 byte files. Likewise, for 1 kB files, Howl on Linux is 29% faster than Zeus and Howl on Windows is 16% faster than IIS. Given that Zeus and IIS are production-level web servers, it is not surprising to marginally improve upon their performance with minimal prototypes such as Howl. However, the 16% to 29% performance improvement using such prototypes for 1 kB files is significantly smaller the 235% to 312% gap between these servers and their kernel-mode counter parts. Given the size of this gap, further significant performance improvements appear unlikely without new user-mode APIs and operating system modifications.


next up previous
Next: Conclusion Up: Performance Analysis Previous: Zero copy TCP send
Philippe Joubert 2001-05-01