[Mono-devel-list] Performance regression with XSP/Mono 1.1.8

Luca kronos.it at gmail.com
Fri Jul 1 10:38:59 EDT 2005


Hello,
I was doing some test on mono+XSP with web services. I was using the packages
from debian/unstable (on the server):

XSP 1.0.5
mono 1.1.6-4

Client machine also used mono 1.1.6-4; the client is a simple program written
in C# that invoke the remote service lots of time (usually 1000) and time each
call with gettimeofday. I.e: something like this:

	Syscall.gettimeofday(out start);
	t.sum(1, 2);
	Syscall.gettimeofday(out stop);
										
I noticed that client performance was poor compared to the reference client,
written in C with gSOAP (about 35 req/s versus 120 req/s).

I tried upgrading mono on the *client* machine to 1.1.8.1-pre0 (debian):
performance of the client went up to about 110 req/s.

So I tried upgrading the server and weird things started to happen :(

Performance of the C client is now at about 175 req/s, so it seems that mono
1.1.8-1 is indeed better than 1.1.5... but C# client is crawling at 22 req/s.
I tried compiling XSP 1.0.9 (with Mono 1.1.8.1, without debug) but nothing
changed.

To recap:

XSP 1.0.5 / Mono 1.1.6
	109 req/s (C#)
	125 req/s (C)

XSP 1.0.9 / Mono 1.1.6
	105 req/s (C#)
	120 req/s (C)

CPU utilization on the server is almost at 100%

XSP 1.0.9 / Mono 1.1.8.1-pre0
	 22 req/s (C#) 
	175 req/s (C)

XSP 1.0.5 / Mono 1.1.8.1-pre0
	 22 req/s (C#) 
	175 req/s (C)
	
CPU utilization on the server is no more than 20%, client is almost idle.

I took a snapshot of network traffic, the only difference (AFAICS) is that XSP
running with Mono 1.1.6 requests to close the connection (Connection: Close),
while XSP with Mono 1.1.8 requests to keep it open (Connection: keep-alive).
Does this ring any bells?

tcpdump logs are here (dreamland is the client, thor is the server):
http://kronoz.altervista.org/mono/tcpdump-1.1.6.txt
http://kronoz.altervista.org/mono/tcpdump-1.1.8.txt

Logs from XSP (compiled with /d:WEBTRACE) for 2 consecutive invocations:
http://kronoz.altervista.org/mono/xsplog-1.1.6.txt
http://kronoz.altervista.org/mono/xsplog-1.1.8.txt

I took a --profile each run of the client (with 1000 invocations each):
XSP on the server running on 1.1.6:
http://kronoz.altervista.org/mono/mono-profile-1.1.6.txt.bz2

XSP on the server running on 1.1.8:
http://kronoz.altervista.org/mono/mono-profile-1.1.8.txt.bz2


Luca
-- 
Home: http://kronoz.cjb.net
Let me make your mind, leave yourself behind
Be not afraid



More information about the Mono-devel-list mailing list