搜索

10.2. 在 Compute 节点上配置 vGPU

download PDF

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

  1. 为 vGPU 指定 Compute 节点。
  2. 为 vGPU 配置 Compute 节点。
  3. 部署 overcloud。
  4. 可选:为 vGPU 类型创建自定义特征。
  5. 可选:创建自定义 GPU 实例镜像。
  6. 创建一个 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 License Server 发行注记 网页。

10.2.1. 先决条件

  • 您已从 NVIDIA 网站下载了与 GPU 设备对应的 NVIDIA GRID 主机驱动程序 RPM 软件包。要确定您需要的驱动程序,请参阅 NVIDIA Driver Downloads Portal。您必须是一个注册的 NVIDIA 客户才能从门户下载驱动程序。
  • 您已构建了一个自定义 overcloud 镜像,该镜像安装了 NVIDIA GRID 主机驱动程序。

10.2.2. 为 vGPU 设计 Compute 节点

要为 vGPU 工作负载指定 Compute 节点,您必须创建一个新的角色文件来配置 vGPU 角色,并使用 GPU 资源类配置裸机节点,以标记启用了 GPU 的 Compute 节点。

注意

以下流程适用于尚未调配的新 overcloud 节点。要将资源类分配给已调配的现有 overcloud 节点,您必须使用缩减流程取消置备节点,然后使用扩展步骤使用新资源类分配重新置备节点。有关更多信息,请参阅 扩展 overcloud 节点

流程

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

    [stack@director ~]$ source ~/stackrc
  3. 生成一个名为 roles_data_gpu.yaml 的新角色数据文件,其中包含 ControllerComputeComputeGpu 角色,以及 overcloud 所需的任何其他角色:

    (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 注释

    Role: Compute

    Role: ComputeGpu

    角色名称

    Name: Compute

    name: ComputeGpu

    description

    基本 Compute 节点角色

    GPU Compute 节点角色

    HostnameFormatDefault

    -compute-

    -computegpu-

    deprecated_nic_config_name

    compute.yaml

    compute-gpu.yaml

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

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

    如需更多信息,请参阅 安装和管理 Red Hat OpenStack Platform 指南中的创建 裸机节点硬件清单

  7. 使用自定义 GPU 资源类标记您要为 GPU 工作负载指定的每个裸机节点:

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

    <node > 替换为 baremetal 节点的 ID。

  8. ComputeGpu 角色添加到节点定义文件 overcloud-baremetal-deploy.yaml 中,并定义您要分配给节点的任何预先节点放置、资源类、网络拓扑或其他属性:

    - name: Controller
      count: 3
    - name: Compute
      count: 3
    - name: ComputeGpu
      count: 1
      defaults:
        resource_class: baremetal.GPU
        network_config:
          template: /home/stack/templates/nic-config/myRoleTopology.j2 1
    1
    您可以重复使用现有网络拓扑,或为角色创建新的自定义网络接口模板。如需更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 指南中的 自定义网络接口模板。如果您没有使用 network_config 属性定义网络定义,则使用默认网络定义。

    有关您可以在节点定义文件中配置节点属性的属性的更多信息,请参阅 裸机节点置备属性。有关节点定义文件的示例,请参阅 节点定义文件 示例

  9. 运行 provisioning 命令为您的角色置备新节点:

    (undercloud)$ openstack overcloud node provision \
    --stack <stack> \
    [--network-config \]
    --output /home/stack/templates/overcloud-baremetal-deployed.yaml \
    /home/stack/templates/overcloud-baremetal-deploy.yaml
    • & lt;stack> 替换为置备裸机节点的堆栈名称。如果未指定,则默认为 overcloud
    • 包含 --network-config 可选参数,为 cli-overcloud-node-network-config.yaml Ansible playbook 提供网络定义。如果您没有使用 network_config 属性定义网络定义,则使用默认网络定义。
  10. 在一个单独的终端中监控置备进度。当置备成功时,节点状态将从 available 变为 active

    (undercloud)$ watch openstack baremetal node list
  11. 如果您没有使用 --network-config 选项运行 provisioning 命令,请在 network-environment.yaml 文件中配置 <Role>NetworkConfigTemplate 参数以指向 NIC 模板文件:

    parameter_defaults:
       ComputeNetworkConfigTemplate: /home/stack/templates/nic-configs/compute.j2
       ComputeGpuNetworkConfigTemplate: /home/stack/templates/nic-configs/<gpu_net_top>.j2
       ControllerNetworkConfigTemplate: /home/stack/templates/nic-configs/controller.j2

    <gpu_net_top> 替换为包含 ComputeGpu 角色的网络拓扑的文件名称,如 compute.yaml 以使用默认网络拓扑。

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

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

流程

  1. 在临时 Compute 节点上安装 Red Hat Enterprise Linux 和 NVIDIA GRID 驱动程序并启动该节点。
  2. 虚拟 GPU 是介质设备或 mdev 类型设备。检索每个 Compute 节点上的每个 mdev 设备的 PCI 地址:

    $ ls /sys/class/mdev_bus/

    PCI 地址用作设备驱动程序目录名称,如 0000:84:00.0

  3. 查看每个 Compute 节点上每个可用 pGPU 设备支持的 mdev 类型,以发现可用的 vGPU 类型:

    $ ls /sys/class/mdev_bus/<mdev_device>/mdev_supported_types
    • <mdev_device > 替换为 mdev 设备的 PCI 地址,例如 0000:84:00.0

      例如,以下 Compute 节点有 4 个 pGPU,每个 pGPU 都支持相同的 11 vGPU 类型:

    [root@overcloud-computegpu-0 ~]# ls /sys/class/mdev_bus/0000:84:00.0/mdev_supported_types:
    nvidia-35  nvidia-36  nvidia-37  nvidia-38  nvidia-39  nvidia-40  nvidia-41  nvidia-42  nvidia-43  nvidia-44  nvidia-45
    [root@overcloud-computegpu-0 ~]# ls /sys/class/mdev_bus/0000:85:00.0/mdev_supported_types:
    nvidia-35  nvidia-36  nvidia-37  nvidia-38  nvidia-39  nvidia-40  nvidia-41  nvidia-42  nvidia-43  nvidia-44  nvidia-45
    [root@overcloud-computegpu-0 ~]# ls /sys/class/mdev_bus/0000:86:00.0/mdev_supported_types:
    nvidia-35  nvidia-36  nvidia-37  nvidia-38  nvidia-39  nvidia-40  nvidia-41  nvidia-42  nvidia-43  nvidia-44  nvidia-45
    [root@overcloud-computegpu-0 ~]# ls /sys/class/mdev_bus/0000:87:00.0/mdev_supported_types:
    nvidia-35  nvidia-36  nvidia-37  nvidia-38  nvidia-39  nvidia-40  nvidia-41  nvidia-42  nvidia-43  nvidia-44  nvidia-45
  4. 创建一个 gpu.yaml 文件来指定每个 GPU 设备支持的 vGPU 类型:

    parameter_defaults:
      ComputeGpuExtraConfig:
        nova::compute::vgpu::enabled_vgpu_types:
          - nvidia-35
          - nvidia-36
  5. 可选: 要配置多个 vGPU 类型,请将支持的 vGPU 类型映射到 pGPU:

    parameter_defaults:
      ComputeGpuExtraConfig:
        nova::compute::vgpu::enabled_vgpu_types:
          - nvidia-35
          - nvidia-36
        NovaVGPUTypesDeviceAddressesMapping: {'vgpu_<vgpu_type>': ['<pci_address>', '<pci_address>'],'vgpu_<vgpu_type>': ['<pci_address>', '<pci_address>']}
    • <vgpu_type > 替换为 vGPU 类型的名称,以便为 vGPU 组创建一个标签,如 vgpu_nvidia-35。使用以逗号分隔的 vgpu_&lt ;vgpu_type> 定义列表来映射额外的 vGPU 类型。
    • <pci_address > 替换为支持 vGPU 类型的 pGPU 设备的 PCI 地址,如 0000:84:00.0。使用以逗号分隔的 < pci_address> 定义列表将 vGPU 组映射到额外的 pGPU。

      Example:

      NovaVGPUTypesDeviceAddressesMapping: {'vgpu_nvidia-35': ['0000:84:00.0', '0000:85:00.0'],'vgpu_nvidia-36': ['0000:86:00.0']}

      • 在 PCI 地址 0000:84:00.00000:85:00.0 中的 pGPU 支持 nvidia-35 vGPU 类型。
      • nvidia-36 vGPU 类型只支持 PCI 地址 0000:86:00.0 中的 pGPU。
  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/overcloud-baremetal-deployed.yaml \
      -e /home/stack/templates/node-info.yaml
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.