手册下载
H3C服务器 GPU虚拟化模式典型配置-6W102-整本手册.pdf (2.38 MB)
H3C服务器
GPU虚拟化模式典型配置
Copyright © 2024 新华三技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
目 录
本文档介绍H3C服务器的GPU虚拟化模式典型配置举例。
如图1-1所示,Nvidia GPU虚拟化模式凭借NVIDIA GRID vGPU技术,每个虚拟机的图形命令被直接传递至GPU,不用Hypervisor来译码。让GPU硬件能够实现时间分片,为虚拟化图形提供高性能。
本文中介绍的典型配置,适用于以下机型:
· H3C Uniserver R5300 G6
· H3C Uniserver R5350 G6
· H3C Uniserver R5500 G5
· H3C Uniserver R5300 G5
本文中介绍的典型配置,适用于以下GPU:
· GPU-A30-24G
· GPU-A100-40G
· GPU-A100-80G
· GPU-A30-24GB-NoCEC
· GPU-A100-80GB-NoCEC
· GPU-HGX A100 4-GPU-40GB
· GPU-HGX A100 4-GPU-80GB
· GPU-HGX A100 8-GPU-40GB
· GPU-HGX A100 8-GPU-80GB
如图2-1所示,R5300 G5服务器上安装了CentOS 8.2系统,并配置了2张NVIDIA PCIe A100-40G GPU。现基于SRIOV进行GPU虚拟化的配置,使能系统和GPU的SRIOV配置,在VF设备下创建vGPU实例,将vGPU实例添加至虚拟机进行使用。
(1) 为了提升虚拟机的性能,允许虚拟机直接访问I/O设备,需要使能服务器的虚拟化技术和ACS。
(2) 在BIOS中开启IOMMU功能,使操作系统支持虚拟化。
(3) 物理显卡必须支持NVIDIA GRID vGPU解决方案。
(4) 创建虚拟机并将GPU设备添加到虚拟机。
(5) 为了使虚拟机可以正常使用GPU,需要在虚拟机系统中安装GPU驱动。
本举例使用如下版本进行配置和验证:
表2-1 使用的机型和版本
型号或版本 |
|
机型 |
R5300 G5 |
HDM版本 |
2.80 |
BIOS版本 |
5.34 |
服务器GPU配置方案 |
8GPU-HPC |
GPU 类型 |
NVIDIA PCIe A100-40G |
vGPU驱动版本 |
510.47.03 |
物理机操作系统 |
CentOS 8.2 |
虚拟机操作系统 |
CentOS 8.2 |
· 由于需要在CentOS系统中管理虚拟机,请确保系统已安装“virt-manager”管理器,一般推荐在安装OS时选择全包安装。
· 正在以直通模式使用的物理GPU不能再用来创建vGPU设备。
(1) 登录服务器的BIOS Setup界面。
(2) 使能虚拟化技术:Intel平台使能VT-d,AMD平台使能IOMMU。
· Intel平台使能方法:在BIOS的Advanced > Socket Configuration > IIO Configuration界面中,将Intel® VT for Directed I/O设置为Enable,如图2-2所示。
· AMD平台的使能方法:在BIOS的Advanced > AMD CBS > NBIO Common Options界面中,将IOMMU设置为Enable,如图2-3所示。
(3) 使能ACS。
a. 在BIOS的Advanced > Socket Configuration > IIO Configuration界面中,按Ctrl+Shift+F8,打开BIOS下的隐藏项。
b. 将IIO Configuration下的PCIe Access Control Services选项设置为Enable。
图2-4 使能ACS
使用这种方法进行设置仅生效一次,重启系统后需要重新设置。
(1) 在系统启动阶段,按E进入图2-5所示界面,然后按方向键进行翻页,并在指定位置加入“intel_iommu=on iommu=pt”来开启IOMMU支持功能。
(2) 设置完成后按Ctrl-x继续启动系统。
· 此配置为持久配置,只需执行一次,重启系统后仍然有效。
· 本方法会直接修改系统的配置文件,如果写入的配置内容出错可能导致系统启动文件损坏,从而无法正常开机,请谨慎使用此方法。
(1) 修改系统下的grubenv配置文件,在图2-6所示位置增加“intel_iommu=on iommu=pt”。配置文件地址通常位于/boot/grub2/grubenv路径。
图2-6 修改grubenv配置文件
(2) 执行grub2-mkconfig -o /boot/grub2/grubenv命令,重新生成grubenv配置文件。
图2-7 生成grubenv配置文件
(3) 重启操作系统使配置生效。
安装操作系统的具体步骤,请参见《H3C服务器 操作系统安装指导》。
(1) 在系统中执行systemctl set-default multi-user.target命令,进入多用户模式。
图2-8 进入多用户模式
(2) 执行reboot命令,重启操作系统使配置生效。
(1) 依次执行如下命令,对自带驱动进行禁用操作。
echo "blacklist nouveau" >>/etc/modprobe.d/blacklist-nouveau.conf
echo "options nouveau modeset=0" >>/etc/modprobe.d/blacklist-nouveau.conf
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut -v /boot/initramfs-$(uname -r).img $(uname -r)
图2-9 禁用自带驱动
(2) 执行reboot命令,重启操作系统使配置生效。
(1) 在系统中执行rpm -ivh NVIDIA-vGPU-rhel-8.2-510.47.03.x86_64.rpm命令,安装vGPU驱动
图2-10 安装vGPU驱动
(2) 执行reboot命令,重启操作系统使配置生效。
驱动安装成功后,查看GPU状态。执行命令nvidia-smi,查看A100 GPU默认状态MIG为禁用状态。记录下A100 GPU的Bus ID,以备下一步启用SRIOV时使用,本例中为:0:3D:00.0。
图2-11 确认GPU状态
若执行使能SRIOV时发生错误,请检查kernel参数中的iommu选项是否生效,或服务器BIOS中的相关选项是否使能。
(1) 在启用SRIOV前,请确保物理GPU未被任何其他进程使用,例如:CUDA、其他监控程序或nvidia-smi命令。仅使用随NVIDIA vGPU软件提供的自定义脚本sriov-manage。不要尝试通过其他方式使能SRIOV。
(2) 执行命令/user/lib/nvidia/sriov-manage –e BusID,本例中Bus ID为:0:3D:00.0,所以执行命令/user/lib/nvidia/sriov-manage –e 0000:3D:00.0。
图2-12 启用SRIOV
(3) 执行lspci –s 0:3D:00.0 -vv命令,查看Bus ID为0:3D:00.0的A100 GPU支持的SRIOV属性。查看属性可以看出A100 GPU最大可分配16个VF。
图2-13 查看GPU支持的SRIOV属性
(4) 使能SRIOV后,在/sys/class/mdev_bus/目录中可以查看所有可用于创建vGPU的VF设备的BDF,A100的00:3D:*的VF目录一共是16个。
图2-14 查看可创建vGPU的VF设备
创建SRIOV类型的vGPU,遵循以下方法:
(1) 每个vGPU实例占用一个VF设备,一旦VF已经被分配,该VF上不可再创建vGPU。
(2) 每个物理GPU的VF总数>=该GPU上可创建的vGPU最大实例数,例如A100 GPU单卡的Total VF数量是16,而最大A100 GPU单卡的vGPU实例数为40GB/4GB(4C类型vGPU Size)=10。因此,VF总数并不是该GPU的可创建最大vGPU数量。
图2-15 查看VF设备
(3) 最大可创建的vGPU实例数可以查询该vGPU类型目录中的description文件中描述的max_instances的值。
图2-16 查看vGPU类型目录属性
(4) 每一个VF设备的当前实时可创建vGPU数量应查询该VF目录下,指定类型目录中available_instances文件中的值:1表示可以在此VF设备创建指定的vGPU类型实例。0则表示不可创建此类型vGPU。可能是由于当前VF已经被占用,或当前类型不被支持。
图2-17 查看VF设备是否已被占用
(1) 启用SRIOV以后,选择一个未使用的VF设备目录,我们选择第一个设备目录:0000:3D:00.4,执行以下命令查看出所有支持的mdev设备名称和vGPU设备可用数量:
cd mdev_supported_types
for i in * ; do echo $i, `cat $i/name` `cat $i/ava*` ; done
执行命令后,可以查看到A100-4C类型的目录名为nvidia-468,且可用实例数量为1,所以可以在此VF上创建1个4C类型的vGPU实例,目录使用nvidia-468。
图2-18 查看支持的mdev设备名称和vGPU设备可用数量
(2) 使用uuid命令创建vGPU设备。
图2-19 创建vGPU设备
(1) 创建成功后再次查看,可以看到已分配vGPU的VF,0:3D:00.4可用的剩余vGPU实例数,全部为0。此时当前VF已经不能再创建新的vGPU设备。新的vGPU只能创建在不同的VF上。若需再创建,需切换至另一个VF目录。
图2-20 查看vGPU剩余实例数
(2) 切换至0:5d:00.5以后,查看可用vGPU实例状态。可以查看到空闲的VF上面仍然可以创建1个相同类型的vGPU实例,直到所有VF的可用vGPU instance全部为0。
图2-21 可用示例状态
(3) 在此VF上创建第二个vGPU设备,方法同上。
图2-22 创建第二个vGPU设备
(4) 通过以下命令可查看到所有生成的vGPU的uuid。
图2-23 查看所有生成的vGPU
(1) 在CentOS 8.2操作系统中执行virt-manager命令,弹出Virtual Machine Manager,如图2-24所示。
(2) 通过VM管理器在虚拟机上安装系统,具体步骤如下。
a. 如图2-25所示,开始创建一个新虚拟机,选择通过镜像文件安装。
b. 如图2-26所示,浏览并选择待安装到虚拟机的OS镜像文件。
c. 如图2-27所示,设置虚拟机的内存和CPU参数。
d. 如图2-28所示,设置虚拟机硬盘容量。
e. 如图2-29所示,为虚拟机命名,完成虚拟机配置。
f. 如图2-30所示,选择Install CentOS Linux 8,安装操作系统。安装操作系统的具体步骤,请参见《H3C服务器 操作系统安装指导》。
进入虚拟机后,需设置多用户模式,禁用自带驱动,此部分可参考2.5.3 Host安装和基础配置章节相关配置方法。
(1) 将之前生成的vGPU的uuid写入虚拟机文件中,执行命令virsh edit centos82,编辑虚拟机的xml配置并添加vGPU设备配置段,其中,centos82为虚拟机的名称。
(2) 保存退出后,启动该虚拟机,此时vGPU已经分配给此虚拟机。
(1) 为虚拟机配置IP地址等参数,推荐使虚拟机连接到互联网。
(2) 将vGPU驱动程序上传至虚拟机。
(3) 安装驱动程序,如图2-31所示。
(1) 如果虚拟机的系统中缺少依赖文件,安装驱动时会出现如图2-32所示报错信息。
(2) 如图2-33所示,查看/var/log/路径中的nvidia-installer.log文件。
图2-33 查看NVIDIA安装日志
(3) 如图2-34所示,确认当前系统安装GPU驱动缺少的依赖文件。
(4) 如图2-35所示,执行yum命令,依次安装缺少的依赖文件。如虚拟机已联网,系统可自动下载软件包;如虚拟机未联网,请配置本地的yum源。
(5) 如图2-36所示,再次安装GPU驱动,直至安装完成。
如图2-37所示,在虚拟机系统中执行nvidia-smi命令,查看GPU信息,能看到GPU已被虚拟机识别。