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