物理机及虚拟机配置

参考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 直通_GPU直通

AMD GPU兼容性列表

ESXi GPU 直通_ESXi_02

实际配置演示

软硬件环境介绍

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

  • 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 直通_ESXi_03

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

ESXi GPU 直通_vmware_04

GPU 切换直通模式

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

ESXi GPU 直通_vmware_05

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

ESXi GPU 直通_vmware_06

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

ESXi GPU 直通_ESXi_07

虚拟机创建及配置

创建虚拟机

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

ESXi GPU 直通_ESXi_08

ESXi GPU 直通_vmware_09

ESXi GPU 直通_直通_10

选择系统安装介质

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

ESXi GPU 直通_GPU直通_11

ESXi GPU 直通_直通_12

ESXi GPU 直通_vmware_13

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

 添加其他设置—>PCI设备

ESXi GPU 直通_vmware_14

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

ESXi GPU 直通_GPU直通_15

ESXi GPU 直通_直通_16

修改虚拟机内存

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

ESXi GPU 直通_ESXi_17

修改MMIO相关参数

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

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

pciPassthru.use64bitMMIO="TRUE"   pciPassthru.64bitMMIOSizeGB="128"1.2.3.

ESXi GPU 直通_直通_18

ESXi GPU 直通_ESXi_19

修改虚拟机引导选项

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

ESXi GPU 直通_直通_20

开始安装虚拟机

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

ESXi GPU 直通_vmware_21

GPU识别检查

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

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

最后从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                                                 |+-----------------------------------------------------------------------------+1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.

可能会遇到的问题

ESXi 安装时卡在bnxtroce.v00

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

ESXi GPU 直通_ESXi_22

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

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

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

<img src=“ https://gitee.com/Gavin_zj/blog/raw/master/blog_img/无引导介质-20210118182049.png” style=“zoom:150%;” />

ESXi GPU 直通_vmware_23

ESXi GPU 直通_GPU直通_24

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

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

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

ESXi GPU 直通_GPU直通_25

ESXi GPU 直通_ESXi_26

ESXi GPU 直通_vmware_27

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

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

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

ESXi GPU 直通_vmware_28

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

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

ESXi GPU 直通_GPU直通_29

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

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

ESXi GPU 直通_vmware_30

可能原因为:

  • 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).1.2.3.4.

ESXi GPU 直通_GPU直通_31

可能原因:

  • 虚拟机操作系统引导方式为BIOS,需要修改为EFI;

  • ESXi软件中未设置MMIO相关参数

    • pciPassthru.use64bitMMIO=“TRUE”

    • pciPassthru.64bitMMIOSizeGB =“<n>”