[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