Don Porter ce49dcb03d Migrate unit tests to jenkins (#122) 7 years ago
..
html 10c06ad723 The first official release 10 years ago
.gitignore ce49dcb03d Migrate unit tests to jenkins (#122) 7 years ago
Makefile 76967f39d3 Bugfixes: 7 years ago
README 10c06ad723 The first official release 10 years ago
benchmark-http.sh 8b703b1c2c Save the web server benchmarking script for regression testing. 7 years ago
lighttpd-1.4.30.tar.gz 10c06ad723 The first official release 10 years ago
lighttpd-angel.manifest.template 76967f39d3 Bugfixes: 7 years ago
lighttpd-generic.conf 10c06ad723 The first official release 10 years ago
lighttpd.manifest.template 76967f39d3 Bugfixes: 7 years ago

README

Running lighttpd tests is conceptually straightforward. You start a
server, then make requests from a remote host. There are some good
websites/blogs that discuss properly benchmarking a webserver. We want
to test how efficiently Graphene handles requests, not the speed of
the network stack in the OS. So we are using very small static files.
See the wiki page for more details.

7/23/13:

To start a server in graphene,
make start-graphene-server

To start a server on any other platform,
make start-native-server

Now that your server is up and running, it is time to test it. From a
remote host, you can use the run-apachebench.sh script to programatically submit
requests at various loads. The usage of that script is as follows:
./run-apachebench.sh

The script will append the output to a file "ab.n.c"

The output will look something like this:

*** BEGIN OUTPUT ***

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 130.245.153.32 (be patient)


Server Software: lighttpd/1.4.30
Server Hostname: 130.245.153.32
Server Port: 8000

Document Path: /random/100.1.html
Document Length: 100 bytes

Concurrency Level: 100
Time taken for tests: 4.110 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Total transferred: 16650000 bytes
HTML transferred: 5000000 bytes
Requests per second: 12164.64 [#/sec] (mean)
Time per request: 8.221 [ms] (mean)
Time per request: 0.082 [ms] (mean, across all concurrent requests)
Transfer rate: 3955.88 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 1
Processing: 1 8 8.7 7 202
Waiting: 1 8 8.7 7 202
Total: 2 8 8.7 8 203

Percentage of the requests served within a certain time (ms)
50% 8
66% 8
75% 8
80% 8
90% 8
95% 8
98% 8
99% 8
100% 203 (longest request)

*** END OUTPUT ***

The number we were reporting is the transfer rate. So for this
example, the we would report a bandwidth of 3.95588 Mbytes/second.



NOTES:

To run kvm and lxc, you need to set up a bridge. But you do not want
extraneous interfaces when you are not using them, so make
sure to bring them down before testing native linux or graphene.

If you are within kvm or lxc, your ip will not be that of your
host. Make sure your ip matches the ip in the conf file.

If you have a lot of time and want to do a good job, throw out the top
and the low numbers, and report the mean of your large sample.