安装和配置 NVIDIA vGPU Manager VIB
本节介绍如何安装和配置 NVIDIA vGPU Manager
准备用于安装的 VIB 文件
使用 WinSCP 上传 VIB
使用 VIB 安装 vGPU Manager
更新 VIB
验证 VIB 的安装
卸载 VIB
在 VMWare vSphere 6.5 及更高版本中更改默认图形类型
更改 vGPU 调度策略
禁用和启用 ECC 内存
在开始之前,请从 NVIDIA 企业应用程序中心 登录页面下载包含 VIB 文件的存档,并将存档内容解压到文件夹中。文件以 .VIB 结尾,是您必须上传到主机数据存储以进行安装的文件。
出于演示目的,这些步骤使用 WinSCP 将 .VIB 文件上传到 ESXi 主机。可以在此处下载 WinSCP。
使用 WinSCP 上传 .VIB 文件
WinSCP 是一种基于 SSH(安全外壳)的安全复制 (SCP) 协议,可在网络上的主机之间进行文件传输——使用 WinSCP 上传 .VIB 文件是将文件从源位置传输到目标位置(ESXi 数据存储)的最快方法。有关详细信息,请参阅 WinSCP 文档页面。
要使用 WinSCP 将 .VIB 文件上传到 ESXi 数据存储。启动 WinSCP。
WinSCP 打开 登录 窗口。在登录窗口中
从 文件协议 下拉菜单中选择 SCP 作为文件传输协议。
在 主机名 字段中输入您的 ESXi 主机名。
在 用户名 字段中输入主机用户名。
在 密码 字段中输入主机密码。
注意您可能想要将会话详细信息保存到站点,这样您就不必在每次想要连接时都输入它们——按“保存”按钮并键入站点名称。
选择 登录 按钮以使用您提供的凭据连接到 ESXi 主机。
对 主机证书 警告选择 是。
连接到 ESXi 主机后,您将在远程文件面板上看到默认远程目录的内容(通常,这是 ESXi 主机用户的家目录)。
将 .VIB 文件从源位置上传到目标位置(ESXi 主机上的数据存储)。
在左侧面板(源目录)中,导航到 .VIB 文件的位置。选择 .VIB 文件。
在右侧面板中,导航到 ESXi 主机上 DataStore 内的目标位置。
选择左侧面板上方的“上传”按钮以启动 .VIB 文件下载。
.VIB 文件已上传到 ESXi 主机上的数据存储。
NVIDIA Virtual GPU Manager 在 ESXi 主机上运行。它以以下格式提供
作为 VIB 文件,必须将其复制到 ESXi 主机,然后安装
作为脱机捆绑包,您可以手动导入,如 VMware vSphere 文档中的手动导入补丁中所述。
在 vGPU 11 版本之前,NVIDIA Virtual GPU Manager 和 Guest VM 驱动程序必须与同一主驱动程序分支匹配。如果您将 vGPU Manager 更新到另一个驱动程序分支的版本,则 Guest VM 将在禁用 vGPU 的情况下启动,直到其 Guest vGPU 驱动程序更新为与 vGPU Manager 版本匹配。有关更多详细信息,请参阅 Virtual GPU Software 的 VMware vSphere 版本说明。
要安装 vGPU Manager .VIB,您需要通过 ESXi Shell 或 SSH 访问 ESXi 主机。有关如何为 ESXi 主机启用 ESXi Shell 或 SSH,请参阅 VMware 文档。
在继续 vGPU Manager 安装之前,请确保所有 VM 都已关闭电源,并且 ESXi 主机处于维护模式。有关如何将 ESXi 主机置于维护模式,请参阅 VMware 文档。
通过右键单击主机,然后选择 进入维护模式,将主机置于维护模式。
注意或者,您可以使用命令提示符通过输入以下命令将主机置于维护模式
$ esxcli system maintenanceMode set --enable=true
此命令不会返回响应。使用命令提示符进行此更改不会刷新 vSphere Web Client UI。单击 vSphere Web Client 窗口右上角的“刷新”图标。
重要提示将主机置于维护模式会禁用在此主机上运行的任何 vCenter 设备,直到您退出维护模式,然后重新启动该 vCenter 设备。
单击 确定 以确认您的选择。这会将 ESXi 主机置于维护模式。
输入
esxcli
命令以安装 vGPU Manager 软件包[root@esxi:~] esxcli software vib install -v directory/NVD_bootbank_NVD-VMware_ESXi_8.0.0_Driver_550.54.10-1OEM.800.1.0.20613240.vib Installation Result Message: Operation finished successfully. VIBs Installed: NVD_bootbank_NVD-VMware_ESXi_8.0.0_Driver_550.54.10-1OEM.800.1.0.20613240 VIBs Removed: VIBs Skipped: Reboot Required: false DPU Results:
注意该目录是包含 VIB 文件的目录的绝对路径。即使 VIB 文件位于当前工作目录中,也必须指定绝对路径。
重新启动 ESXi 主机并将其从维护模式中移除。
注意尽管显示状态为 “需要重新启动:false”,但仍需要重新启动才能加载 vib 并启动 Xorg。
从 vSphere Web Client 中,通过右键单击主机并选择 退出维护模式 来退出维护模式。
注意或者,您可以通过命令提示符输入以下命令从维护模式退出
$ esxcli system maintenanceMode set --enable=false
此命令不会返回响应。通过命令提示符进行此更改不会刷新 vSphere Web Client UI。单击 vSphere Web Client 窗口右上角的“刷新”图标。
从 vSphere Web Client 中,通过右键单击主机并选择 重新启动 来重新启动主机。
注意您可以通过在命令提示符下输入以下命令来重新启动主机
$ reboot
此命令不会返回响应——“重新启动主机”窗口显示。
从 vSphere Web Client 重新启动时,在 为此重新启动操作记录原因 字段中输入重新启动的描述性原因,然后单击 确定 以继续。
如果要在一个已安装现有版本的系统上安装新版本的 NVIDIA Virtual GPU Manager,请更新 vGPU Manager VIB 软件包。
要更新 vGPU Manager VIB,您需要通过 ESXi Shell 或 SSH 访问 ESXi 主机。有关为 ESXi 主机启用 ESXi Shell 或 SSH,请参阅 VMware 文档
本文档中看到的驱动程序版本仅用于演示目的。您的本地环境中会存在相似之处,但会有细微差异。
在继续 vGPU Manager 更新之前,请确保所有 VM 都已关闭电源,并且 ESXi 主机已置于维护模式。有关将 ESXi 主机置于维护模式,请参阅 VMware 文档。
使用
esxcli
命令更新 vGPU Manager 软件包[root@esxi:~] esxcli software vib update -v directory/NVD_bootbank_NVD-VMware_ESXi_8.0.0_Driver_550.54.10-1OEM.800.1.0.20613240.vib Installation Result Message: Operation finished successfully. Reboot Required: false VIBs Installed: NVD_bootbank_NVD-VMware_ESXi_8.0.0_Driver_550.54.10-1OEM.800.1.0.20613240 VIBs Removed: NVD_bootbank_NVD-VMware_ESXi_8.0.0_Driver_550.54.10-1OEM.800.1.0.20613240 VIBs Skipped:
注意directory 是包含 VIB 文件的目录的路径。
重新启动 ESXi 主机并将其从维护模式中移除。
ESXi 主机重新启动后,验证 NVIDIA vGPU 软件包的安装。
通过检查内核加载模块列表中是否有 NVIDIA 内核驱动程序,验证 NVIDIA vGPU 软件包是否已安装并正确加载。
[root@esxi:~] vmkload_mod -l | grep nvidia nvidia 88 36892
如果 NVIDIA 驱动程序未在输出中列出,请检查 dmesg 中是否有驱动程序报告的任何加载时错误。
通过运行 nvidia-smi 命令,验证 NVIDIA 内核驱动程序是否可以与系统中的 NVIDIA 物理 GPU 成功通信。
nvidia-smi
命令在 NVIDIA 系统管理界面 nvidia-smi 中有更详细的描述。
运行
nvidia-smi
命令应生成平台中 GPU 的列表。[root@esxi:~] nvidia-smi Tue Apr 2 19:21:32 2024 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 550.54.16 Driver Version: 550.54.16 CUDA Version: N/A | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA A40 On | 00000000:17:00.0 Off | 0 | | 0% 39C P8 35W / 300W | 0MiB / 49140MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ | 1 NVIDIA A40 On | 00000000:CA:00.0 Off | 0 | | 0% 41C P8 35W / 300W | 0MiB / 49140MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
如果 nvidia-smi
未能报告系统中所有 NVIDIA GPU 的预期输出,请参阅 NVIDIA AI Enterprise 用户指南 了解故障排除步骤。
NVIDIA 系统管理界面 nvidia-smi 还允许使用以下命令进行 GPU 监控
$ nvidia-smi -l
此命令开关添加了一个循环,自动刷新显示。默认刷新间隔为 1 秒。
运行
esxcli
以确定 vGPU 驱动程序捆绑包的名称。$ esxcli software vib list | grep -i nvidia NVD-VMware_ESXi_8.0.0_Driver 550.54.16-1OEM.800.1.0.20613240
运行以下命令以卸载驱动程序软件包。
$ esxcli software vib remove -n NVIDIA-VMware_ESXi_8.0_Host_Driver --maintenance-mode
如果卸载过程成功,则显示以下消息。
Removal Result Message: Operation finished successfully. Reboot Required: false VIBs Installed: VIBs Removed: NVD_bootbank_NVD-VMware_ESXi_8.0.0_Driver_550.54.10-1OEM.800.1.0.20613240 VIBs Skipped:
重新启动主机以完成 vGPU Manager 的卸载。
适用于 VMware vSphere 6.5 及更高版本的 vGPU Manager VIB 在单个 VIB 中提供 vSGA 和 vGPU 功能。安装 VIB 后,默认图形类型为“共享”,这提供 vSGA 功能。要在 VMware vSphere 6.5 中为 VM 启用 vGPU 支持,您必须将默认图形类型更改为“共享直通”。如果您不修改默认图形类型,则分配了 vGPU 的 VM 将无法启动,并且会显示以下错误消息

如果您使用的 VMware vSphere 版本早于 6.5,或者正在配置 VM 以使用 vSGA,请忽略此任务。
在配置 vGPU 之前更改默认图形类型。对于运行 vGPU 的 VM,VMware vSphere Web Client 中 VM 控制台的输出不可用。在更改默认图形类型之前,请确保 ESXi 主机正在运行,并且主机上的所有 VM 都已关闭电源。
使用 vSphere Web Client 登录到 vCenter Server。
在导航树中,选择您的 ESXi 主机,然后单击 配置 选项卡。
从菜单中,选择 图形,然后单击 主机图形 选项卡。
在 主机图形 选项卡上,单击 编辑。
在打开的 编辑主机图形设置 窗口中,选择 共享直通,然后单击 确定。
注意此对话框还允许您更改启用 vGPU 的 VM 的分配方案。有关更多信息,请参阅 在 VMware vSphere 上修改 GPU 分配策略。
单击“确定”后,默认图形类型将更改为“共享直通”。
重新启动 ESXi 主机,或停止并重新启动 ESXi 主机上的 Xorg 服务和 nv-hostengine
要停止并重新启动 Xorg 服务和 nv-hostengine,请执行以下步骤
停止 Xorg 服务。
[root@esxi:~] /etc/init.d/xorg stop
停止 nv-hostengine。
[root@esxi:~] nv-hostengine -t
等待 1 秒钟,以允许 nv-hostengine 停止。
启动 nv-hostengine。
[root@esxi:~] nv-hostengine -d
启动 Xorg 服务
[root@esxi:~] /etc/init.d/xorg star
更改默认图形类型后,根据需要在 配置具有虚拟 GPU 的 vSphere VM 中配置 vGPU。
另请参阅 VMware vSphere 文档中的以下主题
以 NVIDIA Maxwell™ 图形架构开头的 GPU 实现了一种尽力而为的 vGPU 调度程序,旨在平衡 vGPU 之间的性能。尽力而为调度程序允许 vGPU 使用其他 vGPU 未使用的 GPU 处理周期。在某些情况下,运行图形密集型应用程序的 VM 可能会对其他 VM 中图形轻负载应用程序的性能产生不利影响。
以 NVIDIA Pascal™ 架构开头的 GPU 也支持均等共享和固定共享 vGPU 调度程序。这些调度程序限制 vGPU 使用的 GPU 处理周期,这可以防止在一个 VM 中运行的图形密集型应用程序影响在其他 VM 中运行的图形轻负载应用程序的性能。尽力而为调度程序是所有受支持 GPU 架构的默认调度程序。
vGPU 调度策略
在本节中,定义了三种 NVIDIA vGPU 调度策略。vGPU 调度策略旨在通过平衡 GPU 可用和不可用期间的进程来充分利用 GPU。三种 vGPU 调度策略的总体意图是保持 GPU 高效、快速和公平。
尽力而为调度 以更大的规模提供一致的性能,并降低每个用户的 TCO。尽力而为调度程序利用轮循调度算法,该算法根据实际需求共享 GPU 资源,从而优化资源利用率。这带来了具有优化用户密度的稳定性能。尽力而为调度策略在空闲和未充分利用的时间内最佳地利用 GPU,从而实现优化的密度和良好的 QoS。
固定共享调度 始终保证相同的专用服务质量。固定共享调度策略保证共享同一物理 GPU 的所有 vGPU 具有相同的 GPU 性能。专用服务质量简化了 POC。它还使用常见的基准测试来衡量物理工作站性能,例如 SPECviewperf,以将性能与当前的物理或虚拟工作站进行比较。
均等共享调度 为每个运行的 VM 提供相等的 GPU 资源。随着 vGPU 的添加或删除,分配的 GPU 处理周期的份额会相应地变化,从而导致在利用率较低时性能提高,而在利用率较高时性能降低。
组织通常利用尽力而为 GPU 调度程序策略进行部署,以实现更好的 GPU 利用率,这通常会导致每个服务器支持更多用户,但服务质量 (QoS) 较低,并且每个用户的 TCO 更好。有关 GPU 调度的更多信息,请参见此处。
RmPVMRL 注册表项
RmPVMRL
注册表项设置 NVIDIA vGPU 的调度策略。
您只能在基于 Pascal、Volta、Turing 和 Ampere 架构的 GPU 上更改 vGPU 调度策略。
值 |
含义 |
---|---|
0x00(默认) |
尽力而为调度程序 |
0x01 |
具有默认时间片长度的均等共享调度程序 |
0x00TT0001 |
具有用户定义时间片长度 TT 的均等共享调度程序 |
0x11 |
具有默认时间片长度的固定共享调度程序 |
0x00TT0011 |
具有用户定义时间片长度 TT 的固定共享调度程序 |
示例 默认时间片长度取决于 vGPU 类型允许的每个物理 GPU 的最大 vGPU 数量。
最大 vGPU 数量 |
默认时间片长度 |
---|---|
小于或等于 8 | 2 毫秒 |
大于 8 | 1 毫秒 |
TT
范围为 01 到 1E 的两位十六进制数字,用于设置均等共享和固定共享调度程序的时间片长度(以毫秒 (ms) 为单位)。最小长度为 1 毫秒,最大长度为 30 毫秒。
如果
TT
为 00,则长度设置为 vGPU 类型的默认长度。如果
TT
大于 1E,则长度设置为 30 毫秒。
示例
此示例将 vGPU 调度程序设置为具有默认时间片长度的均等共享调度程序。
RmPVMRL=0x01
此示例将 vGPU 调度程序设置为时间片长度为 3 毫秒的均等共享调度程序。
RmPVMRL=0x00030001
此示例将 vGPU 调度程序设置为具有默认时间片长度的固定共享调度程序。
RmPVMRL=0x11
此示例将 vGPU 调度程序设置为时间片长度为 24 (0x18) 毫秒的固定共享调度程序。
RmPVMRL=0x00180011
更改所有 GPU 的 vGPU 调度策略
在您的虚拟机监控程序命令 Shell 中执行此任务。
以虚拟机监控程序主机上的 root 用户身份打开命令 Shell。您可以对所有受支持的虚拟机监控程序使用安全 Shell (SSH) 来实现此目的。
将
RmPVMRL
注册表项设置为设置您想要的 GPU 调度策略的值。使用
esxcli
命令esxcli system module parameters set -m nvidia -p "NVreg_RegistryDwords=RmPVMRL=value"
其中 <value>
是设置您想要的 vGPU 调度策略的值,例如
0x00
- (默认)- 尽力而为调度程序0x01
- 具有默认时间片长度的均等共享调度程序0x00030001
- 时间片为 3 毫秒的均等共享调度程序0x11
- 具有默认时间片长度的固定共享调度程序0x00180011
- 时间片为 24 毫秒 (0x18) 的固定共享调度程序
回顾:默认时间片长度取决于 vGPU 类型允许的每个物理 GPU 的最大 vGPU 数量
最大 vGPU 数量 |
默认时间片长度 |
---|---|
小于或等于 8 | 2 毫秒 |
大于 8 | 1 毫秒 |
确认调度行为已更改,如 获取所有 GPU 的当前时间片 vGPU 调度行为 中所述。
更改选定 GPU 的 vGPU 调度策略
在您的虚拟机监控程序命令 Shell 中执行此任务
以虚拟机监控程序主机上的 root 用户身份打开命令 Shell。在所有受支持的虚拟机监控程序上,您都可以使用安全 Shell (SSH) 来实现此目的。
使用
lspci
命令获取您要更改调度行为的每个 GPU 的 PCI 域和总线/设备/功能 (BDF)。将
lspci
的输出通过管道传输到grep
命令,以仅显示 NVIDIA GPU 的信息。# lspci | grep NVIDIA
此示例中列出的 NVIDIA GPU 的 PCI 域为
0000
,BDF 为3f:00.0.
。在 VMware vSphere 上,使用
esxcli
set 命令。# esxcli system module parameters set -m nvidia \ -p "NVreg_RegistryDwordsPerDevice=pci=pci-domain:pci-bdf;RmPVMRL=value\ [;pci=pci-domain:pci-bdf;RmPVMRL=value...]"
对于每个 GPU,提供以下信息
pci-domain - GPU 的 PCI 域。
pci-bdf - GPU 的 PCI 设备 BDF。
value - 设置 GPU 调度策略和您想要的时间片长度的值。例如
0x00
- (默认)- 尽力而为调度程序0x01
- 具有默认时间片长度的均等共享调度程序0x00030001
- 时间片为 3 毫秒的均等共享调度程序0x11
- 具有默认时间片长度的固定共享调度程序0x00180011
- 时间片为 24 毫秒 (0x18) 的固定共享调度程序对于所有支持的值,请参阅 RmPVMRL 注册表项。
此示例向
/etc/modprobe.d/nvidia.conf
文件添加一个条目,以更改两个 GPU 的调度行为,如下所示对于 PCI 域
0000
和 BDF85:00.0
的 GPU,vGPU 调度策略设置为均等共享调度程序。对于 PCI 域
0000
和 BDF86:00.0
的 GPU,vGPU 调度策略设置为固定共享调度程序。
options nvidia NVreg_RegistryDwordsPerDevice= "pci=0000:85:00.0;RmPVMRL=0x01;pci=0000:86:00.0;RmPVMRL=0x11"
重新启动您的虚拟机监控程序主机。
确认调度行为已更改,如 获取所有 GPU 的当前时间片 vGPU 调度行为 中所述。
恢复默认 vGPU 调度策略
在您的虚拟机监控程序命令 Shell 中执行此任务。
以虚拟机监控程序主机上的 root 用户身份打开命令 Shell。您可以对所有受支持的虚拟机监控程序使用安全 Shell (SSH) 来实现此目的。
取消设置
RmPVMRL
注册表项。将模块参数设置为空字符串。
# esxcli system module parameters set -m nvidia -p "module-parameter="
module-parameter
要设置的模块参数,取决于调度行为是为所有 GPU 还是选定 GPU 更改
对于所有 GPU,设置
NVreg_RegistryDwords
模块参数。对于所有 GPU,设置
NVreg_RegistryDwords
模块参数。
例如,要在为所有 GPU 更改默认 vGPU 调度程序设置后恢复它们,请输入此命令
# esxcli system module parameters set -m nvidia -p "NVreg_RegistryDwords="
重新启动您的虚拟机监控程序主机。