Zope Processor binding and Hyper Threading
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,
participants (1)
-
zhimin@iss.nus.edu.sg