On Fri, Sep 19, 2008 at 5:03 PM, Jim dalton <jpdaltonjr(a)gmail.com> wrote:
We ran a benchmark test of OpenSER and RTPproxy to
understand the relation
between CPU capacity and the number of simultaneous calls that could be
managed with acceptable call quality.
OpenSER and RTPproxy were hosted on a Dell Precision 490 server with two
Intel Xeon 5140 dual core, 2.33 GHz CPUs and 4 GB of RAM. Three CPU cores
were disabled for the test. The test was run using just a single CPU core.
Multiple SIPp clients directed traffic to OpenSER which queried an OSP
server for call routing instructions. The test was designed for each call
to require an average of two retries before the call was completed to a SIPp
server on the third try. The two-way RTP stream for each call flowed
through the RTPproxy. Call Detail Records for each call attempt were sent
from OpenSER to the OSP server.
OpenSER and RTPproxy, using a single core of the 2.33 GHz CPU, can manage up
to 750 simultaneous calls.
A summary and detailed description of the benchmark test are available at
http://www.transnexus.com/White%20Papers/OpenSER_RTPproxy_test.htm
Jim,
As always, thanks for the performance analysis!
A few questions. 750 calls shows almost %100 CPU usage. How much
of that CPU time was spent in userspace (rtpproxy)? What was the
interrupt CPU load?
At 50pps x 750 RTP streams, that's at least 37,500 interrupts per
second, per stream just for received RTP. Factor in the other stream
(bidirectional RTP) we get to 75,000pps. That's a lot of interrupts
(which can be mitigated) just to handle receive traffic, not even
counting interrupt load for transmitted traffic.
What NICs were you using? What kernel was this? Were you using
NAPI receive interrupt polling? What about more advanced options like
those available in the e1000 driver (Interrupt Throttle Rate)? I'd be
interested to see what happens with a decent e1000 NIC and ITR set to
1000 or something really low (in terms of performance and the effect
on latency, etc).
Any plans on testing the kernel-level stuff in MediaProxy 2? It
would be neat to see the performance difference when userspace doesn't
get involved...
Sorry for all of the questions, and thanks again for the test!
--
Kristian Kielhofner
http://blog.krisk.org