图形配置和微调
本文指导如何完成 Linux VDA 显卡配置和微调。
配置
Thinwire 是 Linux VDA 中使用的显示内容远程处理技术。该技术允许一台计算机上生成的图形传输(通常跨网络)到另一台计算机上进行显示。
使用视频编解码器进行压缩图形策略设置默认图形模式,并针对不同的用例提供以下选项:
- 偏好时使用。这是默认设置。无需执行其他配置。它可确保为所有 Citrix 连接选择 Thinwire,且 Thinwire 已针对典型桌面工作负载在可扩展性、带宽和卓越图像质量方面经过优化。
- 针对整个屏幕。为 Thinwire 提供全屏 H.264 或 H.265,以针对改进用户体验和带宽使用情况进行优化,尤其是在大量使用 3D 图形的情况下。
- 针对主动变化的区域。Thinwire 中的自适应显示技术识别移动图像(视频、动态 3D)。它仅在图像正在移动的屏幕部分中使用 H.264。选择性使用 H.264 视频编解码器支持 HDX Thinwire 检测屏幕的频繁更新部分并使用 H.264 视频编解码器对其进行编码。对于屏幕的其余部分(包括文本和摄影图片),仍继续使用图像压缩(JPEG、RLE)和位图缓存。用户可获得以下益处:占用更低的带宽、提高视频内容质量以及在其他位置获得无损文本或高质量图像。要启用此功能,请将策略设置使用视频编解码器进行压缩更改为偏好时使用(默认设置)或针对主动变化的区域。有关详细信息,请参阅图形策略设置。要为此功能启用 H.264 硬件编码,请参阅针对主动变化的区域选择性地使用 H.264 硬件编解码器。
一些其他策略设置(包括以下视频显示策略设置)可以用于对显示远程处理技术的性能进行完善:
并行处理
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-->
针对主动变化的区域选择性地使用 H.264 硬件编解码器
自版本 2204 起,Linux VDA 支持选择性地将 H.264 硬件编解码器用于主动变化的区域。此功能可将 CPU 视频压缩消耗转移到硬件上,并提高图像质量和每秒帧数 (FPS)。要启用此功能,请执行以下操作:
-
启用使用视频编解码器的硬件编码策略。
-
启用使用视频编解码器进行压缩策略,然后选择针对主动变化的区域。
在 Thinwire 中将 H.264 用于“无损构建”
默认情况下,现在对于移动图像,视觉质量策略设置的无损构建首选项为 H.264 而不是 JPEG。
H.264 编码可提供卓越的图像质量。使用视频编解码器进行压缩策略控制该首选项,默认设置为偏好时使用。要强制无损构建使用 JPEG,请将使用视频编解码器进行压缩策略设置为不使用视频编解码器。如果客户端不支持选择性 H.264,无论策略设置是什么,无损构建都将回退到 JPEG。
以下客户端支持选择性 H.264:
- Citrix Receiver for Windows 4.9 到 4.12
- Citrix Receiver for Linux 13.5 到 13.10
- 适用于 Windows 的 Citrix Workspace 应用程序 1808 及更高版本
- 适用于 Linux 的 Citrix Workspace 应用程序 1808 及更高版本
有关视觉质量和使用视频编解码器进行压缩策略设置的详细信息,请参阅视觉显示策略设置和图形策略设置。
支持 H.265 视频编解码器
从 7.18 版起,Linux VDA 支持使用 H.265 视频编解码器对远程图形和视频进行硬件加速。
可以将此功能用于:
- Citrix Receiver for Windows 4.10 到 4.12
- 适用于 Windows 的 Citrix Workspace 应用程序 1808 及更高版本
要从此功能受益,请在 Linux VDA 和客户端上启用此功能。如果客户端的 GPU 不支持使用 DXVA 接口进行 H.265 解码,“图形的 H.265 解码”策略设置将被忽略,会话将回退到使用 H.264 视频编解码器。有关详细信息,请参阅 H.265 视频编码。
要在 VDA 上启用 H.265 硬件编码,请执行以下操作:
- 启用使用视频编解码器的硬件编码策略。
- 启用针对 3D 图形工作负载优化策略。
- 确保使用视频编解码器进行压缩策略采用默设置,或设置为针对整个屏幕。
- 确保视觉质量策略未设置为无损构建或始终无损。
要在客户端上启用 H.265 硬件编码,请参阅 H.265 视频编码。
支持 YUV444 软件编码
Linux VDA 支持 YUV444 软件编码。YUV 编码方案会向每个像素分配亮度和颜色值。在 YUV 中,Y
表示亮度或或 luma
值,UV
表示颜色或 chroma 值。您可以在 Citrix Receiver for Windows 4.10 到 4.12 和适用于 Windows 的 Citrix Workspace 应用程序 1808 及更高版本上使用此功能。
每个唯一的 Y、U 或 V 值均包含 8 位数或一个字节。YUV444 数据格式以 24 位/像素的速度传输。YUV422 数据格式可在两个像素之间共享 U 和 V 值,从而导致平均传输速率为 16 位/像素。下表显示了 YUV444 和 YUV420 之间的直观比较。
YUV444 | YUV420 |
---|---|
要在 VDA 上启用 YUV444 软件编码,请执行以下操作:
- 确保将使用视频编解码器进行压缩策略设置为针对整个屏幕。
- 确保将视觉质量策略设置为始终无损或无损构建。
根据带宽估算值调整平均位速率
通过根据带宽估算值调整平均位速率,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-->
除了使用此功能之外,您还可以运行以下命令来调整清晰度和流畅度。AverageBitRatePercent 和 MaxBitRatePercent 参数将设置带宽使用情况的百分比。设置的值越高,图形就越清晰,但流畅度越低。建议的设置范围为 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。
图形质量滑块
我们在虚拟 Linux 会话中运行的图形状态指示器工具中包含了图形质量滑块。该滑块有助于在图像质量与交互性之间找到正确的平衡。
要使用滑块,请完成以下步骤:
-
在 Citrix Studio 中启用图形状态指示器策略。
-
打开终端并运行
ctxslider
命令。此时将显示滑块 UI。注意:
如果已将视觉质量策略设置为始终无损或无损构建,则不会显示滑块 UI。
现在可以提供以下选项:
- 要更改图像质量,请移动滑块。滑块支持的范围为 0–9。
- 要使用系统定义的设置,请选择让系统决定。
- 要切换到无损模式,请选择像素完美。
故障排除
检查正在使用哪种图形模式
运行以下命令来检查正在使用哪种图形模式(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
检查是否在为 3D Pro 使用硬件编码
运行以下命令(0 表示未使用。1 表示正在使用):
sudo /opt/Citrix/VDA/bin/ctxreg dump | grep HardwareEncoding
<!--NeedCopy-->
结果类似于:
create -k "HKLM\Software\Citrix\Ica\Session\1\Graphics" -t "REG_DWORD" -v "HardwareEncoding" -d "0x00000001" --force
另一个方法是使用 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-->
确认 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 的日志文件命名类似于 Xorg.{DISPLAY}.log,位于 /var/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-->
对于 8.1 之前的 Citrix Hypervisor:
xe vm-param-set uuid=<vm-uuid> platform:vgpu_extra_args="disable_vnc=1"
<!--NeedCopy-->
NVIDIA K2 显卡不支持在直通模式下进行 YUV444 硬件编码
通过策略设置启用了无损构建时,在使用 NVIDIA K2 显卡的情况下,用户启动应用程序/桌面会话时会出现黑屏或灰屏 。出现该问题是因为 NVIDIA K2 显卡不支持在直通模式下进行 YUV444 硬件编码。有关详细信息,请参阅视频编码和解码 GPU 支持列表。
登录时 Gnome 3 桌面显示很慢
这是 Gnome 3 桌面会话启动的限制。
在调整 Citrix Workspace 应用程序窗口大小时,有些 OpenGL/WebGL 应用程序无法很好地呈现
调整 Citrix Workspace 应用程序窗口大小会改变屏幕分辨率。NVIDIA 专用驱动程序会更改某些内部状态,并可能要求应用程序做出相应的响应。例如,WebGL 库元素 lightgl.js 可能会生成错误,指示 Rendering to this texture is not supported (incomplete frame buffer)
。