[Zope] Priority of processes in Zope

Matthew T. Kromer matt@zope.com
Tue, 19 Feb 2002 11:56:17 -0500


oliver.erlewein@sqs.de wrote:

> Hi all
>
> Me again with my Solaris problems (threading, dtml and performance)...
>
> I've now checked on my threads. I've got 8 of them. Most have 
> differing priorities and the same nice level.
>
> Can somebody on a Solaris Zope please call "ps -eflLj | grep python" 
> and tell me if they have a similar result? I'm wondering about the 
> thread with the PRIO=99. That's the thread doing all the work. Is that 
> correct?? I don't suppose so. The other threads don't seem to work.
>
> Thanx a lot!
> Oliver Erlewein
>


Hi Oliver,

Threading priority is a dynamic computation by the Solaris scheduler -- 
the thread with the lower priorities are dispatched first -- but once 
you get dispatched your priority raises if you finish your timeslice 
without entering a wait state (well, that may be a simplification).

Because Python is controlled by a large central lock, only one thread 
can be doing any useful work most of the time.  There are exceptions to 
this rule, but most of Zope is compute-bound, not IO-bound.  The net 
effect is that you rarely see more than a few threads in Zope doing work.

More interesting to note is that the performance of Zope is pretty much 
linear with the results of the "pystone" benchmark.  So, if you run

    python /usr/local/lib/python2.1/test/pystone.py

you might get a number like

blade(3)$ python /usr/local/lib/python2.1/test/pystone.py
Pystone(1.1) time for 10000 passes = 1.77
This machine benchmarks at 5649.72 pystones/second

That's my results on a SunBlade 100 (500 Mhz UltraSPARC IIe).  

Its worthwhile noting that I get the following result on a 500 Mhz Intel 
Celeron:

djinn(12)$ python2.1 /usr/local/python-2.1.2/lib/python2.1/test/pystone.py
Pystone(1.1) time for 10000 passes = 1.47
This machine benchmarks at 6802.72 pystones/second

from which you may draw two conclusions:  1) Gcc on SPARC doesn't emit 
the best bytecodes, and 2) Intel CPUs run Python more cost-effectively 
than SPARC chipsets do.

-- 
Matt Kromer
Zope Corporation  http://www.zope.com/