[Zope] Zope Processor binding and Hyper Threading

zhimin at iss.nus.edu.sg zhimin at iss.nus.edu.sg
Fri Sep 5 13:12:49 EDT 2003


Hi,

On a multi-processor machine running multiple Zope instances, it's known
that each Zope/Python process should be bound to a single processor to
increase performance. If you have a dual processor machine running two
Zope, setting the affinity is easy - one processor per zope.

Now we have processor with Hyper Threading (HT) technology, how do you set
the processor affinity for maximum performance?

Say you have a dual-processor HT machine, running two Zope. You'll get 4
virtual cpus: 0, 1, 2, 3. 0 and 2 are on one physical processor; 1 and 3
are on the other physical processor. You can bind:
1)  Zope1 to cpu0 and cpu2 ;  Zope2 to cpu1 and cpu3
2)  Zope1 to cpu0 and cpu1 ;  Zope2 to cpu2 and cpu3
3)  Zope1 to cpu0  ;  Zope2 to cpu1
4)  Zope1 to cpu0  ;  Zope2 to cpu2

Which one will give the most performance? Will the switching of Python's
global interpreter lock between two virtual cpus on the same physical cpu
slow down the system?

Another way is to run 4 Zope instances on the dual-processor HT machine,
and bind one Zope to each virtual cpu. Will this configuration perform
better?
Thanks!


Regards,






More information about the Zope mailing list