Performance leveling - is it possible in any way?

I’m testing Wowza 4 Transcoder performance on a sever with dual Intel Xeon E5-2670 (HT is on) and 48GB RAM. When transcoding 4 channels with my settings I’m getting about 40% CPU load, and it holds pretty steady, deviating in +/- 7% limits with relatively rare peaks. When I’m doubling the channels count, CPU load is predictably doubles too, but now it is constantly jumping from 60% to 100%. Of course, video stream is changing its complexity during playback, so different load on decode and encode, I assume. But is there any way (maybe with some caching, delaying) to level that load to be more smooth, leaving a (more) constant fraction of CPU resources for other tasks?

I’ve tried to switch Hyper-Threading on CPU and multi-threaded scaling in applications settings. The lesser CPU threads are available, the more threads Wowza is generating, the bigger performance deviations I get. Probably too many threads are blocking each other, resulting in constant 100% load when it must not to be that high. Threads count in Wowza’s performance tuning settings are all at “Set automatically (recommended)”.

Any suggestions if it can run more smoothly, anyone?

Updated: Some additional statistics.

Transcoding 2 channels: 20% load, +/- 3% deviations, almost no peaks.

Transcoding 4 channels: 40% load, +/- 5% deviations, peaks are happening once per each 10 (about) seconds.

Transcoding 8 channels: 80-90% load, +/- 10% deviations, peaks are constant, and along with high peaks there are low peaks also (down to 60%) so I assume some frame dropping happens.

Maybe an important note: due to test license limitations I’m transcoding the same single channels in several independent applications. So if channel’s stream complexity matters, can it have a multiplicative effect?

Hi,

If you look at the recent Transcoder Performance Benchmarks you’ll see that Server 5 has a similar spec to yours.

In those tests Server 5 can only reasonably handle about 5 channels. The peak CPU is shown at 77% Generally we don’t recommend going over 60-65% as that is the threshold where frames start to drop.

There really isn’t a way to smooth this out. You’re best finding the optimal number of channels possible with your configuration.

If you need a few more channels you may want to consider adding a supported GPU card for Transscoder acceleration. The card used in the benchmark is the NVidia K5000.

Daren

Hi. Yes, I’ve read the benchmark article. Though, the stream configurations used there are all HD. I need to translate mostly SD channels to mostly mobile devices, so it allows some trade-offs with resolutions.

It is recommended to leave free resources for streaming purposes (when server is transcoding and streaming at the same time, I suppose?), but what if I want to use several servers as origins that are doing only transcoding and streaming each channel only once to an edge “distribution” server(s)?