​ 最近在协助客户进行ESXi GPU 直通配置,因为没有相关文档指导,跳了不少坑,今天把配置过程整理下,留作纪念。

物理机及虚拟机配置

​ 参考vmware及NVIDIA官网介绍,进行ESXi GPU直通配置时,为了避免一系列的报错,请按照以下要求完成配置。

简单点来说就是:

物理机与虚拟机建议全部使用EFI引导。

ESXi软件建议使用6.7及以上版本,操作系统安装64-bit的。

物理机配置

  • 物理机使用EFI引导模式;
  • 若GPU 需要 16 GB 或更多的内存映射(BAR1 Memory),需要在物理机bios中启用GPU直通,设置项名称通常为Above 4G decoding、Memory mapped I/O above 4GB 或 PCI 64-bit resource handing above 4G;

  • BIOS 中启用虚拟化功能: Intel Virtualization Technology for Directed I/O (VT-d) 或 AMD I/O Virtualization Technology (IOMMU);

ESXi虚拟机设置

  • 建议虚拟机系统为64-bit操作系统;

  • If the total BAR1 memory exceeds 256 Mbytes, EFI boot must be enabled for the VM.

    Note: To determine the total BAR1 memory, run nvidia-smi -q on the host.

  • To enable 64-bit Memory Mapped I/O (MMIO) add this line to the virtual machine vmx file:

    pciPassthru.use64bitMMIO="TRUE"

  • Memory Mapped I/O (MMIO)大小调整:建议调整为(n*GPU显存)向上舍入到下一个2次幂。

    示例:pciPassthru.64bitMMIOSizeGB ="64"

    • 两个16G显存GPU,2 x 16 GB = 32,将 32 GB 向上舍入到下一个 2 次幂,所需的内存量为 64 GB。

    • 三个16G显存GPU,3 x 16 GB = 48,将 48 GB 向上舍入到下一个 2 次幂,所需的内存量为 64 GB。

    或者直接设置为虚拟机分配的所有GPU显存大小的两倍,2*n*GPU显存(单位为GB)

  • 虚拟机内存最小值建议为分配的所有GPU显存总大小的1.5倍。

ESXI 6.5以下版本注意事项:

  • Set the ESXi hosts BIOS to allow PCI mapping above 4GB and below 16TB(比如物理机bios中MMIO High Base 设置为4T).
  • In UEFI BIOS mode, a virtual machines's total BAR allocation is limited to 32GB.

ESXi GPU直通兼容性列表

​ ESXi与GPU直通的兼容性列表一定提前查询下,比如NVIDIA Tesla V100S与ESXi 6.0是不兼容的,这个也是我本次安装踩坑之一,这个坑希望你不要掉进去。

​ 兼容性列表可以在GPU直通兼容性查询网站,选择Shared Pass-Through Graphics项目后进行查询,该网站打开后经常没反应,不要一直纠结这个,看我下面附的图片吧。

NVIDIA GPU兼容性列表

ESXi GPU 直通

AMD GPU兼容性列表

ESXi GPU 直通

实际配置演示

软硬件环境介绍

​ 这里介绍下我本次配置所用的软硬件环境:

  • GPU:NVIDIA Tesla V100与Tesla V100S各一块,均为32G显存GPU。
  • 虚拟化软件:ESXi 6.7 U3
  • 虚拟机操作系统:CentOS 7.5-64-bit

物理机配置

首先开机进入bios,提前修改物理机bios设置:

  • Above 4G decoding - Enable
  • Intel Virtualization Technology for Directed I/O (VT-d) - Enable
  • MMIO High Base - 默认56T(若为ESXi 6.5以下版本注意修改为4G-16T之间的值,如4T)

ESXi 6.7安装

​ 可以使用服务器自带的虚拟光驱或刻录U盘进行ESXi安装,本次以U盘安装进行示例,建议使用Rufu工具进行U盘刻录。

ESXi GPU 直通

​ 服务器开机从U盘启动并完成ESXi安装,如图为本次完成安装的ESXi软件版本。

ESXi GPU 直通

GPU 切换直通模式

​ 安装完ESXi软件后,首先需要将GPU切换为直通模式,切换方法为:导航界面选择管理--->硬件--->PCI设备,搜索框输入nvidia筛选出GPU设备,勾选后,点击切换直通

ESXi GPU 直通

GPU切换直通后,需要重新引导主机使配置生效:

ESXi GPU 直通

重新引导主机后,GPU直通变为活动状态,表示GPU切换直通成功。

ESXi GPU 直通

虚拟机创建及配置

创建虚拟机

​ 导航栏选择虚拟机--->创建/注册虚拟机并修改虚拟机配置。

ESXi GPU 直通

ESXi GPU 直通

ESXi GPU 直通

选择系统安装介质

​ 本次通过上传iso镜像的方式进行虚拟机系统安装,虚拟硬件--->CD/DVD驱动器1中选择数据存储ISO文件,上载ISO镜像并选择。

ESXi GPU 直通

image-20210118172252112

ESXi GPU 直通

添加直通GPU并预留所有内存

添加其他设置--->PCI设备

ESXi GPU 直通

​ 如图,添加两块GPU,分别为Tesla V100和Tesla V100S,并在新PCI设备选项下点击预留所有内存

ESXi GPU 直通

ESXi GPU 直通

修改虚拟机内存

虚拟硬件--->内存,建议设置最小内存为虚拟机所分配GPU显存总大小的1.5倍。确保已勾选预留所有客户机内存(全部锁定)

ESXi GPU 直通

修改MMIO相关参数

虚拟机选项--->高级--->编辑配置,添加以下参数:

本次添加两块显存为32G的GPU,所以设置pciPassthru.64bitMMIOSizeGB的值为2*32并向上舍入到下一个2的次幂,即128.

pciPassthru.use64bitMMIO="TRUE"   

pciPassthru.64bitMMIOSizeGB="128"

ESXi GPU 直通

ESXi GPU 直通

修改虚拟机引导选项

编辑虚拟机,修改虚拟机选项--->引导选项EFI

ESXi GPU 直通

开始安装虚拟机

​ 自定义设置中完成CPU、内存、GPU、引导选项等各种设置后,点击完成开始安装虚拟机即可。

ESXi GPU 直通

GPU识别检查

​ 系统安装完成后,登陆虚拟机系统使用lspci命令检查GPU识别情况,如下表示添加的两块GPU识别正常。

[root@localhost ~]# lspci | grep -i nvidia
0b:00.0 3D controller: NVIDIA Corporation Device 1db6 (rev a1)
13:00.0 3D controller: NVIDIA Corporation Device 1df6 (rev a1)

​ 最后从NVIDIA官网下载对应的GPU驱动并安装,安装后建议打开GPU驱动persistence mode并配置开机自启动:

[root@localhost ~]# nvidia-smi 
Mon Jan 18 17:43:13 2021       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| 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  Tesla V100-PCIE...  On   | 00000000:0B:00.0 Off |                    0 |
| N/A   37C    P0    27W / 250W |      0MiB / 32510MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  Tesla V100S-PCI...  On   | 00000000:13:00.0 Off |                    0 |
| N/A   35C    P0    25W / 250W |      0MiB / 32510MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

可能会遇到的问题

ESXi 安装时卡在bnxtroce.v00

​ 出现该问题多为刻录U盘时选择的U盘格式有问题,建议使用本文介绍的rufus工具进行刻录,同时物理机引导模式选择EFI引导。若使用软碟通进行U盘刻录,可以将写入方式修改为 USB-ZIP+ v2 或者 USB-HDD+ v2

ESXi GPU 直通

系统安装时找不到引导介质

​ 如下,系统安装时显示找不到引导介质,可以将CD/DVD驱动器1删除后重新添加,重新配置引导介质。

<img src="file:///E:\软件资料存储\qq\1037509307\Image\C2C]T0J}$NN1C]Q60Y]1G{}E.png" alt="img" style="zoom:200%;" />

<img src="https://gitee.com/Gavin_zj/blog/raw/master/blog_img/%E6%97%A0%E5%BC%95%E5%AF%BC%E4%BB%8B%E8%B4%A8-20210118182049.png" style="zoom:150%;" />

ESXi GPU 直通

ESXi GPU 直通

ESXi 6.0安装后无法通过浏览器进行管理

​ 添加网页管理web client的方式是:

​ ESXi控制台界面,按F2进入系统配置,输入用户名/密码后,进入 troubleshooting options中,按回车键打开SSH。

ESXi GPU 直通

ESXi GPU 直通

ESXi GPU 直通

​ 使用xshell等终端 ssh IP,进入命令行窗口,然后通过ssh运行安装web client的命令:

esxcli software vib install -v https://download3.vmware.com/software/vmw-tools/esxui/esxui-signed-7119706.vib

安装完成后,可以使用浏览器打开 http://IP/ui 来进行网页管理。

ESXi GPU 直通

浏览器管理界面密码输入正确但无法登录

​ 连接物理服务器按F2键进入ESXi控制台界面,进入Troubleshooting Options,选择Restart Managent Agents。若仍然无效,可以先在控制界面修改登录密码后再执行此操作。

ESXi GPU 直通

虚拟机无法开机,提示电源报错

​ 具体报错内容如下:无法打开虚拟机的电源,失败 - 模块“DevicePowerOn”打开电源失败。

ESXi GPU 直通

可能原因为:

  • ESXi 软件与GPU不兼容
  • ESXi软件中未设置MMIO相关参数
    • pciPassthru.use64bitMMIO="TRUE"
    • pciPassthru.64bitMMIOSizeGB =“<n>”

GPU驱动安装报错

​ 虚拟机内GPU驱动安装失败,提示以下报错:

NVRM: BAR1 is 0M @ 0x0 (PCI:0000:02:02.0)
[  90.823015] NVRM: The system BIOS may have misconfigured your GPU.
[  90.823019] nvidia: probe of 0000:02:02.0 failed with error -1
[  90.823031] NVRM: The NVIDIA probe routine failed for 1 device(s).

ESXi GPU 直通

可能原因:

  • 虚拟机操作系统引导方式为BIOS,需要修改为EFI;
  • ESXi软件中未设置MMIO相关参数
    • pciPassthru.use64bitMMIO="TRUE"
    • pciPassthru.64bitMMIOSizeGB =“<n>”