Introduction

This paper reports a series of performance experiments investigating the performance of an HTTP server running a CGI program (CERN HTTPD 3.0 using HTTP 1.0 on a Hewlett-Packard PA-RISC machine). The objective was to learn what parts of the server consume the most CPU time and thus on what aspects implementors should concentrate to improve performance.

The experiment consisted of a client program (written using the ANSAweb programming kit.) The CGI program was a variant of the Echo program described in [EDWARDS 95]. The HTTP method used to launch the program was "POST", sending a body of 542 bytes to the CGI program and receiving the same amount of data back. The set up is shown in figure 1.1. Details of the IDL stubs and skeletons are discussed in [EDWARDS 95]. Figure 1.1: HTTP Performance Experiment configuration

All experiments were conducted on a lightly loaded Hewlett-Packard PA-RISC machines (715/50 running HPUX 9.01). The experiments were run with the HTTP server and client located on the same machine and also on different machines connected to the same ethernet. Only slight differences in the performance of the two configurations was observed.

Before we started the experiments we removed all the logging and unnecessary input/output from the server. After this, even if the daemon is run with -v (verbose) set, nothing is printed. Under these conditions the execution times running the daemon in -v mode and running it normally were within 2% of each other. The remainder of this paper is structured as follows:

How long does it take to do a fork/exec?

We wrote a program which forks a process, then writes 1000 bytes down one pipe and reads 1000 bytes from the another. At the other ends the child engages in the appropriate reads and writes. We found that this takes around 10 milliseconds on a lightly loaded Hewlett-Packard PA RISC machine. If the child execs another process to do the input/output on the pipes, the whole thing takes 24 milliseconds to complete.


Next ANSA home page

Contents


Nigel Edwards <nje@ansa.co.uk>, Owen Rees <rtor@ansa.co.uk>