oliver.erlewein@sqs.de wrote:
Hi Matthew
Thanx for your answer.
I'm still batteling furiously with Solaris and Zope. As opposed to Win NT / MacOS X / Linux Solaris seems to be running Zope in a single thread. For details see the zope-news-thread on "threading, dtml and performance". You can check this by running a complex dtml-method and trying to access anythin else on that site at the same time. My system freezes for as long as the huge task takes.
Well, here's something that you can try: Twiddle the sys.setcheckinterval() value in z2.py. This effectively sets the Zope threading granularity by adjusting the python knob that controls how often threads voluntarily release and reacquire their lock. The smaller the number, the more frequently Python will release the lock. However, the smaller you set it, the worse your overall throughput will get, since more time will be spent in the thread-switching machinery. What I suspect will be the problem is that the threading model Python was built with may be giving the priority back to the thread that released the lock, meaning that you're effectively single-threaded, even though you can have multiple threads dispatched. Inside the Python source code, in Python/thr_solaris.h you'll see the section that creates threads on Solaris. The flags for thr_create() that Python uses are THR_DETACHED, and THR_NEW_LWP. You could *try* fiddling with these flags and recompiling Python. I'm not sure about this, but you could try adding THR_BOUND to the flags. I'm not a Solaris threading guru, so I'm not sure how to get it to change its scheduling policy -- however, another thing to try would be to try to use pthreads instead of the solaris threads for Python; how you tweak the configure script to do this is something I dont know off the top of my head, though.
My Solaris servers:
Zopeserver 1 (Sun R280/4GB Ram/4 CPU's/ Solaris 2.8 - I think /not dedicated) Pystone(1.1) time for 10000 passes = 2.03 This machine benchmarks at 4926.11 pystones/second
Zopeserver 2 (PIII 1Ghz DELL 19"/512Mb Ram/1 CPU/ Solaris 2.7/dedicated Zope) Pystone(1.1) time for 10000 passes = 0.85 This machine benchmarks at 11764.7 pystones/second
That sortof justifies your hunch on what is cheaper (the sun is about 15 times the price of the DELL rack). If you use the server for other programs aswell then the Intel looses the cutting edge due to the one processor.
Oliver Erlewein
-- Matt Kromer Zope Corporation http://www.zope.com/