一、Nvidia vGPU许可模式注意事项
Nvidia vGPU分为以下类型:
-
vWS:适用于专业级图形应用程序,内置Nvidia Quadro驱动。
-
vPC:适用于拥有标准PC应用程序、浏览器和多媒体的虚拟桌面。
-
vAPP:与Citrix Virtual App(XenApp)或其他RDSH解决方案配合使用。
-
vCS:适用于计算密集型服务器工作负载,如AI、深度学习和数据科学
以往项目中涉及到3D场景,我们通常使用vWS许可,以满足用户对于GPU处理需求;但该许可成本较高。
最近在一些项目中发现部分简单的3D场景,对显存要求不高(2G以内),vPC许可也能满足小图纸的使用需求。但在测试过程中用户发现帧率仅能达到45帧,从Nvidia官方文档也能看到45帧限制说明:
https://docs.nvidia.com/grid/latest/pdf/grid-vgpu-user-guide.pdf
通过以下方式可以修改45帧率限制:
方法一:修改vGPU参数限制
•xe vm-list name-lable=VM名称
•xe vgpu-list vm-uuid=VM UUID
•xevgpu-param-set uuid=(vgpu uuid) extra_args=frame_rate_limiter=0
方法二:修改Nvidia调度模式
在Citrix Hypervisor上可更改Nvidia配置文件(/etc/modprobe.d/nvidia.conf)以更改调度模式
调度模式说明:
•Best Effort(默认):为了多个VM的性能保证所以有了FPS限制
•Equal:模式是4个VM算力均分,关闭一个VM后,3个VM算力均分
•Fixed:固定模式主要是公有云厂商会用,就是这个卡切分1/4就只有1/4的算力,其它会被空的时间片占用
可将Best Effort调度模式修改为Equal或Fixed以修改帧率限制。
修改后效果如下:
-
修改前最高45帧
-
修改后可完整利用到GPU的性能(如:2498帧),ICA传输显示60帧
-
最后附上不同许可的功能说明,请在使用vPC许可时确认是否满足需求:
二、Windows Server Terminal Service帧率限制
当在3D场景中我们使用Windows Server交付以满足多用户访问设计软件时,Terminal Service会将帧率限制到30帧
(Frame rate is limited to 30 FPS in Windows 8 and Windows Server 2012 remote sessions
https://docs.microsoft.com/en-us/troubleshoot/windows-server/remote/frame-rate-limited-to-30-fps)
修改方法如下
适用以下操作系统:
•Windows Server 2012
•Windows Server 2016
•Windows Server 2019
-
三、Citrix多会话操作系统启用GPU加速
Windows Sever 默认是不启用GPU硬件加速,需要到组策略中进行修改:
本地计算机策略>计算机配置 > 管理模板 > Windows 组件 > 远程桌面服务 > 远程桌面会话主机 > 远程会话环境中的对所有远程桌面服务会话使用硬件默认图形适配器设置。
另外,Citrix也会默认禁用CUDA和OpenCL GPU加速功能,通过添加以下注册表键值进行启用:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\CtxHook\AppInit_Dlls\Multiple Monitor Hook]
"EnableWPFHook"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\CtxHook\AppInit_Dlls\Multiple Monitor Hook]
"EnableWPFHook"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\CtxHook\AppInit_Dlls\Graphics Helper]
"CUDA"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\CtxHook\AppInit_Dlls\Graphics Helper]
"CUDA"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\CtxHook\AppInit_Dlls\Graphics Helper]
"OpenCL"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\CtxHook\AppInit_Dlls\Graphics Helper]
"OpenCL"=dword:00000001