12.2. 在 Compute 节点上配置 vGPU
要让您的云用户创建使用虚拟 GPU (vGPU)的实例,您必须配置具有物理 GPU 的 Compute 节点:
- 为 vGPU 指定 Compute 节点。
- 为 vGPU 配置 Compute 节点。
- 部署 overcloud。
- 创建 vGPU 类别以启动具有 vGPU 的实例。
如果 GPU 硬件有限,您还可以配置主机聚合来优化 vGPU Compute 节点上的调度。要仅在 vGPU Compute 节点上调度请求 vGPU 的实例,请创建一个 vGPU Compute 节点的主机聚合,并将计算调度程序配置为仅将 vGPU 实例放在主机聚合中。如需更多信息,请参阅 Creating and managing host aggregates 和 Filtering by isolating host aggregates。
要使用 NVIDIA GRID vGPU,您必须符合 NVIDIA GRID 许可证要求,且您必须具有自托管许可证服务器的 URL。如需更多信息,请参阅 NVIDIA 许可证服务器发行注记 网页。
12.2.1. 先决条件
- 您已从 NVIDIA 网站下载了与 GPU 设备对应的 NVIDIA GRID 主机驱动程序 RPM 软件包。要确定您需要的驱动程序,请参阅 NVIDIA 驱动程序下载门户。您必须是一个注册的 NVIDIA 客户,才能从门户下载驱动程序。
- 您已构建了一个自定义 overcloud 镜像,该镜像安装了 NVIDIA GRID 主机驱动程序。
12.2.2. 为 vGPU 设计 Compute 节点
要为 vGPU 工作负载指定 Compute 节点,您必须创建一个新角色文件来配置 vGPU 角色,并配置一个新的 overcloud 类别和资源类来标记启用了 GPU 的 Compute 节点。
流程
-
以
stack
用户的身份登录 undercloud。 Source
stackrc
文件:[stack@director ~]$ source ~/stackrc
生成一个名为
roles_data_gpu.yaml
的新角色数据文件,其中包含Controller
,Compute
, 和ComputeGpu
角色:(undercloud)$ openstack overcloud roles \ generate -o /home/stack/templates/roles_data_gpu.yaml \ Compute:ComputeGpu Compute Controller
打开
roles_data_gpu.yaml
并编辑或添加以下参数和部分:section/Parameter 当前值 新值 角色注释
Role: Compute
Role: ComputeGpu
角色名称
名称 :Compute
name: ComputeGpu
description
基本 Compute 节点角色
GPU Compute 节点角色
ImageDefault
不适用
overcloud-full-gpu
HostnameFormatDefault
-compute-
-computegpu-
deprecated_nic_config_name
compute.yaml
compute-gpu.yaml
-
通过将其添加到节点定义模板
node.json
或node.yaml
,为 overcloud 注册启用了 GPU 的 Compute 节点。有关更多信息,请参阅 Director 安装和使用 指南中的 为 overcloud 注册节点。 检查节点硬件:
(undercloud)$ openstack overcloud node introspect --all-manageable \ --provide
如需更多信息,请参阅 Director 安装和使用指南中的 创建裸机节点硬件清单。
为 vGPU Compute 节点创建
compute-vgpu-nvidia
overcloud 类别:(undercloud)$ openstack flavor create --id auto \ --ram <ram_size_mb> --disk <disk_size_gb> \ --vcpus <no_vcpus> compute-vgpu-nvidia
-
将
<ram_size_mb>
替换为裸机节点的 RAM,以 MB 为单位。 -
将
<disk_size_gb>
替换为裸机节点中的磁盘大小(以 GB 为单位)。 将
<no_vcpus>
替换为裸机节点中的 CPU 数量。注意这些属性不可用于调度实例。但是,计算调度程序使用磁盘大小来确定根分区大小。
-
将
检索节点列表来识别它们的 UUID:
(undercloud)$ openstack baremetal node list
使用自定义 GPU 资源类标记您要为 GPU 工作负载指定的每个裸机节点:
(undercloud)$ openstack baremetal node set \ --resource-class baremetal.GPU <node>
将
<node
> 替换为裸机节点的 ID。将
compute-vgpu-nvidia
类别与自定义 GPU 资源类关联:(undercloud)$ openstack flavor set \ --property resources:CUSTOM_BAREMETAL_GPU=1 \ compute-vgpu-nvidia
要确定与 Bare Metal 服务节点的资源类对应的自定义资源类的名称,请将资源类转换为大写,请将所有 punctuation 替换为下划线,并使用
CUSTOM_
前缀。注意类别只能请求一个裸机资源类实例。
设置以下类别属性,以防止计算调度程序使用裸机类别属性来调度实例:
(undercloud)$ openstack flavor set \ --property resources:VCPU=0 --property resources:MEMORY_MB=0 \ --property resources:DISK_GB=0 compute-vgpu-nvidia
要验证角色是否已创建,请输入以下命令:
(undercloud)$ openstack overcloud profiles list
12.2.3. 为 vGPU 配置 Compute 节点并部署 overcloud
您需要检索并分配与环境中物理 GPU 设备对应的 vGPU 类型,并准备环境文件来为 vGPU 配置 Compute 节点。
流程
- 在临时 Compute 节点上安装 Red Hat Enterprise Linux 和 NVIDIA GRID 驱动程序并启动节点。
在 Compute 节点上,找到您要启用的物理 GPU 设备的 vGPU 类型。对于 libvirt,虚拟 GPU 是介质设备或
mdev
类型设备。要发现支持的mdev
设备,请输入以下命令:[root@overcloud-computegpu-0 ~]# ls /sys/class/mdev_bus/0000\:06\:00.0/mdev_supported_types/ nvidia-11 nvidia-12 nvidia-13 nvidia-14 nvidia-15 nvidia-16 nvidia-17 nvidia-18 nvidia-19 nvidia-20 nvidia-21 nvidia-210 nvidia-22 [root@overcloud-computegpu-0 ~]# cat /sys/class/mdev_bus/0000\:06\:00.0/mdev_supported_types/nvidia-18/description num_heads=4, frl_config=60, framebuffer=2048M, max_resolution=4096x2160, max_instance=4
在
network-environment.yaml
文件中注册ComputeGpu
角色的Net::SoftwareConfig
:resource_registry: OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml OS::TripleO::ComputeGpu::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute-gpu.yaml OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller.yaml
在
node-info.yaml
文件中添加以下参数,以指定 GPU Compute 节点的数量,以及用于 GPU 设计的 Compute 节点的类别:parameter_defaults: OvercloudControllerFlavor: control OvercloudComputeFlavor: compute OvercloudComputeGpuFlavor: compute-vgpu-nvidia ControllerCount: 1 ComputeCount: 0 ComputeGpuCount: 1
创建
gpu.yaml
文件以指定 GPU 设备的 vGPU 类型:parameter_defaults: ComputeGpuExtraConfig: nova::compute::vgpu::enabled_vgpu_types: - nvidia-18
注意每个物理 GPU 只支持一个虚拟 GPU 类型。如果您在此属性中指定多个 vGPU 类型,则只使用第一个类型。
- 保存对 Compute 环境文件的更新。
使用其他环境文件将新角色和环境文件添加到堆栈中,并部署 overcloud:
(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -r /home/stack/templates/roles_data_gpu.yaml \ -e /home/stack/templates/network-environment.yaml \ -e /home/stack/templates/gpu.yaml \ -e /home/stack/templates/node-info.yaml