Here are some benchmarks using different server types. The current release results are marked with light blue background.
When you add data to the page, please keep the sorting by request per second.
Contents
CGI
All benchmarks run
ab -n 100 -c 10 http://localhost/wikiname/WhyWikiWorks
Request per second |
95% requests served within |
Python |
Web server |
OS |
Hardware |
|
10.65 |
1185 |
2.4 |
Apache 2 |
Mac OS X 10.3.7 |
G5 2x2G 1.5G RAM |
|
4.18 |
2665 |
1.2.4 |
2.4 |
Apache 1.3 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
3.91 |
2864 |
1.1 |
2.3 (2.4 much slower) |
Apache 1.3 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
3.79 |
2956 |
1.3.3 dev patch-538+ |
2.4 |
Apache 1.3 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
3.65 |
2988 |
1.3.2 |
2.4 |
Apache 2 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
3.18 |
3476 |
1.3.1 |
2.4 |
Apache 1.3 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
3.16 |
3312 |
1.3.4 |
2.3 |
Apache 1.3 |
Xandros Linux 2.0 |
Athlon XP 2000 512 MB |
2.95 |
3741 |
1.3.0 |
2.4 |
Apache 1.3 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
0.34 |
31888 |
1.3.4 |
2.3 |
Apache 1.3 |
Mac OS X 10.3.7 |
G4 800 MHz 512MB |
PikiPiki (http://sourcefrog.net/projects/piki/) is the father of MoinMoin. Its a one file, 580 lines wiki without many features. (1)
Standalone
WhyWikiWorks
All benchmarks run
ab -n 1000 -c 10 http://localhost:8000/WhyWikiWorks
Request per second |
95% requests served within |
Python |
OS |
Hardware |
|
32.99 |
354 |
1.2.4 |
2.4 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
29.71 |
390 |
1.3.5 dev (2 2x SimpleServer) |
2.4 |
Mac OS X 10.3.7 |
G5 2x2G 1.5G RAM |
26.36 |
667 |
1.3.5 (1 2x SimpleServer) |
2.4 |
Mac OS X 10.3.7 |
G5 2x2G 1.5G RAM |
17.22 |
671 |
1.3.3 dev patch-538+ |
2.4 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
16.14 |
624 |
1.3.5 (SimpleServer) |
2.4 |
Mac OS X 10.3.7 |
G5 2x2G 1.5G RAM |
13.42 |
815 |
1.3.2 |
2.4 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
12.42 |
887 |
1.3.5 (ThreadPoolServer) |
2.4 |
Mac OS X 10.3.7 |
G5 2x2G 1.5G RAM |
11.20 |
996 |
1.3.5 (ThreadingServer) |
2.4 |
Mac OS X 10.3.7 |
G5 2x2G 1.5G RAM |
9.47 |
1676 |
1.3.4 |
2.3 |
Xandros Linux 2.0 |
Athlon XP 2000 512MB |
6.55 |
1713 |
1.3.1 |
2.4 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
4.64 |
2409 |
1.3.0 |
2.4 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
3.90 |
2760 |
1.3.5 (ForkingServer) |
2.4 |
Mac OS X 10.3.7 |
G5 2x2G 1.5G RAM |
- running 2 SimpleServer processes and pound load balancer.
- running 2 SimpleServer processes and PLB load balancer using 1.3.5 dev code that add transparent url mapping when using a proxy.
Title Search
All benchmarks run
ab -n 100 -c 10 'http://localhost:8000/?action=fullsearch&context=180&value=mail&titlesearch=Titles'
Moin-1.2 run:
http://localhost:8000/FrontPage?action=inlinesearch&text_title=mail
Request per second |
95% requests served within |
Python |
OS |
Hardware |
|
47.94* |
258 |
1.2.4 |
2.4 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
12.58 |
991 |
1.3.3 dev patch-538+ |
2.4 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
11.37 |
1045 |
1.3.2 dev patch-537 |
2.4 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
10.80 |
1144 |
1.3.2 |
2.4 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
1.04 |
18896 |
1.3.1 |
2.4 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
- Moin 1.2 wiki contained only 350 pages, 1.3 wikis contains 700 pages
NoSuchPage
Visiting non existing page, Show the MissingPage content. In 1.2, this was done in the code, in 1.3, an underlay page called MissingPage is rendered (much slower). This page contain two macros that need the full page list - painfully slow on 1.3, called twice on this page, because macro can't share data.
ab -n 100 -c 10 http://localhost:8000/NoSuchPage
Request per second |
95% requests served within |
Python |
OS |
Hardware |
|
19.77* |
649 |
1.2.4 |
2.4 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
7.18 |
1517 |
1.3.3 dev patch-538+ |
2.4 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
6.09 |
1840 |
1.3.2 dev patch-537 |
2.4 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
5.44 |
1981 |
1.3.2 |
2.4 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
0.55 |
18715 |
1.3.1 |
2.4 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
- Moin 1.2 wiki contained only 350 pages, 1.3 wikis contains 700 pages
Twisted
All benchmarks run
ab -n 1000 -c 10 http://localhost:8080/WhyWikiWorks
Twisted configured with the default 10 threads.
Request per second |
95% requests served within |
Python |
OS |
Hardware |
|
9.83 |
1941 |
1.3.2 |
2.4, Twisted 1.3.0 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
7.78 |
2085 |
1.3.5 |
2.4, Twisted 2.0.1 |
Mac OS X 10.3.7 |
G5 2x2G 1.5G RAM |
3.84 |
3780 |
1.3.5 |
2.4, Twisted 2.0.0, Psyco 1.4 |
Gentoo Linux 2.6.14.2 |
Celeron (Mendocino) 550Mhz 384M RAM |
2.76 |
6149 |
1.3.5 |
2.4, Twisted 1.2.0, Psyco 1.4 |
Gentoo Linux 2.6.14.2 |
Celeron (Mendocino) 376Mhz 384M RAM |
Fast CGI
Multiple processes
All benchmarks run
ab -n 1000 -c 10 http://localhost/wikiname/WhyWikiWorks
Request per second |
95% requests served within |
Python |
Web server |
OS |
Hardware |
|
27.97 |
373 |
1.3.5 |
Python 2.4 |
Apache 2.0.54 mod_fastcgi 2.4.2 static server, 2 processes |
Mac OS X 10.3.7 |
G5 Dual 2G 1.5G RAM |
27.07 |
383 |
1.3.3 |
2.4 |
Apache 2.0.54 mod_fastcgi 2.4.2 static server, 2 processes |
Mac OS X 10.3.7 |
G5 Dual 2G 1.5G RAM |
26.61 |
391 |
1.3.4 |
2.4 |
Apache 2.0.54 mod_fastcgi 2.4.2 static server, 2 processes |
Mac OS X 10.3.7 |
G5 Dual 2G 1.5G RAM |
26.43 |
466 |
1.3.5 |
2.4 |
Apache 2.0.54 mod_fastcgi 2.4.2 static server, 4 processes |
Mac OS X 10.3.7 |
G5 Dual 2G 1.5G RAM |
26.18 |
597 |
1.3.5 |
2.4 |
Apache 2.0.54 mod_fastcgi 2.4.2 static server, 8 processes |
Mac OS X 10.3.7 |
G5 Dual 2G 1.5G RAM |
- Few processes give faster results in the tests, but in real world might cause delays. Each processs act like the simple standalone server that handel one request at a time.
To get correct results (no failed requests) with 1.3.4 and 1.3.3 I had to set the socket backlog to 50 in MoinMoin/support/thfcg.py. This change is included in 1.3.5.
Threaded
Using Apache 1.3 with static fast CGI server with 2 threaded processes (multiple cpus used).
All benchmarks run
ab -n 1000 -c 10 http://localhost/wikiname/WhyWikiWorks
Request per second |
95% requests served within |
Python |
Web server |
OS |
Hardware |
|
24.26 |
912 |
1.3.2 dev patch-515 |
2.4 |
Apache 1.3 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
Mod Python
All benchmarks run
ab -n 1000 -c 10 http://localhost/wikiname/WhyWikiWorks
Request per second |
95% requests served within |
Python |
Web server |
OS |
Hardware |
|
22.15 |
836 |
1.3.2 dev patch-537 |
2.3 |
Apache 1.3, Mod Python 2.7.10 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
21.27 |
911 |
1.3.2 |
2.4 |
Apache 2, Mod Python 3.1.3 |
Mac OS X 10.3.3 |
G5 2x2G 1.5G RAM |
20.75 |
929 |
1.3.5 |
2.4 |
Apache 2, Mod Python 3.1.3 |
Mac OS X 10.3.7 |
G5 2x2G 1.5G RAM |
18.45 |
1042 |
1.3.4 |
2.4 |
Apache 2, Mod Python 3.1.3 |
Mac OS X 10.3.7 |
G5 2x2G 1.5G RAM |
13.21 |
812 |
1.3.4 |
2.4.1 |
Apache 2.0.54, Mod Python 3.2.0 dev (2005-06-28) |
WinXP Pro SP2 |
P4-3GHz, 512 MB |
11.86 |
1120 |
1.3.4 |
2.3 |
Apache 1.3, Mod Python 2.7.8 |
Xandros Linux 2.0 |
Athlon XP 2000 512 MB |
- Modpy run without threads, creating about 15 processes while running the test.
OrphanedPages Speed
Python CPU time for Standalone startup and OrphanedPages rendering with fresh underlay dir:
MoinMoin 1.3.2 devel, patch 537 |
~ 2 min. 10 seconds |
570 pages |
MoinMoin 1.3.2 devel, somewhere ~ patch 500 |
~ 5 min. |
593 pages |
MoinMoin 1.3 rc1 |
~ 7 min. |
593 pages |
MoinMoin 1.3 beta1 |
~ 1 min. 40 seconds |
447 pages |
Build Lupy index
running moin-build-index on a fresh new 1.3.5 wiki. This include rendering of pagelinks cache files, indexing page text and optimizing the index.
Seconds |
Python |
OS |
Hardware |
|
103s |
1.3.5 |
2.3.5 |
Debian GNU/Linux |
Dual Athlon 2000 (according to /proc/cpuinfo) |
Serving Static Files
This is not an issue usually, as browsers cache images and css files.
ab -n 1000 -c 10 http://localhost/wiki/modern/css/screen.css
Request per second |
95% requests served within |
Web Server |
Python |
OS |
Hardware |
|
1510 |
10 |
1.3.5 dev |
CGI Apache 2.0.54 |
2.4 |
Mac OS X 10.3.7 |
G5 2x2G 1.5G RAM |
794 |
16 |
1.3.5 dev |
Standalone SimpleServer |
2.4 |
Mac OS X 10.3.7 |
G5 2x2G 1.5G RAM |
603 |
36 |
1.3.5 dev |
1 Standalone 2x SimpleServer |
2.4 |
Mac OS X 10.3.7 |
G5 2x2G 1.5G RAM |
475 |
31 |
1.3.5 dev |
Standalone ThreadPoolServer |
2.4 |
Mac OS X 10.3.7 |
G5 2x2G 1.5G RAM |
- running 2 SimpleServer processes and PLB load balancer.
Discussion
Some of the server use all cpus by using multiple processes, thus they give better results. Currently we don't have a way to use 2 standalone or twisted processes serving the same address, so you multiple cpu server will be idle with these servers. -- NirSoffer 2005-01-05 00:09:59
Results are a bit suprising to me - the mod_python/fastcgi figures appear believable against the CGI ones (although I'd prefer to see these against a current 2.0.x Apache and current mod_python). However the Twisted figures seem very strangely low. What am I missing? -- NigelMetheringham 2005-01-05 13:20:31
You don't miss anyting - this is what you get from twisted on this platform. Maybe it run better on other platforms. Add your results here. About current 2.0.x Apache and mod_python, somebody with this setup will have to add the results. -- NirSoffer 2005-01-05 14:08:17
Yeah, even if you double the value it is not very much for Twisted. So any other persistent server is faster. But be aware of the fact that standalone does not serve static files very fast.
But remember that static files (css, img) are always cached by browsers. I did not check it, but I guess it does not have any effect. -- NirSoffer 2005-01-05 16:33:46
Maybe Twisted is slow on Mac OS X because it hits some pitfalls of the libc on that platform. Or it is really our wrapper code. -- AlexanderSchremmer 2005-01-09 11:45:08
1.3.3 results are based on patch-538 with replacement of get_rev, get_rev_dir, getPageBasePath and getPageStatus with simpler and more efficient code, including page state caching in request. With this code, disk access is done only once per page, even if you create multiple instances of the same page.
- Request
Please could someone with 1.3.5 try to test a page with lots of attachments (e.g. 200). They need to be only attached not used in the text. I have some very strange behaviours here. Sometimes I think it takes seconds to get actions called on such a page e.g. open in the editor. My feeling is that is was different in 1.3.4. May be there is a bottleneck. -- ReimarBauer 2005-08-18 15:12:01
- Attach here an example page - you can put the page directory including the pictures in a tarball, I can add this to my test wiki and try it.