Check out the new USENIX Web site. next up previous
Next: Performance on Real Workload Up: Performance Previous: Persistent Connections

CGI Programs

An area where IO-Lite promises particularly substantial benefits is CGI programs. When compared to the original CGI 1.1 standard [1], the newer FastCGI interface [2] amortizes the cost of forking and starting a CGI process by allowing such processes to persist across requests. However, there are still substantial overheads associated with IPC across pipes and multiple buffering, as explained in Section 2.10.

We performed an experiment to evaluate how IO-Lite affects the performance of dynamic content generation using FastCGI programs. A test CGI program, when receiving a request, sends a ``dynamic'' document of a given size from its memory to the server process via the UNIX pipe; the server transmits the data on the client's connection. The results of these experiments are shown in Figure 5.


  
Figure 5: HTTP/FastCGI
\begin{figure}\centerline{\psfig{figure=/home/druschel/Research/IO-Lite/OSDI99/graph_bw_cgi.ps,width=3in}}
\end{figure}

The bandwidth of the Flash and Apache servers is roughly half their corresponding bandwidth on static documents. This results shows the strong impact of the copy-based pipe IPC in regular UNIX on CGI performance. With Flash-Lite, the performance is significantly better, approaching 87% of the speed on static content. Also interesting is that CGI programs with Flash-Lite achieve performance better than static files with Flash.


  
Figure 6: P-HTTP/FastCGI
\begin{figure}\centerline{\psfig{figure=/home/druschel/Research/IO-Lite/OSDI99/graph_bw_cgi_pst.ps,width=3in}}
\end{figure}

Figure 6 shows results of the same experiment using persistent HTTP-1.1 connections. Unlike Flash-Lite, Flash and Apache cannot take advantage of the efficiency of persistent connections here, since their performance is limited by the pipe IPC.

The results of these experiments show that IO-Lite allows a server to efficiently support dynamic content using CGI programs, without giving up fault isolation and protection from such third-party programs. This result suggests that with IO-Lite, there may be less reason to resort to library-based interfaces for dynamic content generation. Such interfaces were defined by Netscape and Microsoft [18,14] to avoid the overhead of CGI. Since they require third-party programs to be linked with the server, they give up fault isolation and protection.


next up previous
Next: Performance on Real Workload Up: Performance Previous: Persistent Connections
Peter Druschel
1999-01-05