In this Section:
This section describes the following aspects of creating a GPU ISBC on KVM:
This section describes the changes required on the KVM host to enable:
OS Configuration for KVM host with GPU Device
Step | Action | Notes |
---|---|---|
1 | Edit /etc/sysconfig/grub to ensure that the following parameters are populated: intel_iommu=on iommu=pt rdblacklist=nouveau |
|
2 | Update grub using the following command: grub2-mkconfig -o /etc/grub2.cfg | |
3 | Edit /etc/systemd/system.conf to the CPUAffinity parameter is uncommented and it is populated with the CPUs that needs to be left to the host processes. | Isolates the remaining CPUs from the host. |
4 | Create /etc/modprobe.d/nouveau.conf file with the following contents: blacklist nouveau | Blacklists opensource NVIDIA driver (nouveau) from loading on the host. |
5 | Reboot the KVM host. |
This section covers following aspects:
Steps in detail:
Select Add Hardware option as shown below:
Add Hardware
Select PCI Host Device option as shown below:
PCI Host Device
From the list of PCI devices, scroll and select the GPU PCIe device/s to be allocated to the instance as shown below:
Select the GPU PCIe Device/s
After installing the OS and the SBC, the application will be up with the default traffic profile being activated.
To apply the custom GPU profile, execute the following CLI command by entering the CLI mode using admin user (enter into the configuration mode):
Create a codecMix profile with the codecs to be configured for GPU transcoding:
% set system sweCodecMixProfile <profile name> <codec> <ptime value: 10ms, 20ms, 30ms, 40ms, 60ms, 80ms, 100ms> percentage <percentage value>
Parameter | Length/Range | Description |
---|---|---|
<codec> | N/A | Enter the codec used by this Codec Mix Profile. Select one of the currently supported codecs:
Note: - For more information on "GPU + CPU codecs", see the section Support for CPU+GPU Hybrid Transcoding Instances. - You can provision CPU codecs in the codec profile and associate it with the GPU traffic profile; however, you must provision at least one GPU codec in the |
<ptime value> | N/A | Select a packetization time value representing 10 ms, 20 ms, 30 ms, 40 ms, 60 ms:
Note: For SBC SWe Cloud 8.1, ptime values |
percentage | 0.00-100.00 | <% value> – The percentage distribution allocated for the codec mix. The sum of all percentage entries of all columns in any row of the transcoding profile table must equal 100. |
sweCodecMixProfile | 1-40 characters |
The SWe Codec Mix Profile is attachable to |
For example, to configure a codec profile for AMRWB-G711u transcoding, run the following command:
% set system sweCodecMixProfile customCodecMix amrwb p20 percentage 50 % set system sweCodecMixProfile customCodecMix g711 p20 percentage 50 % commit
Create a traffic profile. Set the transcodingCodecProfile with the codecMix profile created in step 1.
% set system sweTrafficProfiles <profile name> isAccess <value> callHoldTime <duration> passthroughCodecProfile <profile name> transcodePercent <percentage> transcodingCodecProfile <profile name> useGPUForTranscoding <value>
Parameter | Length/Range | Description |
---|---|---|
sweTrafficProfiles | 1-40 characters |
NOTE: To create additional profiles, delete any inactive custom profiles. |
isAccess | N/A | Set this flag to "true" to specify whether the deployment uses an access scenario.
NOTE: When set to ' |
bhcaPerSubscriber | 0-5 |
NOTE: This parameter is available when |
| 10-10800 | <# seconds> – Enter the average call hold time, in seconds, of the call load for this profile. (default = 90) |
cryptoPercent | 0-100 |
|
directMediaPercent | 0-100 |
NOTE: The combined total percentage of |
passthroughCodecProfile | N/A | The name of the codec mix to associate with the Passthrough Codec Profile.
|
processorCapabilityIndexOverride | N/A | Use this flag to enable/disable index overriding of the default CPU performance computation by the SBC SWe. When set to 'true', the computed indices (which are calculated during system boot-up) are ignored, and the value provided in
NOTE: Since use cases for overriding the default computed indices are rare, it is recommended to not set the value of |
processorCapabilityIndexOverrideValue | 0.2-10 | Use this parameter to specify the computational value to use to override the default computed indices. (default = 1) NOTE: This parameter is available when |
internalRefreshTimer | 15-86400 |
NOTE: The parameter is available only when |
externalRefreshTimer | 15–86400 |
NOTE: The parameter is available only when |
transcodePercent | 0-100 |
NOTE: The combined total percentage of |
transcodingCodecProfile | N/A | The name of the codec mix to associate with the Transcoding Codec Profile. |
tonesPercent | 0-100 | <% value> (default = 0) – Use this parameter to specify the percentage of legs to use for tones treatment. |
useGPUForTranscoding | N/A | Set this flag to "true" to specify whether the deployment uses GPU for transcoding.
|
For example: To create a custom GPU profile with the name custom_gpu_profile using the codecMixProfile
created in step 1 for trascoding profile:
% set system sweTrafficProfiles custom_gpu_profile callHoldTime 100 transcodePercent 50 passthroughCodecProfile G711_20ms transcodingCodecProfile customCodecMix useGPUForTranscoding true % commit
Activate the traffic profile created in Step 2.
% set system sweActiveProfile name <profile name>
Where the profile name is the custom traffic profile name given in step 2.
For example, to activate the custom GPU traffic profile created in step 2, run the following command:
% set system sweActiveProfile name custom_gpu_profile % commit
The instance will reboot and comes up in the activated traffic profile.
To check which profile is activated, run the following command:
> show table system sweActiveProfile
Example:
admin@vsbc1> show table system sweActiveProfile name custom_gpu_profile; stateChangeTime 2018-12-09T13:25:43-00:00; [ok][2018-12-11 01:29:03] admin@vsbc1>
The term "Hybrid Transcoding" implies leveraging both CPU and GPU resources efficiently to accommodate a given codec combination for transcoding capability. With Hybrid Transcoding, a suitable VM instance (SBC SWe on KVM/Openstack) utilizes all the CPU and GPU resources allocated to it for provisioning a given transcode call mix scenario.
Prior to Hybrid Transcoding, the SBC supported either a pure CPU transcoding solution, or a pure GPU transcoding solution. However, in the pure GPU solution, many CPUs are left unused. For example, when a 32
vCPU, GPU-ISBC instance is used to provision just AMRWB-G711u
calls, only 13
vCPUs are used, although such an instance can handle 7680
sessions for AMRWB-G711u
transcoding. With Hybrid Transcoding, the remaining 19
vCPUs (32-13
vCPUs) are used for provisioning additional AMRWB-G711
sessions.
Hybrid Transcoding enables a GPU-SBC to support GPU codecs as well as non-GPU-supported codec in the same instance. For example, AMRWB-G711 and G726-G711 codecs are supported in the same instance.
Hybrid Transcoding is supported in Custom GPU and Standard GPU traffic profiles.
For Hybrid Transcoding, the percentage
value of the codec G7112G711
in sweCodecMixProfile
indicates the proportion of total number of sessions designated for pure G711
transcoding (G711-G711
). This is applicable for Hybrid Transcoding, as well as pure CPU transcoding solutions.
The percentage value for G7112G711
is used for estimating transcode and bandwidth cost.
The percentage value for G711
is not used for estimating transcode cost, but is used for bandwidth calculation of PXPAD scenarios.
The percentage value for G711
cannot be greater than the percentage value of non-G711 codecs.
The sum of all codec percentages is
100
.
DSP-based Tone detection is supported only on GPU-ISBC profile.
Best Practice
Ribbon recommends monitoring of the status of codec channel capacities for codecs provisioned on GPU (on a per GPU device basis), as well as on CPU.
To display the status of codec channel capacities for codecs provisioned on GPU, on a per GPU device basis, execute the following existing command:
> show table system gpuTranscodeStatus
Similarly, to display the status of codec channel capacities for codecs provisioned on CPU, execute the following existing command:
> show table system cpuTranscodeStatus
To display the status using the EMA, refer to: