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?
We used SAR to capture server level CPU utilization. We did not capture any data specific to OpenSER or RTPproxy. Also, we did not collect any data on interupts. We welcome suggestions for how to collect this data in future tests.
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).
This was an out of the box performance test. No optimizations were made to the software or hardware. I do not have the specs for the NIC card. The NIC card was the standard NIC card shipped by Dell.
The complete details of the test plan are available at http://www.transnexus.com/White%20Papers/OpenSER_RTPproxy_Benchmark_Test.pdf . Suggestions on how to improve the test are welcome.
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...
At this time, we do not have any plans to run a performance test on MediaProxy.
Sorry for all of the questions, and thanks again for the test!
-- Kristian Kielhofner http://blog.krisk.org