Gino Ruopolo wrote:
When I get a chance, I'll reproduce many
connections/s (instead of
bytes/s) across zones, compared to intra-zone, using
Apache's 'ab'
tool, and report what I get.  -- Jeff


that would be very similar to my setup. thankyou
gino
This message posted from opensolaris.org
As promised, I've done some tests on the scenario Gino described: higher CPU overhead for a workload containing many connections per second when client and server processes are in different zones than when in the same zone. Sorry for the delay, but besides other activities getting in the way, I wanted to conduct good tests where I had a reasonable degree of confidence that I was correctly measuring the right thing. My apologies for the long e-mail - send to bit bucket if it's too much detail :-)

I tested with Nevada build 55 (perhaps I would get different numbers on stock Solaris 10, so maybe I'll retry this next week on a machine running S10), with most tests done on a fairly old PC (Pentium III at 1Ghz). I created zones named zone1 and zone2 (very creative, I know...), and configured Apache 2. For workload, I used the Apache benchmark tool ('ab'), and the http_load from Acme.com. In each test, I fetched the same URL, pointing to static HTML, in order to eliminate variable overhead from dynamic content and/or disk I/O.

Many thousands of web hits later and multiple runs with an otherwise idle box, I measured an average 692.82 hits per second when both http_load and httpd were in the same zone, and 679.27 going from zone2 to zone1. That's a ratio of 0.9804, so inter-zone results were 98.04% of the rate of same-zone traffic. Normally I'd be inclined to consider under 2% difference "noise", but the results over multiple trials (and also when using 'ab' instead of http_load) seemed consistent: a small difference in the same direction.

I then used DTrace to see where I was spending time, both elapsed and CPU time (timestamp and vtimestamp) and got the following results (shown is output from same-zone traffic) for the most dominant system calls:

vtime by function
httpd writev 71642973 httpd accept 71720121 httpd shutdown 76473328 http_load close 89913014 http_load connect 149196319

elapsed time by function
httpd writev 85014366 httpd shutdown 90492746 http_load close 102127944 http_load connect 162967191 httpd accept 17908653425

total vtime by execname:        http_load     351417154, httpd 434824250
total wall time by execname:  http_load     456124949; httpd 18503892793

The actual times aren't of consequence: what is significant is where time was spent (the same system calls consistently appeared in both same-zone and different-zone cases), and the different between same-zone and different zone tests. I measured CPU time slightly higher in the different-zone case: 5.76% higher for client (http_load), and 2.04% higher for Apache httpd. So pending further investigation, it does seem there is a small difference in time when an application with many connections per second is in the same zone compared to different zones.

This does not explain the issues Gino raised in his original post, where he reported a bigger change in performance. It does not seem to be related to the cost of network connections, and we have a few ideas on where they may be. We've corresponded privately, and I've sent him some DTrace scripts, so we will pursue this further together. Thank goodness for DTrace!

cheers, Jeff



_______________________________________________
zones-discuss mailing list
zones-discuss@opensolaris.org

Reply via email to