[OpenSIPS-Users] OpenSIPS maximum performance in a multiprocessor machine (SMP)

Italo Dacosta idacosta at gatech.edu
Mon Sep 14 20:08:45 CEST 2009


Hello,

I am running some performance tests with OpenSIPS 1.5.2. Basically, I
wan to measure the maximum call rate that OpenSIPS can handle. I am
using a machine with the following configurations:
• 8 processors (2GHz Quad-Core AMD Opteron),
• 16 GB memory
• Gigabit Ethernet
• Ubuntu 8.04 (Linux 2.6.24-19-server #1 SMP).

I am using a stateless proxy configuration with 4 children processes,
just required modules (i.e., not billing) and a very simple routing logic:

route{
	lookup("location");
	forward();
	exit;
}


I am also using SIPp 3.1 to generate the test call traffic.

With the above configuration  the proxy is able to reach around 20,000
calls per second (cps). However, I have noticed that the CPUs in the
server are not all completely utilized. Below is the output of the
mpstat tool when the maximum CPU utilization was measured (100 - %
idle).  The mpstat output shows that only CPU #7 reaches 95%
utilization. The other CPUs have around 60-70% utilization. CPU #7 also
have the largest number of interrupts per second ( I guess that CPU 7 is
handling the network interrupts).

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
0   22.20    0.00   23.20    0.00   10.60    0.00   44.00      0.00
1   32.40    0.00   18.20    0.00   10.40    0.00   39.00      0.00
2   22.40    0.00   20.80    0.00   10.00    0.00   46.80      0.00
3   30.20    0.00   21.80    0.00    8.40    0.00   39.60      0.00
4   24.60    0.00   22.40    0.00   10.20    0.00   42.80      0.00
5   33.60    0.00   20.80    0.00   11.80    0.00   33.80      6.00
6   24.20    0.00   24.00    0.00    9.00    0.00   42.80     17.80
7    5.60    0.00    4.60    1.00   83.80    0.00    5.00  11742.60
8    0.00    0.00    0.00    0.00    0.00    0.00    0.00      0.00

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).
In other words, what is the bottleneck at this point. ( I originally
though it was the SIPp clients generating the load, but I increase the
number of clients and got the same results).

I would appreciate any advice or ideas on how to maximize OpenSIPs
performance in the above scenario.

Thanks in advance,
ID



More information about the Users mailing list