Performance comparison: Apache2 on Nevada65 with and without (kernel-based) Network Cache Accelerator

Apache2.2.3 is running on Solaris Nevada build 65 on x86 (VMware emulated), has 0.5GB of RAM, and ~ 660MB of data in apache document root.

This web data is divided into 10000 1kbyte files and ~650 1Mbyte files. Logging during test was disabled for NCA and also for Apache (CommonLog commented out).

Load is generated by http_load downloaded from acme.com, running on VM hosting (same) machine – Linux based, url file is build by this script:

#!/bin/sh
c=1
yes=0
rm -f url
while [ $c -lt 10000 ]; do
echo http://192.168.77.22/k$c >> url
yes=$[$yes+1]
yes=`expr $yes % 10`
if [[ $yes == 0 ]]; then
x=`expr $RANDOM % 649`
x=$[$x+1]
echo http://192.168.77.22/m${x} >> url
fi #echo $c
c=$[$c+1]
done

Tripple run of http_load on apache2 without NCA:


vnull@xeno:~/inz/instalki/http_load-12mar2006$ !./http
./http_load -parallel 5 -seconds 10 url
947 fetches, 5 max parallel, 9.52494e+07 bytes, in 10 seconds
100580 mean bytes/connection
94.7 fetches/sec, 9.52494e+06 bytes/sec
msecs/connect: 0.811796 mean, 22 max, 0.248 min
msecs/first-response: 2.89326 mean, 142.79 max, 0.562 min
HTTP response codes:
code 200 — 947

vnull@xeno:~/inz/instalki/http_load-12mar2006$ ./http_load -parallel 5 -seconds10 url
1039 fetches, 5 max parallel, 9.84863e+07 bytes, in 10 seconds
94789.5 mean bytes/connection
103.9 fetches/sec, 9.84862e+06 bytes/sec
msecs/connect: 0.706046 mean, 23.07 max, 0.247 min
msecs/first-response: 3.09328 mean, 258.584 max, 0.564 min
HTTP response codes:
code 200 — 1039

vnull@xeno:~/inz/instalki/http_load-12mar2006$ ./http_load -parallel 5 -seconds10 url
959 fetches, 5 max parallel, 1.01547e+08 bytes, in 10 seconds
105888 mean bytes/connection
95.9 fetches/sec, 1.01547e+07 bytes/sec
msecs/connect: 0.824296 mean, 42.473 max, 0.248 min
msecs/first-response: 2.81876 mean, 231.154 max, 0.528 min
HTTP response codes:
code 200 — 959

Tripple run of http_load against apache2 WITH NCA:

vnull@xeno:~/inz/instalki/http_load-12mar2006$ ./http_load -parallel 5 -seconds10 url
1353 fetches, 5 max parallel, 1.41757e+08 bytes, in 10.0018 seconds
104773 mean bytes/connection
135.276 fetches/sec, 1.41732e+07 bytes/sec
msecs/connect: 4.6854 mean, 77.009 max, 0.399 min
msecs/first-response: 8.05471 mean, 77.009 max, 1.403 min
HTTP response codes:
code 200 — 1353

vnull@xeno:~/inz/instalki/http_load-12mar2006$ ./http_load -parallel 5 -seconds10 url
1494 fetches, 5 max parallel, 1.48097e+08 bytes, in 10.0006 seconds
99127.9 mean bytes/connection
149.391 fetches/sec, 1.48088e+07 bytes/sec
msecs/connect: 4.26223 mean, 57.807 max, 0.398 min
msecs/first-response: 7.23063 mean, 57.807 max, 0.583 min
HTTP response codes:
code 200 — 1494

vnull@xeno:~/inz/instalki/http_load-12mar2006$ ./http_load -parallel 5 -seconds10 url
1568 fetches, 5 max parallel, 1.51315e+08 bytes, in 10.0029 seconds
96502.2 mean bytes/connection
156.755 fetches/sec, 1.51272e+07 bytes/sec
msecs/connect: 3.97283 mean, 207.755 max, 0.398 min
msecs/first-response: 6.71551 mean, 207.755 max, 0.586 min
HTTP response codes:
code 200 — 1568

NCA: (157+149+135)/3 = ~147 r/s
without NCA: (95+104+96)/3 = ~98 r/s

NCA gave ~50% boost for free in this test scenario!

Note that /dev/nca’s nca_max_cache_size was set to 2048 to cache files only up to 2kB - using ndd.

Comments are closed.