This question is for all Py* developers. I have the next problem. We are using PyMSN / PyAIM / PyICQ and the yahoo transport from xmpppy, due to large number of users we decide to use a Dual procesor Machine (Dual Pentium Xeon 3.2ghz) expecting that this configuration would be sufficient but not. Reaching 700 concurrent users the PyMSN use a lot of CPU, I mean 30 - 45 % (Using select reactor, epoll did not work anytime) but this is not so important, in some situations, CPU usage reach 100% by PyMSN and PyMSN start being unusable. But the worst is that having two cpus (4 seen by top, due to hyperthreading), the second procesor was idle, so we have 100% on CPU 1 and 0 % on CPU 2. Debugging we find that twisted is thread safe, and I made an Async Method Wrapper (Low level twisted class) So the charge is redistributed on all processors. The change works fine but the code is ugly. It's a dynamic thread pool. I change utility.py and add a file called async_method.py to solve this.
Is there something in PyMSN/PyAIM/PyICQ that I have to consider that need to be serial? Thanks in advance Gonzalo Barrio PD: I have a little problem with a method that purge the inactive threads, when I have fixed this problem I'm gonna post this to the list.