Linux Virtual Delivery Agent

图形配置和优化

本文提供了有关 Linux VDA 图形配置和优化的指导。

有关详细信息,请参阅系统要求安装概述部分。

配置

优化 3D 图形工作负载

  • 此设置配置了最适合图形密集型工作负载的相应默认值。为工作负载侧重于图形密集型应用程序的用户启用此设置。仅当会话可使用 GPU 时才应用此策略。任何明确覆盖此策略设置的默认值的其他设置都将优先。

  • 默认情况下,优化 3D 图形工作负载处于禁用状态。

视频编解码器压缩

  • Thinwire 是 Linux VDA 中使用的显示远程处理技术。该技术允许将一台计算机上生成的图形传输到另一台计算机进行显示,通常通过网络传输。

对视频编解码器使用压缩图形策略设置默认图形模式,并为不同的用例提供以下选项:

  • 优先使用。此设置为默认值。无需进行额外配置。它可确保为所有 Citrix® 连接选择 Thinwire,并针对可扩展性、带宽和典型桌面工作负载的卓越图像质量进行优化。
  • 针对整个屏幕。通过全屏 H.264 或 H.265 交付 Thinwire,以优化用户体验和带宽,尤其是在大量使用 3D 图形的情况下。当选择针对整个屏幕时,或者当选择优先使用并启用优化 3D 图形工作负载时,支持会话水印
  • 针对活动更改区域。Thinwire 中的自适应显示技术可识别移动图像(视频、运动中的 3D)。它仅在屏幕上图像移动的部分使用 H.264。选择性地使用 H.264 视频编解码器使 HDX Thinwire 能够使用 H.264 视频编解码器检测和编码屏幕中频繁更新的部分。静态图像压缩 (JPEG、RLE) 和位图缓存将继续用于屏幕的其余部分,包括文本和图像。用户可以获得更低的带宽消耗和更高质量的视频内容,同时结合无损文本或其他高质量图像的优势。要启用此功能,请将对视频编解码器使用压缩策略设置为优先使用(默认)或针对活动更改区域。有关详细信息,请参阅图形策略设置

  • 选择针对整个屏幕

其他一些策略设置(包括以下视觉显示策略设置)可用于微调显示远程处理的性能:

对视频编解码器使用硬件编码策略允许在可用时使用 GPU 硬件加速,以使用视频编解码器压缩屏幕元素。如果 GPU 硬件不可用,VDA 将回退到使用软件视频编解码器进行基于 CPU 的编码。

GPU 硬件加速可优化硬件资源利用率,并极大地提高每秒帧数 (FPS) 的性能。

  • 从版本 2210 开始,GPU 硬件加速涵盖以下图形模式:

  • 优先使用
  • 针对整个屏幕
  • 针对活动更改区域

允许视觉无损压缩

允许视觉无损压缩策略允许对图形使用视觉无损压缩,而不是真正的无损压缩。视觉无损压缩可提高性能,但与真正的无损压缩相比,它会产生肉眼难以察觉的轻微损失。此设置会更改视觉质量设置值的使用方式。

允许视觉无损压缩策略默认处于禁用状态。要启用视觉无损压缩,请将允许视觉无损压缩设置为已启用,并将视觉质量策略设置为构建到无损

如果对视频编解码器使用压缩策略设置为不使用视频编解码器,则视觉无损压缩适用于静态图像编码。如果对视频编解码器使用压缩策略设置为不使用视频编解码器以外的图形模式,则视觉无损压缩适用于 H.264 编码。

以下客户端支持选择性 H.264:

-  适用于 Windows 的 Citrix Receiver 4.9 到 4.12
-  适用于 Linux 的 Citrix Receiver 13.5 到 13.10
-  适用于 Windows 的 Citrix Workspace™ 应用程序 1808 及更高版本
  • 适用于 Linux 的 Citrix Workspace 应用程序 1808 及更高版本

有关视觉质量对视频编解码器使用压缩策略设置的详细信息,请参阅视觉显示策略设置图形策略设置

支持 H.265 视频编解码器

从 7.18 版本开始,Linux VDA 支持 H.265 视频编解码器,用于远程图形和视频的硬件加速。

您可以在以下设备上使用此功能:

  • 适用于 Windows 的 Citrix Receiver 4.10 到 4.12
  • 适用于 Windows 的 Citrix Workspace 应用程序 1808 及更高版本

要利用此功能,请在 Linux VDA 和客户端上都启用它。如果客户端的 GPU 不支持使用 DXVA 接口进行 H.265 解码,则会忽略图形的 H.265 解码策略设置,并且会话将回退到使用 H.264 视频编解码器。有关详细信息,请参阅 H.265 视频编码

要在 VDA 上启用 H.265 硬件编码:

  1. 启用对视频编解码器使用硬件编码策略。
  2. 启用优化 3D 图形工作负载策略。
  3. 确保对视频编解码器使用压缩策略为默认值或设置为针对整个屏幕
  4. 确保视觉质量策略设置为构建到无损始终无损

要在客户端上启用 H.265 硬件编码,请参阅 H.265 视频编码

支持 YUV444 软件编码

Linux VDA 支持 YUV444 软件编码。YUV 编码方案为每个像素分配亮度和颜色值。在 YUV 中,Y 表示亮度或亮度值,UV 表示颜色或色度值。您可以在适用于 Windows 的 Citrix Receiver 4.10 到 4.12 以及适用于 Windows 的 Citrix Workspace 应用程序 1808 及更高版本上使用此功能。

每个唯一的 Y、U 或 V 值包含 8 位(即一个字节)数据。YUV444 数据格式每像素传输 24 位。YUV422 数据格式在两个像素之间共享 U 和 V 值,这使得平均传输速率为每像素 16 位。下表直观地比较了 YUV444 和 YUV420。

YUV444 YUV420
YUV444 YUV420

要在 VDA 上启用 YUV444 软件编码:

  1. 确保使用视频编解码器进行压缩策略设置为针对整个屏幕
  2. 确保视觉质量策略设置为始终无损构建到无损

图形质量滑块

我们在图形状态指示器工具中包含了一个图形质量滑块,该工具在您的虚拟 Linux 会话中运行。该滑块有助于在图像质量和交互性之间找到适当的平衡。

要使用滑块,请完成以下步骤:

  1. 在 Citrix Studio 中启用图形状态指示器策略。

    图形状态指示器策略

  2. 打开“终端”并运行 ctxslider 命令。滑块 UI 将显示。

    注意:

    如果您已将视觉质量策略设置为始终无损构建为无损,则滑块 UI 不会显示。

    图形质量滑块

    现在提供以下选项:

    • 要更改图像质量,请移动滑块。滑块支持 0-9 的范围。
    • 要使用系统定义的设置,请选择让系统决定
    • 要切换到无损模式,请选择像素完美

根据带宽估算调整平均比特率

Citrix 通过根据带宽估算调整平均比特率来增强 HDX™ 3D Pro 硬件编码。

当 HDX™ 3D Pro 硬件编码正在使用时,VDA 可以间歇性地估算网络带宽并相应地调整编码帧的比特率。此新功能提供了一种在清晰度和流畅性之间取得平衡的机制。

此功能默认启用。要禁用此功能,请运行以下命令:

sudo /opt/Citrix/VDA/bin/ctxreg create -k "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\Thinwire" -t "REG_DWORD" -v "DisableReconfigureEncoder" -d "0x00000001" --force
<!--NeedCopy-->

除了使用此功能外,您还可以运行以下命令来调整清晰度和流畅性。AverageBitRatePercentMaxBitRatePercent 参数设置带宽使用百分比。设置的值越高,图形越清晰,流畅性越低。建议的设置范围是 50-100。

sudo /opt/Citrix/VDA/bin/ctxreg create -k "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\Thinwire" -t "REG_DWORD" -v "AverageBitRatePercent" -d "90" --force

sudo /opt/Citrix/VDA/bin/ctxreg create -k "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\Thinwire" -t "REG_DWORD" -v "MaxBitRatePercent" -d "100" --force
<!--NeedCopy-->

在平均比特率调整中,当屏幕静止时,由于没有发送新帧,最新帧会保持低质量状态。锐化支持可以通过重新配置并立即以最高质量发送最新帧来解决此问题。

有关 Linux VDA Thinwire 支持的策略的完整列表,请参阅策略支持列表

有关 Linux VDA 上多显示器支持的配置信息,请参阅 CTX220128

并行处理

Thinwire 可以通过并行化某些任务来提高每秒帧数 (FPS),但会略微增加整体 CPU 消耗。此功能默认禁用。要启用此功能,请在 VDA 上运行以下命令:

sudo /opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Control\Citrix\Thinwire" -t "REG_DWORD" -v "ParallelProcessing" -d "0x00000001" --force
<!--NeedCopy-->

故障排除

检查正在使用的图形模式

运行以下命令以检查正在使用的图形模式(0 表示 TW+。1 表示全屏视频编解码器):

sudo /opt/Citrix/VDA/bin/ctxreg dump | grep GraphicsMode
<!--NeedCopy-->

结果类似于:

create -k "HKLM\Software\Citrix\Ica\Session\4\Graphics" -t "REG_DWORD" -v "GraphicsMode" -d "0x00000000" --force

验证 H.264 是否正在使用

运行以下命令以验证 H.264 是否正在使用(0 表示未使用。1 表示正在使用):

sudo /opt/Citrix/VDA/bin/ctxreg dump | grep H264
<!--NeedCopy-->

例如,结果可以类似于:

create -k "HKLM\Software\Citrix\Ica\Session\4\Graphics" -t "REG_DWORD" -v "H264" -d "0x00000000" --force

验证 H.265 是否正在使用

运行以下命令以验证全屏 H.265 是否正在使用(0 表示未使用。1 表示正在使用):

sudo /opt/Citrix/VDA/bin/ctxreg dump | grep H265
<!--NeedCopy-->

例如,结果可以类似于:

create -k "HKLM\Software\Citrix\Ica\Session\4\Graphics" -t "REG_DWORD" -v "H265" -d "0x00000000" --force

检查正在使用的 YUV 编码方案

运行以下命令以检查正在使用的 YUV 编码方案(0 表示 YUV420。1 表示 YUV422。2 表示 YUV444):

注意:

仅当正在使用视频编解码器时,YUVFormat 的值才有意义。

sudo /opt/Citrix/VDA/bin/ctxreg dump | grep YUVFormat
<!--NeedCopy-->

例如,结果可以类似于:

create -k "HKLM\Software\Citrix\Ica\Session\4\Graphics" -t "REG_DWORD" -v "YUVFormat" -d "0x00000000" --force

验证 YUV444 软件编码是否正在使用

运行以下命令以验证 YUV444 软件编码是否正在使用:

sudo /opt/Citrix/VDA/bin/ctxreg dump | grep Graphics
<!--NeedCopy-->

当 YUV444 正在使用时,结果类似于:

create -k "HKLM\Software\Citrix\Ica\Session\4\Graphics" -t "REG_DWORD" -v "GraphicsMode" -d "0x00000001" --force

create -k "HKLM\Software\Citrix\Ica\Session\4\Graphics" -t "REG_DWORD" -v "H264" -d "0x00000001" --force

create -k "HKLM\Software\Citrix\Ica\Session\4\Graphics" -t "REG_DWORD" -v "HardwareEncoding" -d "0x00000000" --force

create -k "HKLM\Software\Citrix\Ica\Session\4\Graphics" -t "REG_DWORD" -v "YUVFormat" -d "0x00000002" --force

验证 HDX 3D Pro 是否已启用

运行以下命令以验证 HDX 3D Pro 是否已启用:

sudo /opt/Citrix/VDA/bin/ctxreg dump | grep ProductEdition

sudo /opt/Citrix/VDA/bin/ctxreg dump | grep StackSessionMode

sudo /opt/Citrix/VDA/bin/ctxreg dump | grep 3DPro
<!--NeedCopy-->

当 HDX 3D Pro 已启用时,结果类似于:

create -k "HKLM\Software\Citrix\VirtualDesktopAgent\State" -t "REG_SZ" -v "ProductEdition" -d "<PLT or ENT>" --force

create -k "HKLM\System\CurrentControlSet\Control\Citrix\WinStations\tcp" -t "REG_DWORD" -v "StackSessionMode" -d "0x00000000" --force

create -k "HKLM\System\CurrentControlSet\Control\Citrix" -t "REG_DWORD" -v "3DPro" -d "0x00000000" --force

要验证 HDX 3D Pro 所需的 NVIDIA 库是否已加载,请在 Linux VDA 上运行 nvidia-smi 命令。结果类似于:

Tue Apr 12 10:42:03 2016
+------------------------------------------------------+
| NVIDIA-SMI 361.28     Driver Version: 361.28         |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GRID K1             Off  | 0000:00:05.0     Off |                  N/A |
| N/A   42C    P0    14W /  31W |    207MiB /  4095MiB |      8%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0      2164  C+G   /usr/local/bin/ctxgfx                          106MiB |
|    0      2187    G   Xorg                                            85MiB |
+-----------------------------------------------------------------------------+
<!--NeedCopy-->

验证硬件编码是否正在用于 3D Pro

运行以下命令(0 表示未使用,1 表示正在使用):

sudo /opt/Citrix/VDA/bin/ctxreg dump | grep HardwareEncoding
<!--NeedCopy-->

当 3D Pro 正在使用时,结果类似于:

create -k "HKLM\Software\Citrix\Ica\Session\1\Graphics" -t "REG_DWORD" -v "HardwareEncoding" -d "0x00000001" --force

验证 NVIDIA GRID 图形驱动程序是否已正确安装

要验证 NVIDIA GRID 图形驱动程序是否已正确安装,请运行 nvidia-smi。结果类似于:

+------------------------------------------------------+
| NVIDIA-SMI 352.70     Driver Version: 352.70         |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla M60           Off  | 0000:00:05.0     Off |                  Off |
| N/A   20C    P0    37W / 150W |     19MiB /  8191MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
<!--NeedCopy-->

为显卡设置正确的配置:

etc/X11/ctx-nvidia.sh

HDX 3D Pro 多显示器重绘问题

如果您在主显示器以外的屏幕上看到重绘问题,请检查 NVIDIA GRID 许可证是否可用。

检查 Xorg 错误日志

Xorg 的日志文件类似于 /var/log/ 文件夹中的 Xorg.{DISPLAY}.log

已知问题和限制

对于 vGPU,Citrix Hypervisor™ 本地控制台显示 ICA 桌面会话屏幕

解决方法:通过运行以下命令禁用 VM 的本地 VGA 控制台:

对于 Citrix Hypervisor 8.1 及更高版本:

[root@xenserver® ~]# xe vgpu-param-set uuid=vgpu-uuid extra_args=disable_vnc=1
<!--NeedCopy-->

对于 Citrix Hypervisor 8.1 之前的版本:

xe vm-param-set uuid=<vm-uuid> platform:vgpu_extra_args="disable_vnc=1"
<!--NeedCopy-->

Gnome 3 桌面登录时弹出窗口缓慢

这是 Gnome 3 桌面会话启动的限制。

某些 OpenGL/WebGL 应用程序在调整 Citrix Workspace app 窗口大小时渲染不佳

调整 Citrix Workspace app 窗口大小会更改屏幕分辨率。NVIDIA 专有驱动程序会更改一些内部状态,可能需要应用程序做出相应响应。例如,WebGL 库元素 lightgl.js 可能会引发错误,指出“Rendering to this texture is not supported (incomplete frame buffer)”。

图形配置和优化