Known Product Limitations#

Known product limitations for this release of NVIDIA vGPU software are described in the following sections.

Maximum Allowed Network Adapters on a VM#

If a VM is configured with too many network adapters, the VM might fail to acquire or return a license. The exact number of network adapters allowed on a VM depends on your system. In testing, it was verified that a VM with 40 network adapters could successfully acquire a license.

If a VM fails to acquire or return a license because the VM is configured with too many network adapters, the following error message is written to the licensing event log file:

Failed to update local trusted store - Maximum buffer size exceeded

For information about how to recover from such a failure, refer to Virtual GPU Software Client Licensing User Guide.

NVENC does not support resolutions greater than 4096×4096#

Description#

The NVIDIA hardware-based H.264 video encoder (NVENC) does not support resolutions greater than 4096×4096. This restriction applies to all NVIDIA GPU architectures and is imposed by the GPU encoder hardware itself, not by NVIDIA vGPU software. The maximum supported resolution for each encoding scheme is listed in the documentation for NVIDIA Video Codec SDK. This limitation affects any remoting tool where H.264 encoding is used with a resolution greater than 4096×4096. Most supported remoting tools fall back to software encoding in such scenarios.

Workaround#

Use H.265 encoding. H.265 is more efficient than H.264 encoding and has a maximum resolution of 8192×8192.

Note

Resolutions greater than 4096×4096 are supported only by the H.265 decoder that 64-bit client applications use. The H.265 decoder that 32-bit applications use supports a maximum resolution of 4096×4096.

NVIDIA vGPU for Compute is not supported on Linux with KVM#

NVIDIA vGPU for Compute is not supported on Linux with KVM. C-series vGPU types are not available.

Nested Virtualization Is Not Supported by NVIDIA vGPU#

In general, NVIDIA vGPU deployments do not support nested virtualization, that is, running a hypervisor in a guest VM. For example, enabling the Hyper-V role in a guest VM running the Windows Server OS is not supported because it entails enabling nested virtualization. Similarly, enabling Windows Hypervisor Platform is not supported because it requires the Hyper-V role to be enabled.

Issues occur when the channels allocated to a vGPU are exhausted#

Description#

Issues occur when the channels allocated to a vGPU are exhausted and the guest VM to which the vGPU is assigned fails to allocate a channel to the vGPU. A physical GPU has a fixed number of channels and the number of channels allocated to each vGPU is inversely proportional to the maximum number of vGPUs allowed on the physical GPU.

When the channels allocated to a vGPU are exhausted and the guest VM fails to allocate a channel, the following errors are reported on the hypervisor host or in an NVIDIA bug report:

Jun 26 08:01:25 srvxen06f vgpu-3[14276]: error: vmiop_log: (0x0): Guest attempted to allocate channel above its max channel limit 0xfb
Jun 26 08:01:25 srvxen06f vgpu-3[14276]: error: vmiop_log: (0x0): VGPU message 6 failed, result code: 0x1a
Jun 26 08:01:25 srvxen06f vgpu-3[14276]: error: vmiop_log: (0x0):         0xc1d004a1, 0xff0e0000, 0xff0400fb, 0xc36f,
Jun 26 08:01:25 srvxen06f vgpu-3[14276]: error: vmiop_log: (0x0):         0x1, 0xff1fe314, 0xff1fe038, 0x100b6f000, 0x1000,
Jun 26 08:01:25 srvxen06f vgpu-3[14276]: error: vmiop_log: (0x0):         0x80000000, 0xff0e0200, 0x0, 0x0, (Not logged),
Jun 26 08:01:25 srvxen06f vgpu-3[14276]: error: vmiop_log: (0x0):         0x1, 0x0
Jun 26 08:01:25 srvxen06f vgpu-3[14276]: error: vmiop_log: (0x0): , 0x0

Workaround#

Use a vGPU type with more frame buffer, thereby reducing the maximum number of vGPUs allowed on the physical GPU. As a result, the number of channels allocated to each vGPU is increased.

Virtual GPU hot plugging is not supported#

NVIDIA vGPU software does not support the addition of virtual function I/O (VFIO) mediated device (mdev) devices after the VM has been started by QEMU. All mdev devices must be added before the VM is started.

Total frame buffer for vGPUs is less than the total frame buffer on the physical GPU#

Some of the physical GPU’s frame buffer is used by the hypervisor on behalf of the VM for allocations that the guest OS would otherwise have made in its own frame buffer. The frame buffer used by the hypervisor is not available for vGPUs on the physical GPU. In NVIDIA vGPU deployments, frame buffer for the guest OS is reserved in advance, whereas in bare-metal deployments, frame buffer for the guest OS is reserved on the basis of the runtime needs of applications.

If error-correcting code (ECC) memory is enabled on a physical GPU that does not have HBM2 memory, the amount of frame buffer that is usable by vGPUs is further reduced. All types of vGPU are affected, not just vGPUs that support ECC memory.

On all GPUs that support ECC memory and, therefore, dynamic page retirement, additional frame buffer is allocated for dynamic page retirement. The amount that is allocated is inversely proportional to the maximum number of vGPUs per physical GPU. All GPUs that support ECC memory are affected, even GPUs that have HBM2 memory or for which ECC memory is disabled.

The approximate amount of frame buffer that NVIDIA vGPU software reserves can be calculated from the following formula:

<max-reserved-fb> = <vgpu-profile-size-in-mb>÷16 + 16 + <ecc-adjustments> + <page-retirement-allocation> + <compression-adjustment>

<max-reserved-fb>

The maximum total amount of reserved frame buffer in Mbytes that is not available for vGPUs.

<vgpu-profile-size-in-mb>

The amount of frame buffer in Mbytes allocated to a single vGPU. This amount depends on the vGPU type. For example, for the T4-16Q vGPU type, <vgpu-profile-size-in-mb> is 16384.

<ecc-adjustments>

The amount of frame buffer in Mbytes that is not usable by vGPUs when ECC is enabled on a physical GPU that does not have HBM2 memory.

  • If ECC is enabled on a physical GPU that does not have HBM2 memory <ecc-adjustments> is <fb-without-ecc>/16, which is equivalent to 64 Mbytes for every Gbyte of frame buffer assigned to the vGPU. <fb-without-ecc> is total amount of frame buffer with ECC disabled.

  • If ECC is disabled or the GPU has HBM2 memory, <ecc-adjustments> is 0.

<page-retirement-allocation>

The amount of frame buffer in Mbytes that is reserved for dynamic page retirement.

  • On GPUs based on the NVIDIA Maxwell GPU architecture, <page-retirement-allocation> = 4÷<max-vgpus-per-gpu>.

  • On GPUs based on NVIDIA GPU architectures after the Maxwell architecture, <page-retirement-allocation> = 128÷<max-vgpus-per-gpu>

<max-vgpus-per-gpu>

The maximum number of vGPUs that can be created simultaneously on a physical GPU. This number varies according to the vGPU type. For example, for the T4-16Q vGPU type, <max-vgpus-per-gpu> is 1.

<compression-adjustment>

The amount of frame buffer in Mbytes that is reserved for the higher compression overhead in vGPU types with 12 Gbytes or more of frame buffer on GPUs based on the Turing architecture.

<compression-adjustment> depends on the vGPU type as shown in the following table.

vGPU Type

Compression Adjustment (MB)

T4-16Q

T4-16C

T4-16A

28

For all other vGPU types, <compression-adjustment> is 0.

Note

In VMs running Windows Server 2012 R2, which supports Windows Display Driver Model (WDDM) 1.<x>, an additional 48 Mbytes of frame buffer are reserved and not available for vGPUs.

Issues may occur with graphics-intensive OpenCL applications on vGPU types with limited frame buffer#

Description#

Issues may occur when graphics-intensive OpenCL applications are used with vGPU types that have limited frame buffer. These issues occur when the applications demand more frame buffer than is allocated to the vGPU.

For example, these issues may occur with the Adobe Photoshop and LuxMark LuxCoreRender applications:

  • When the image resolution and size are changed in Adobe Photoshop, a program error may occur or Photoshop may display a message about a problem with the graphics hardware and a suggestion to disable OpenCL.

  • When the LuxMark LuxCoreRender application is run, XID error 31 may occur.

Workaround#

For graphics-intensive OpenCL applications, use a vGPU type with more frame buffer.

VM running an incompatible NVIDIA vGPU guest driver fails to initialize vGPU when booted#

Description#

A VM running a version of the NVIDIA guest VM driver that is incompatible with the current release of Virtual GPU Manager will fail to initialize vGPU when booted on a Linux with KVM platform running that release of Virtual GPU Manager.

A guest VM driver is incompatible with the current release of Virtual GPU Manager in either of the following situations:

  • The guest driver is from a release in a branch two or more major releases before the current release, for example release 9.4.

    In this situation, the Linux with KVM VM’s /var/log/messages log file reports the following error:

    vmiop_log: (0x0): Incompatible Guest/Host drivers: Guest VGX version is older than the minimum version supported by the Host. Disabling vGPU.
    
  • The guest driver is from a later release than the Virtual GPU Manager.

    In this situation, the Linux with KVM VM’s /var/log/messages log file reports the following error:

    vmiop_log: (0x0): Incompatible Guest/Host drivers: Guest VGX version is newer than the maximum version supported by the Host. Disabling vGPU.
    

In either situation, the VM boots in standard VGA mode with reduced resolution and color depth. The NVIDIA virtual GPU is present in Windows Device Manager but displays a warning sign, and the following device status:

Windows has stopped this device because it has reported problems. (Code 43)

Resolution#

Install a release of the NVIDIA guest VM driver that is compatible with current release of Virtual GPU Manager.

Single vGPU benchmark scores are lower than pass-through GPU#

Description#

A single vGPU configured on a physical GPU produces lower benchmark scores than the physical GPU run in pass-through mode.

Aside from performance differences that may be attributed to a vGPU’s smaller frame buffer size, vGPU incorporates a performance balancing feature known as Frame Rate Limiter (FRL). On vGPUs that use the best-effort scheduler, FRL is enabled. On vGPUs that use the fixed share or equal share scheduler, FRL is disabled.

FRL is used to ensure balanced performance across multiple vGPUs that are resident on the same physical GPU. The FRL setting is designed to give good interactive remote graphics experience but may reduce scores in benchmarks that depend on measuring frame rendering rates, as compared to the same benchmarks running on a pass-through GPU.

Resolution#

FRL is controlled by an internal vGPU setting. On vGPUs that use the best-effort scheduler, NVIDIA does not validate vGPU with FRL disabled, but for validation of benchmark performance, FRL can be temporarily disabled by setting frame_rate_limiter=0 in the vGPU configuration file.

# echo "frame_rate_limiter=0" > /sys/bus/mdev/devices/<vgpu-id>/nvidia/vgpu_params

For example:

# echo "frame_rate_limiter=0" > /sys/bus/mdev/devices/aa618089-8b16-4d01-a136-25a0f3c73123/nvidia/vgpu_params

The setting takes effect the next time any VM using the given vGPU type is started.

With this setting in place, the VM’s vGPU will run without any frame rate limit.

The FRL can be reverted back to its default setting as follows:

  1. Clear all parameter settings in the vGPU configuration file.

    # echo " " > /sys/bus/mdev/devices/<vgpu-id>/nvidia/vgpu_params
    

    Note

    You cannot clear specific parameter settings. If your vGPU configuration file contains other parameter settings that you want to keep, you must reinstate them in the next step.

  2. Set frame_rate_limiter=1 in the vGPU configuration file.

    # echo "frame_rate_limiter=1" > /sys/bus/mdev/devices/<vgpu-id>/nvidia/vgpu_params
    

    If you need to reinstate other parameter settings, include them in the command to set frame_rate_limiter=1. For example:

    # echo "frame_rate_limiter=1 disable_vnc=1" > /sys/bus/mdev/devices/aa618089-8b16-4d01-a136-25a0f3c73123/nvidia/vgpu_params
    

nvidia-smi fails to operate when all GPUs are assigned to GPU pass-through mode#

Description#

If all GPUs in the platform are assigned to VMs in pass-through mode, nvidia-smi will return an error:

[root@vgx-test ~]# nvidia-smi
Failed to initialize NVML: Unknown Error

This is because GPUs operating in pass-through mode are not visible to nvidia-smi and the NVIDIA kernel driver operating in the Linux with KVM host.

To confirm that all GPUs are operating in pass-through mode, confirm that the vfio-pci kernel driver is handling each device.

# lspci -s 05:00.0 -k
05:00.0 VGA compatible controller: NVIDIA Corporation GM204GL [Tesla M60] (rev a1)
               Subsystem: NVIDIA Corporation Device 113a
               Kernel driver in use: vfio-pci

Resolution#

N/A