12.2. 在 Compute 节点上配置 vGPU

要让您的云用户创建使用虚拟 GPU (vGPU)的实例,您必须配置具有物理 GPU 的 Compute 节点:

  1. 为 vGPU 指定 Compute 节点。
  2. 为 vGPU 配置 Compute 节点。
  3. 部署 overcloud。
  4. 创建 vGPU 类别以启动具有 vGPU 的实例。
提示

如果 GPU 硬件有限,您还可以配置主机聚合来优化 vGPU Compute 节点上的调度。要仅在 vGPU Compute 节点上调度请求 vGPU 的实例,请创建一个 vGPU Compute 节点的主机聚合,并将计算调度程序配置为仅将 vGPU 实例放在主机聚合中。如需更多信息,请参阅 Creating and managing host aggregatesFiltering 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 节点。

流程

  1. stack 用户的身份登录 undercloud。
  2. Source stackrc 文件:

    [stack@director ~]$ source ~/stackrc
  3. 生成一个名为 roles_data_gpu.yaml 的新角色数据文件,其中包含 Controller, Compute, 和 ComputeGpu 角色:

    (undercloud)$ openstack overcloud roles \
      generate -o /home/stack/templates/roles_data_gpu.yaml \
      Compute:ComputeGpu Compute Controller
  4. 打开 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

  5. 通过将其添加到节点定义模板 node.jsonnode.yaml,为 overcloud 注册启用了 GPU 的 Compute 节点。有关更多信息,请参阅 Director 安装和使用 指南中的 为 overcloud 注册节点
  6. 检查节点硬件:

    (undercloud)$ openstack overcloud node introspect --all-manageable \
     --provide

    如需更多信息,请参阅 Director 安装和使用指南中的 创建裸机节点硬件清单

  7. 为 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 数量。

      注意

      这些属性不可用于调度实例。但是,计算调度程序使用磁盘大小来确定根分区大小。

  8. 检索节点列表来识别它们的 UUID:

    (undercloud)$ openstack baremetal node list
  9. 使用自定义 GPU 资源类标记您要为 GPU 工作负载指定的每个裸机节点:

    (undercloud)$ openstack baremetal node set \
     --resource-class baremetal.GPU <node>

    <node > 替换为裸机节点的 ID。

  10. compute-vgpu-nvidia 类别与自定义 GPU 资源类关联:

    (undercloud)$ openstack flavor set \
     --property resources:CUSTOM_BAREMETAL_GPU=1 \
      compute-vgpu-nvidia

    要确定与 Bare Metal 服务节点的资源类对应的自定义资源类的名称,请将资源类转换为大写,请将所有 punctuation 替换为下划线,并使用 CUSTOM_ 前缀。

    注意

    类别只能请求一个裸机资源类实例。

  11. 设置以下类别属性,以防止计算调度程序使用裸机类别属性来调度实例:

    (undercloud)$ openstack flavor set \
     --property resources:VCPU=0 --property resources:MEMORY_MB=0 \
     --property resources:DISK_GB=0 compute-vgpu-nvidia
  12. 要验证角色是否已创建,请输入以下命令:

    (undercloud)$ openstack overcloud profiles list

12.2.3. 为 vGPU 配置 Compute 节点并部署 overcloud

您需要检索并分配与环境中物理 GPU 设备对应的 vGPU 类型,并准备环境文件来为 vGPU 配置 Compute 节点。

流程

  1. 在临时 Compute 节点上安装 Red Hat Enterprise Linux 和 NVIDIA GRID 驱动程序并启动节点。
  2. 在 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
  3. 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
  4. node-info.yaml 文件中添加以下参数,以指定 GPU Compute 节点的数量,以及用于 GPU 设计的 Compute 节点的类别:

    parameter_defaults:
      OvercloudControllerFlavor: control
      OvercloudComputeFlavor: compute
      OvercloudComputeGpuFlavor: compute-vgpu-nvidia
      ControllerCount: 1
      ComputeCount: 0
      ComputeGpuCount: 1
  5. 创建 gpu.yaml 文件以指定 GPU 设备的 vGPU 类型:

    parameter_defaults:
      ComputeGpuExtraConfig:
        nova::compute::vgpu::enabled_vgpu_types:
          - nvidia-18
    注意

    每个物理 GPU 只支持一个虚拟 GPU 类型。如果您在此属性中指定多个 vGPU 类型,则只使用第一个类型。

  6. 保存对 Compute 环境文件的更新。
  7. 使用其他环境文件将新角色和环境文件添加到堆栈中,并部署 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