Check out the new USENIX Web site. next up previous
Next: Analyzing a Fixed File Up: Performance Analysis Previous: Performance Analysis


SPECWeb96 workload

The results for the SPECWeb96 workload are presented in Figure 2. Results are presented for the following user-mode Web servers: Apache (Linux), Zeus (Linux), IIS (Windows 2000). Results are also presented for the following kernel-mode Web servers: kHTTPd (Linux), TUX (Linux), SWC (Windows 2000), AFPA on Linux, and AFPA on Windows 2000. Table 1 enumerates and describes the Web servers tested on Linux and Windows 2000.


Table 1: Web Server Characteristics
  architecture cache 0 copy direct TCP
Apache MP/user filesystem no no
Zeus SPED/user filesystem no no
IIS SPED/user filesystem yes no
kHTTPd SPED/kernel filesystem no no
TUX SPED/kernel memory yes no
SWC SPED/kernel fs or mem yes yes
AFPA softint/kernel fs or mem yes yes


The ``architecture'' column describes servers as MP, SPED, or softint (software interrupt) as defined in Section 2.2 and kernel-mode or user-mode. The ``cache'' attribute defines whether the Web server's cache is backed by the file system, memory, or both. The ``0 copy'' column indicates whether or not the Web server performs a copy to send a cache object. The ``direct TCP'' column indicates whether or not the Web server is directly integrated with the TCP/IP stack or uses the socket layer.

Figure 2: SPECWeb96 results
\begin{figure}\begin{center}
\begin{tabular}{l}
\vspace{-0.2cm}\\
\psfig{figure=specweb.eps,width=4.75cm,angle=270}\end{tabular}\end{center}\end{figure}

The results show that AFPA on Linux achieves the fastest performance of the tested servers. The SPECWeb96 result of 10,269 represents over 1.2 Gb per second server throughput. This amounts to 90% of the hardware capacity as described in section 4.2. Therefore, AFPA on Linux is a reasonable performance target for evaluating user-mode optimizations.

Kernel-mode servers appear to have a factor of three performance advantage over production user-mode servers. On Linux, the fastest user-mode server measured (Zeus) is 3.6 times slower than the fastest kernel-mode server (AFPA). On Windows 2000, the fastest user-mode server measured (IIS) is 3 times slower than the best kernel-mode server (AFPA). Overall, the fastest kernel-mode implementation (AFPA on Linux) is 3.5 times faster than the best performing user-mode implementation measured (IIS on Windows 2000).

The slowest user-mode server in the SPECWeb96 results was Apache. This is consistent with other published results [5,28]. Apache seems to be penalized by a significant process scheduling overhead. Note, however, that Apache 1.3.9 does not feature a memory-based static content cache; it uses the file system cache. Among other optimizations, adding a memory based cache to Apache reportedly increases its performance by 70% on Linux [29] which would bring Apache in line with IIS and Zeus.

As mentioned before, both IIS and Zeus employ SPED architectures. Although Linux does not feature zero copy send, Zeus was on par with IIS. This somewhat contradicts previous attempts at comparing user-mode Linux and Windows Web servers [28]. These earlier results were, however, obtained with Apache which exhibits lower performance than Zeus.

In comparing kernel-mode servers, we found kHTTPd to be relatively slow on the SPECWeb96 workload compared to other kernel Web servers. In fact, kHTTPd achieves nearly the same SPECWeb96 result (2893) as Zeus (2843). kHTTPd has limited performance for two reasons. First, kHTTPd requires one copy to send the response. This is unavoidable due to kHTTPd's reliance on the file system as a cache. The Linux file system interfaces lack a zero copy mechanism to send file system data. Second, kHTTPd uses the kernel-mode version of the Linux socket interface rather than interfacing directly with the TCP/IP stack. Therefore, kHTTPd's performance is not significantly different than Linux user-mode Web servers, which are also forced by Linux to use a one-copy send and a socket interface.

TUX offers nearly twice the performance of kHTTPd, due primarily to its pinned memory cache and zero copy send implementation. TUX and kHTTPd have otherwise similar architectures for serving static content out of main memory. They both use the socket API from kernel threads for sending objects.


next up previous
Next: Analyzing a Fixed File Up: Performance Analysis Previous: Performance Analysis
Philippe Joubert 2001-05-01