You are on page 1of 7

Aolserver performance benchmark with ab

Dated 27-03-07
Syed Atif Ali

Introduction:
I have always noticed that aolserver memory size keep growing, and does
not stay at a max state . There are some known tcl versions which have memory
leak issue . but even after using the recommended versions of tcl , this problem,
though decreased in severity, but still exists.
After being hinted by Aolserver community gurus that the problem could lie in the
thread allocator that tcl uses, I decided to compile aolserver against Google
perftools which has a reputation of providing a "more efficient” thread allocator .
Instructions on installing aolserver with Google perftools can be found at the end
of this document .There is no network involved in the tests. Yes I know it means
that aolserver performance will be affected by the ab process. but than this will be
a constant for each test so I will ignore this. My main purpose of performing these
tests is to see the difference in Aolserver performance with or without Google
tcmalloc() .

Required :
Test if Google perftools enhances the performance of Aolserver.

Test Environment :
Here is my test environment :
Constants :
Dual-Core AMD Opteron(tm) Processor 2210 HE
3 GB memory
Red Hat Enterprise Linux ES release 4 (Nahant Update 4)
2.6.9-42.ELsmp x86_64 GNU/Linux

Variables:
TCL versions:
tcl 8.4.14: compiled with enable-threads
tcl 8.4.14 compiled enable-threads but without thread allocator to
use Google tcmalloc.
Aolserver 4.0.10 : Linux native thread allocator
Aolserver 4.0.10 : With Google perftools provided tcmalloc()
Aolserver 4.5 : Linux native thread allocator
Aolserver 4.5 : With Google perftools provided tcmalloc()
Aolserver also loads nsoracle 2.7 and nsmysql latest driver modules. But my
tests don’t involve any database connectivity .
Test files: Helloworld.html (
Helloworld.adp
Testhtml.html
Index.adp (Default Aolserver 4.5 file , found in
server/server1/modules/pages)
Other Software Used:
Gnuplot 4.2: to plot graphs
ab-2.0.40: Apache benchmarks
Google perftools 0.8-1
sar: to collect CPU stats
openoffice writer, calc.

I ran each test multiple times. This machine was running nothing additional and
the CPU load was always before starting any test , between 0.5-0 . I made sure
before starting every test the CPU is in 100% idle state . Aolserver is configured
with maxconnections=100 and maxthreads=10 . ab runs with 10 to 100
simultaneous connections and performs 10,000 requests in each test. .Between
each ab test there is a 5 second pause, which is obvious in graphs
Some terms:
Aol40orig : Aolserver 4.0.10 compiled with tcl which uses native Linux thread
libraries , --enable-64bit , --enable-threads, compiled against tcl-8.4.14 which is
also compiled with enable-threads
Aol40g : Aolserver 4.0.10 and tcl compiled with Google perftools libraries , --
enable-threads –enable-64bit . tcl with –enable-threads but disabled thread
allocation
Aol45orig : Aolserver 4.5 compiled with tcl which uses native Linux thread libraries
, --enable-64bit , --enable-threads, compiled against tcl-8.4.14 which is also
compiled with enable-threads
Aol45g : Aolserver 4.5 and tcl compiled with Google perftools libraries , --enable-
threads –enable-64bit . tcl with –enable-threads but disabled thread allocation

Now straight to the charts


Helloworld test:
Tested with one html and one tcl file both display hello world. This test is
just a comparison of simple html and adp file serving
Tested :
Aol40orig for tcl and html files.

Both these graphs show that aolserver performs at par with both tcl and html
files. cpu consumption and requests per second seem similar in both tcl and html
servings. difference minimal and html serving is a lil better .
Aolserver 4.0.10 with and without google perftools
Tested :
Default page that comes with aolserver 4.5 as index.adp .
Aol40orig and aol40g .

Oh ho , this doesn't look good . I took these test 6 times, starting each test with
cpu being 100% idle. but always got the same results. this shows that aolserver
4.0.10 performs better whatever the simultaneous connections are in its original
state than compiled with google perftools. Even the cpu consumption isn't
different. for some reasons aolserver with tcmalloc() performs bad after 70
simultaneous connections to the web server .This test actually pushed me to test
the same setup on Linux 2.4 kernel. maybe Linux NPTL in 2.6 did really good stuff.
and google perftools might help in Linux 2.4 kernel , i am not sure i will test it
later.
Aolserver 4.5 with and without google perftools
Tested :
Default page that comes with aolserver 4.5 as index.adp .
Aol45orig and aol45g .

Aolserver 4.5 lost to aolserver 4.0.10 in any form , as far as the requests per
seconds are concerned. In this test Aolserver 4.5 with google performed better
than the original alserver 4.5 . In both cases the performance drops after 50
simultaneous connections .
Aolserver 4.0.10 and Aolserver 4.5 both original
Tested :
Default page that comes with aolserver 4.5 as index.adp .
Aol40orig and aol45orig

Aol4.0.10 server way much better than aolserver 4.5 .


Aolserver 4.0.10 and Aolserver 4.5 both with google perftools libraries
Tested :
Default page that comes with aolserver 4.5 as index.adp .
Aol40g and aol45g

Again aolserver 4.0.10 performs better but drops performance after 40


simultaneous connections ,
aol45 with google perftools is better than aolserver 4.0.10 with google perftools.

Result :

On 2.6 kernel platform , there is no benefit of using google perftools for aolserver
enhancement .
If your need is performance improvement than even aolserver 4.5 does not
provide major improvement. but aolserver 4.5 might provide a lot more of
features than aolserver 4.0.10 .

You might also like