德克云技术联盟

标题: Horizon View虚拟机图形加速部署 [打印本页]

作者: 史东杰    时间: 2014-7-20 14:27
标题: Horizon View虚拟机图形加速部署
本帖最后由 史东杰 于 2014-7-20 14:30 编辑

[attach]322[/attach]

1. 简介
本文档旨在介绍现有的各种虚拟机图形加速技术,如何实施这些技术和进行故障排除,并提供了一些有关每种技术所具备的优势的信息。虽然本文档涵盖多个解决方案,包括vSGA与vDGA两种使用及配置技术。

1.1 什么是vSGA?
vSGA 指“Virtual Shared Graphics Acceleration”(虚拟共享图形加速)。vSGA 的功能是利用在 ESXi 主机中本机安装的物理 GPU(图形处理单元,也称为显卡)为众多虚拟桌面提供硬件加速 3D 图形。通过提供这种功能,可进一步扩展使用虚拟桌面能够提供的使用情形和目标用户。除了扩展目标使用情形外,还可以提供更生动鲜活的视觉体验,从而进一步增强用户体验。
[attach]323[/attach]

1.1.1 什么是vDGA?
vDGA 是 VMware View 提供的专有硬件图形加速功能,用于为需要独立 GPU 的使用情形提供高端工作站显卡。
使用 vDGA 时,利用 VMware DirectPathI/O 将安装在底层主机中的图形适配器分配给虚拟机。
将独立 GPU 分配给虚拟机会让整个 GPU 专供该虚拟机使用。
vDGA 的实施成本较高,但与单台高端工作站相比,能够降低成本。
每台主机的虚拟机数量受限于该服务器中 PCIe x16 插槽的数量。现在已有配备多达 4 个 PCIe x16 插槽的服务器硬件,并且机架中也有用于高端 GPU 的空间。有些刀片服务器机箱硬件供应商还提供能够支持多达 8 个 GPU 的“侧插”式扩展单元。
使用 vDGA 时,将使用来自 GPU 供应商的图形驱动程序,而不是由Vmtools提供的虚拟机 SVGA 3D 驱动程序。在远程处理协议和图形驱动程序之间使用一个接口来提供帧缓冲区访问。
1.1.2 什么是sVGA?
SVGA 是与 VMwareTools 一同安装在 Windows 7 虚拟桌面上的 VMware WDDM(Windows 显示驱动程序模型)驱动程序。不使用任何硬件显卡资源,它容易与 vSGA 混淆,因为二者的缩写字母和字母排列都非常接近。
1.2 SVGA、vDGA 与 vSGA 之间的区别
[attach]324[/attach]
2. 软硬件要求
2.1硬件要求
2.1.1 主机硬件要求
--物理主机尺寸
许多高端 GPU 卡为全高、全长和双倍宽度尺寸(占用主板上的两个插槽宽度,但仅使用一个 PCIe x16 插槽),因此需要确认主机内部是否拥有能够容纳所选显卡的足够空间,以及适当的 PCIe 插槽。

--PCIe x16
所有支持的 NVIDIA GPU 卡都需要 PCIe x16。

--主机电源
确认 GPU 的电源要求,以确保电源拥有能为GPU 供电的足够功率和适当的电源线。
例如,一个 NVIDIA Quadro 6000 GPU 的功率可达 204 瓦,需要一根 8 针 PCIe 电源线或两根 6 针 PCIe 电源线。VGX 卡(K1、K2)的其中一个主要优点是功耗要求较低。VGX K1 的运行功率约为 130 瓦,这要比当前的 Quadro 系列卡的功率低得多。它的缺点是,VGX K1 和 K2 卡采用被动式散热,依靠内部机箱风扇散热。这为服务器制造商带来了挑战。如果您打算在服务器内使用 VGX 卡,则必须确保对显卡进行充分的散热,否则显卡会由于过热而发生故障。

注:由于底层需要安装vSphere ESXi,因此在保证以上三点硬件需求外,请参考VMware 硬 件兼容列表:http://www.vmware.com/resources/compatibility/search.php
经过VMware测试验证过的服务器型号请参考本文档附表1。

--关于显卡数量需求
如果主机没有板载显示适配器,我们建议安装一个额外的低端显示适配器,并将低端显卡插到主插槽位作为主显示适配器。
这样做是因为 ESX 控制台显示适配器不适用于 xorg。
如果将高端 NVIDIA 卡设置为主适配器,则 xorg 将无法使用 GPU 进行负载分流。
如果您有两块或以上显卡,请忽略下列两个命令。
如果您只有一个高端显卡,您可以通过Putty或类似工具访问 ESX 控制台,并按照下列步骤执行以下命令:
找到图形设备的 PCI ID:
# lspci | grep -i display
您将看到与下面相似的内容:
000:128:00.0 Display controller:nVidia Corporation GT200b [GeForce GTX 275]
然后我们需要引用上面的 PCI ID重置所有权标记:
# vmkchdev -v 0:128:0:0
注:这不是永久性的,因此您必须在每次 ESXi 重新启动时执行此操作。


2.2 软件要求
2.2.1 虚拟化管理程序
包含最新补丁程序的 ESXi 5.1 或更高版本。

2.2.2 VMware View
VMware View 5.2 或更高版本。

2.2.3 显示协议
vSGA 和 vDGA 都只支持 PCoIP,最多支持 2 台显示器。

2.2.4 NVIDIA 驱动程序
ESXi VIB 由图形适配器制造商编写、维护和提供支持
下载地址:http://www.nvidia.com/Download/index.aspx?lang=en-us

2.2.5 操作系统
虚拟机必须运行 Windows 7(32 或 64 位)或更高版本

3. 应用要求
如果某个应用的运行效果不佳,请向软件供应商确认该应用的系统要求。

3.1vSGA情景下
--DirectX 9.0c
vSGA 目前最高只支持 DirectX 9.0c。使用 vSGA 时,需要更新版 DirectX 的应用可能无法正常运行。

--OpenGL 2.1
vSGA 目前最高只支持 OpenGL 2.1。使用 vSGA 时,需要更新版 OpenGL 的应用可能无法正常运行。


3.2 vDGA情景下
vDGA 将支持 GPU 制造商的图形驱动程序所支持的 DirectX 和 OpenGL 版本。它们通常是这些技术的最新版本。
注:经过测试的软件兼容列表请参考本文档附表2


4. 安装配置vSGA
4.1 使用vSGA模式,必须将NVIDIA驱动程序安装在ESXi主机中
--下载NVIDIA驱动程序:
http://www.nvidia.com/Download/index.aspx?lang=en-us
--将捆绑包 (.zip) 上载到主机上的数据存储。
  - 通过使用 vSphere Client 浏览数据存储来上载捆绑包
  - 使用 SecureCRT 执行“rz”命令或SCP 工具(例如 FastSCP 或 WinSCP)将捆绑包上载到主机数据存储(参考步骤3打开SSH服务)

--开启SSH服务
点选主机,“配置”-“安全配置文件”-“属性”-启动SSH服务。


--将主机置于维护模式
[attach]325[/attach]


--通过SSH连接主机并执行安装命令
# esxcli software vib install –-no-sig-check –d /vmfs/volumes/509aa90d-69ee45eb-c96b-4567b3d/NVIDIA-VMware-x86_64-304.59-bundle.zip

--校验安装过程,安装成功后会显示以下格式
Installation Result
Message:Operation finished successfully.
Reboot Required:false
VIBs Installed:<VIB NAME HERE>
VIBs Removed:
VIBs Skipped:

--重启主机

--校验Xorg服务是否正常运行,如Xorg服务没有启动,请参考下一步进行排错,否则请直接略过
  - 可以执行以下命令校验Xorg服务是否正在运行
    # /etc/init.d/xorg status
  - 通过vSphere Client端,查看“配置”-“安全配置文件”-“Xorg”。

--Xorg服务启动失败排错流程
  - 确认是否已安装 NVIDIA VIB 捆绑包
    # esxcli software vib list | grep NVIDIA
    如果已正确安装 VIB,则输出结果应当与下面的示例相似:
    NVIDIA-VMware 304.59-1-OEM.510.0.0.799733 NVIDIA VMwareAccepted 2012-11-14
  - 确认 NVIDIA 驱动程序是否已加载
    # esxcli system module load –m nvidia
    如果驱动程序已正确加载,则输出结果应当与下面的示例相似:
    Unable to load module /usr/lib/vmware/vmkmod/nvidia:Busy
    如果 Nvidia 驱动程序没有加载,请检查 vmkernel.log:
    # vi /var/log/vmkernal.log
    搜索“NVRM”。
   一般来说,如果 GPU 有问题,vmkernal.log 中会指出
  - 确认主机中是否存在显示设备
    # esxcli hardware pci list –c 0x0300 –m 0xff
    输出结果应当与下面的示例相似:
    000:001:00.0
    Address:000:001:00.0
    Segment:0x0000
    Bus:0x01
    Slot:0x00
    Function:0x00
    VMkernel Name:
    Vendor Name:NVIDIA Corporation
    Device Name:NVIDIAQuadro 6000
    Configured Owner:Unknown
    Current Owner:VMkernel
    Vendor ID:0x10de
    Device ID:0x0df8
    SubVendor ID:0x103c
    SubDevice ID:0x0835
    Device Class:0x0300
    Device Class Name:VGA compatible controller
    Programming Interface:0x00
    Revision ID:0xa1
    Interrupt Line:0x0b
    IRQ:11
    Interrupt Vector:0x78
    PCI Pin:0x69
    Spawned Bus:0x00
    Flags:0x0201
    Module ID:71
    Module Name:nvidia
    Chassis:0
    Physical Slot:1
    Slot Description:
    Passthru Capable:true
    Parent Device: PCI 0:0:1:0
    Dependent Device: PCI 0:0:1:0
    Reset Method:Bridge reset
    FPT Sharable:true

--可能会发生的 PCI 总线插槽顺序问题
    如果您需要在服务器中安装另一个低端 GPU,则 PCIe 插槽中的显卡的顺序可能会导致为 ESXi 控制台会话选择高端显卡。
    如果发生这种情况,您只需交换两个 GPU 使用的 PCIe 插槽,或者在服务器 BIOS 中更改“Primary GPU”(主要 GPU)设置即可解决问题。

--检查 Xorg 日志
    如果存在正确设备,则查看 xorg 日志文件可能会有帮助,可以看到是否存在任何明显问题。
    # vi /var/log/Xorg.log

--sched.mem.min 错误
    如果您收到关于 sched.mem.min 的 vSphere 错误,请在虚拟机的 .vmx 文件 中添加以下参数。
    sched.mem.min = “4098” 。“4098”需要与配置的虚拟机内存量一致。
    上例适用于具有 4 GB RAM 的虚拟机
4.2 配置VMware View桌面池
--在 View Manager 中,导航到您要对其启用 3D 渲染的 View 池,然后单击“Edit” (编辑)
[attach]326[/attach]


--转到“池设置”选项卡
[attach]327[/attach]


--将默认显示协议选择为“PCoIP”
[attach]328[/attach]


--从“3D呈现器”下拉列表中选择“硬件”,“允许用户选择协议”选择为否
[attach]329[/attach]


--单击“3D呈现器”-“配置”设置虚拟机显卡容量大小,最大支持512MB
[attach]330[/attach]


--将通过vSphere Client 将虚拟桌面关闭再启动使3D呈现功能生效

4.3 vSGA模式下的优化方案
4.3.1 启用相对鼠标
要手动启用相对鼠标,请右键单击屏幕顶部的 View Client 阴影,然后选择“Relative Mouse”(相对鼠标)。
您应该就会看到“Relative Mouse”(相对鼠标)旁边的小对号 (✔)。
目前为止,对于每一次连接,都必须选择一次“Relative Mouse”

4.3.2 提升视频播放效果
对于使用 VMXnet3 网卡的桌面虚拟机,只需将下面的注册表设置更改为 Microsoft 建议的值,即可大幅提升 View 桌面的峰值视频播放性能:
HKLM\System\CurrentControlSet\Services\Afd\ParametersFastSendDatagramThreshold
请将此注册表设置更改为:1500
注意: 更改此注册表设置后,需要重新启动桌面虚拟机。如果此设置不存在,请将其创建为 DWORD 值。
有关此更改的原理的进一步信息,可在以下网址找到:http://blogs.vmware.com/performa ... eo-performance.html

4.4 vSGA模式下的资源监控
4.4.1 gpuvm
要更好地管理 ESXi 主机上的可用 GPU 资源,可以检查当前 GPU 资源的分配情况。
ESXi 命令行查询实用程序 gpuvm 可列出 ESXi 主机上安装的 GPU,并显示为主机上的每个虚拟机分配的 GPU 内存量。
要运行该实用程序,请从主机上的控制台或通过 SSH 连接运行下面的命令:
# gpuvm
例如,该实用程序可能会显示如下输出结果:
# gpuvm
Xserver unix:0, GPU maximum memory 2076672KB
pid 118561, VM “Test-VM-001”, reserved 131072KB of GPU memory
pid 664081, VM “Test-VM-002”, reserved 261120KB of GPU memory
GPU memory left 1684480KB

4.4.2 nvidia-smi
要运行该实用程序,请从主机上的控制台或通过 SSH 连接运行下面的命令:
# nvidia-smi

5. 安装配置vDGA
本章将指导您在主机和虚拟机级别中启用 GPU 直通,并使虚拟机能够分流 3D 渲染负载

5.1 为主机启动GPU直通
--在主机BIOS中启用 VT-d 或 AMD IOMMU,可以通过以下命令来验证
    # esxcfg-module –l | grep [module_name] Intel Module Name为 vtddmar,AMD Module Name 为 AMDiommu

--使用 vSphere Client 连接到 vCenter,并选择安装了 GPU 卡的主机

--点选“主机”-“配置”-“高级设置”-“配置直通”-勾选设备-点击确定。
[attach]331[/attach]


--如果在“高级设置”中出现橙色符号,您可能需要将该主机重新启动

5.2 为虚拟机启用GPU直通
--更新虚拟机硬件版本至9及以上版本,选中虚拟机-“右键”-“升级虚拟硬件”
[attach]332[/attach]


--预留所有已为虚拟机配置的内存。
    要让 vDGA 正常工作,必须预留为虚拟机配置的所有内存。
    如果虚拟机分配了 2 GB 内存,则需要将 2 GB 内存全部预留。
    要实现此目的,请在虚拟机设置窗口的“资源”选项卡的“内存”选项中选择“预留所有客户机内存“选项。
[attach]333[/attach]


--调整 pciHole.start
  - 对于配置超过 2 GB 内存的虚拟机,在虚拟机的 .vmx 文件中添加以下参数(可以添加到文件末尾):
    pciHole.start = “2048”

--添加 PCI 设备

[attach]334[/attach]
--安装NVIDIA驱动
安装完驱动程序后,重新启动虚拟机
  - 将最新的 NVIDIA Desktop 驱动程序下载并安装到虚拟机上。所有 NVIDIA 驱动程序均可从以下位置下载:            http://www.nvidia.com/Download/index.aspx?lang=en-us

--安装 View Agent
  - 正确安装 NVIDIA 驱动程序后,在虚拟机上安装 VMware View Agent。
  - 按照要求重新启动

--启用专用 NVIDIA 捕获 API
虚拟机重新启动后,通过运行以下命令启用专用 NVIDIA 捕获 API
  - "C:\Program Files\Common Files\VMware\Teradici PCoIP Server\MontereyEnable.exe” -enable
如果未找到 MontereyEnable.exe,则使用 NvFBCEnable.exe。在新 SDK 中,MontereyEnable 已被 NvFBCEnable 取代。

--连接虚拟桌面
  - 终端需要在全屏状态下通过PCoIP进行连接

--验证是否使用NVIDIA显卡
[attach]335[/attach]



--进行DirectX工具诊断
[attach]336[/attach]



6. 已知的vDGA 限制
--根据客户端自动调整分辨率不支持特殊分辨率大小
--在窗口模式下运行的 View Client 不会自动调整到特殊的分辨率大小
--在某些情况下,可能需要在 NVIDIA 控制面板配置中添加特定分辨率
--需要超过 4 GB RAM 并启用直通的 64 位 Windows 7 虚拟机需要设置虚拟机 PCI I/O 孔
--PCoIP 编码帧率计数器会报告固定不变的闲时 FPS
--vDGA 不支持 vMotion。
--目前为止,对于vDGA支持NVIDIA显卡
--由于 vDGA 配置的性质,它不适合使用 Composer 进行的自动部署

7. 附录一,受支持的显卡列表
卡名称 是否支持 vSGA? 是否支持 vDGA?
NVIDIA Quadro 2000
NVIDIA Quadro 4000
NVIDIA Quadro 5000
NVIDIA Quadro 6000
NVIDIA Quadro FX 2800
NVIDIA Quadro 1000M
NVIDIA Quadro 3000M
NVIDIA Tesla M2070-Q
VGX K1 (Kepler)
VGX K2 (Kepler)


8. 附录二,已测试过兼容的服务器列表(在使用VGX K1&VGX K2被动散热显卡时,请确保提供足够的散热能力)
IBM                      DX360 M4
X3650 M4
Flxesystem
HP Z800
Z820
ML380
WS460(含图形扩展组件)
Dell R510
R720
Cisco C240 M3


9. 附录三,已测试过的软件兼容列表

任务型工作者 知识型工作者 重度任务工作者 3D/CAD类型工作者 高端设计工作者 视频编辑与设计
典型应用 纯粹的办公室使用情景一般性应用使用   使用两个以上监视器与矢量应用,Aero效果 浏览CAD动画,
偶尔进行一般性偶尔编辑
CAD动画创建,
旋转浏览与高级渲染
视频创建,
快速浏览与高级渲染
典型应用 Office Photoshop、Visio AutoCAD Enovia、3D Max Premiere
sVGA 优秀 一般 勉强运行 无法正常运行 无法正常运行 无法正常运行
vSGA 优秀 优秀 优秀 优秀 无法正常运行 无法正常运行
vDGA 优秀 优秀 优秀 优秀 优秀 优秀







欢迎光临 德克云技术联盟 (http://www.decoclouds.com/)