[OpenSIPS-Users] OpenSIPS maximum performance in a multiprocessor machine (SMP)
Stanisław Pitucha
viraptor at gmail.com
Mon Sep 14 21:29:15 CEST 2009
2009/9/14 Italo Dacosta <idacosta at gatech.edu>:
> I am using a stateless proxy configuration with 4 children processes,
> just required modules (i.e., not billing) and a very simple routing logic:
Ok - that's the first problem. Number of children == number of
processes. You cannot handle more than 4 messages at one time right
now.
Also - what modules are enabled and how does your usrloc find the
location - is it db query, or something else? If you use anything
external for lookup, I'd change children to 16 (if memory only, then
8)
> I am also using SIPp 3.1 to generate the test call traffic.
On the same host, or on a separate one? From my experience sipp can
eat loads of cpu and it's threading is less than good. So in a perfect
scenario, you want sipp on a separate host and check whether it's not
cpu-starved there.
> With the above configuration the proxy is able to reach around 20,000
> calls per second (cps).
What do you mean by that? What happens if you try to send more? What
do you mean by "calls" - your config allows only for an
INVITE/NOTIFY/something else to be sent via proxy - is that all you're
testing (i.e. are you testing "messages with lookup per second)? Then
you can find the maximal possible throughput by using ~10 children
doing only {forward();} - you'll not get better performance than that.
> CPU %user %nice %sys %irq %soft %steal %idle intr/s
> all 24.40 0.00 19.48 0.12 19.28 0.00 36.73 11765.40
> 7 5.60 0.00 4.60 1.00 83.80 0.00 5.00 11742.60
Yes - cpu 7 handles most irq, so it's probably the network card -
check it in /proc/interrupts. If your card supports it, you can change
/proc/irq/XXX/smp_affinity (where XXX is the network card irq) to use
all cpus. It will either help or kill the performance - depending on
many things.
> My questions is why OpenSIPS does not use all the CPUs to their maximum
> (>95% utilization) and therefore, handle higher call rates. I would like
> to know what is causing OpenSIPS to stop handling higher call rates
> given that there are still resources available (CPU, memory, network).
If it was network, you'd get very high %wait / %irq. To get a real
answer to your question, you could simply run opensips under a
profiler.
I hope that helps a little.
More information about the Users
mailing list