Wowza Transcoder – NVENC GPU load balancing

We were recently asked to investigate and found that it is possible to load balance across GPUs for NVENC transcoding. We did have to write a custom module however found that it appears to work reasonably well.

It is important to note that some NVENC cards report multiple GPUs, when in fact they only have one, however you can still use this module.

You would need to add a module entry as the last module in the Modules section of the Application.xml which would look like this

<Module>
	<Name>Reader</Name>
	<Description>Reader</Description>
	<Class>guru.thewowza.transcoder.balance.Transcoder</Class>
</Module>

There are then two properties that need configuring transcoderGPUList and optionally transcoderGPUBalanceDebug. These should be added to the last properties section of the Application.xml

The properties would look something like this

<Properties>
	<Property>
		<Name>transcoderGPUList</Name>
		<Value>0,1</Value>
		<Type>String</Type>
	</Property>
	<Property>
		<Name>transcoderGPUBalanceDebug</Name>
		<Value>false</Value>
		<Type>Boolean</Type>
	</Property>
</Properties>

The transcoderGPUList property is a comma separated list of GPU IDs that are available. The simplest method to retrieve these is to enable transcoding and Wowza Streaming Engine will output a list of all hardware found.

The transcoderGPUBalanceDebug property, when set to true, allows you to see which GPU ID is selected for each encoding.

Download the module and source codeĀ here.


Comments are closed.