可以为实例配置多个 vGPU 配置文件,也可以在同一 Nova 计算节点中创建多个具有不同 vGPU 配置文件的实例。

对配置多个 vGPU 配置文件的支持有限, vSphereVMware Integrated OpenStack 存在以下限制:
  • 您无法在 Nova 计算 CR 中将 profile_fb_size_kb 设置为大型整数,例如 2097152。
  • 不能在同一 ESXi 上同时打开具有不同 vGPU 配置文件的多个虚拟机的电源。如果 ESXi 主机中只有一个显卡,则必须先关闭具有 vgpu-profileA 的虚拟机电源,然后再运行具有 vgpu-profileB 的虚拟机。
  • 不能打开具有两个不同 vGPU 配置文件的实例的电源。
  • 要打开具有两个相同 vGPU 配置文件的实例的电源,必须至少具有两个未使用的 GPU 显卡,并且这些显卡只能为特定的 vGPU 配置文件提供支持。例如,对于 NVIDIA Tesla T4 显卡,它只能创建具有两个 grid_t4_16q 配置文件的实例。不支持其他 vGPU 配置文件。
  • 对于配置了一个图形 RAM 为 16-G 的显卡的 ESXi,它仅支持运行八个具有 grid_t4_2q 配置文件的实例,或四个具有 grid_t4_4q 的实例。总图形 RAM 不能超过指定的值。
  • VMware Integrated OpenStack 无法检测或指定可用于创建虚拟机的显卡。在某些情况下,您必须确保有一个显卡可用于具有的 vGPU 配置文件不同于正在运行的实例的引导实例。管理员可以使用 validate_instance_vgpulist_vms_by_device 命令来获取可使用 ESXi 的设备的信息。要释放显卡,必须执行 shutt off instance from openstack
  • 对于 nova-compute.conf 中的默认 GPU 配置文件设置(如 gpu_profile: grid_t4-2q),可以引导兼具 vmware:vgpu=1vmware:vgpu_profiles=grid_t4-2q 的实例。但是,建议不要在同一 Nova 计算节点内以两种方式引导实例。
  • 不支持调整大小和迁移。

过程

  1. 对于列表支持的 GPU 配置文件,您可以在 Nova 计算节点内的特定 Nova 计算 Pod 中运行命令。
    +--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    
    |  Host Name   |                                                                                                   Profile Names                                                                                                   |
    
    +--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    
    | 10.196.4.135 | [grid_t4-8q, grid_t4-8c, grid_t4-8a, grid_t4-4q, grid_t4-4c, grid_t4-4a, grid_t4-2q, grid_t4-2b4, grid_t4-2b, grid_t4-2a, grid_t4-1q, grid_t4-1b4, grid_t4-1b, grid_t4-1a, grid_t4-16q, grid_t4-16c, grid_t4-16a] |
    
    +--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    您也可以在 VMware Integrated OpenStack Manager 中运行命令。
    osctl exec -it    <compute-pod-name> -- bash -c "export PYTHONWARNINGS=\"ignore:Unverified HTTPS request\" && nova-manage --config-file /tmp/share/nova-compute.conf --config-file /etc/nova/nova.conf --log-file /tmp/nova-manage.log graphic list_vgpus"
  2. 创建具有不同 GPU 配置文件的虚拟机,而不重新配置 Nova 计算。

    确保一个 ESXi 主机中有两个显卡,或者有两个各安装了一个显卡的 ESXi

    1. 按照NVIDIA GRID vGPU中所述配置 nova-compute.conf。
    2. 创建特定实例,并设置属性 vmware:vgpu_profiles
      openstack flavor create --public --disk 20 --ram 4096 --vcpus 2 --property "vmware:vgpu_profiles=grid_t4-4q" gpu_flavor_4q
    3. gpu_flavor_4q 引导实例。
      openstack server create --flavor gpu_flavor_4q --image Photo3 --network net1 gpu_inst1
    4. 创建特定实例,在不同的配置文件中设置属性 vmware:vgpu_profiles。
      openstack flavor create --public --disk 20 --ram 4096 --vcpus 2 --property "vmware:vgpu_profiles=grid_t4-8a" gpu_flavor_8a
    5. gpu_flavor_8a 引导实例。
      openstack server create --flavor gpu_flavor_8a --image Photo3 --network net1 gpu_inst2
  3. 创建具有两个 GPU 配置文件的实例。
    1. 按照NVIDIA GRID vGPU中所述配置 nova-compute.conf。
    2. 创建特定实例,在两个 GPU 配置文件中设置属性 vmware:vgpu_profiles
      openstack flavor create --public --disk 20 --ram 4096 --vcpus 2 --property "vmware:vgpu_profiles=grid_t4-16q,grid_t4-16q" gpu_flavor_2_profiles
    3. gpu_flavor_2_profiles 引导实例。
      openstack server create --flavor gpu_flavor_2_profiles --image Photo3 --network net1 gpu_inst3
  4. 关闭某些实例的电源以释放显卡空间。

    如果没有未使用的显卡,要引导具有不同 GPU 配置文件的实例,则必须关闭某些实例的电源。

    1. 验证对不匹配的资源提供程序的修复。
      如果看到以下日志,表示某些资源提供程序与 ESXi 中的 GPU 使用不匹配。
      osctl exec -it <compute-pod-name> -- bash -c "export PYTHONWARNINGS=\"ignore:Unverified HTTPS request\" && nova-manage --config-file /tmp/share/nova-compute.conf --config-file /etc/nova/nova.conf graphic validate_instance_vgpu --fix true
      按以下方式更改日志:
      instance 718bb1c4-c0ec-40a9-9ebd-c9ab97e85c9d's graphic_str NVIDIATesla T4 (host_40478:0000:03 does not match provider NVIDIATesla T4 (host_40478:0000:82
      Fix the provider for instance 718bb1c4-c0ec-40a9-9ebd-c9ab97e85c9d
      move 9b2901c2-3646-5cef-9664-81c6483d5687 to 95e5f2c3-54ad-51f9-9002-66dc8b93ce5c
      
      要解决此问题,请添加 --fix 命令。
      instance 9e7c44f9-129a-4264-ab40-d369e6b8dab9 matches
      instance ba155ebc-b59b-4b7a-80f8-4afbd98cd1aa matches
      instance 30c57985-56c9-43bb-96be-305eb5e4742e matches
      instance 609cbc58-8a34-4d52-962c-4acc2496994c matches
      Done
    2. 列出 Nova 计算节点内具有 GPU 设备的虚拟机。可以在特定的 Nova 计算 Pod 中运行此命令。
      nova-manage --config-file /tmp/share/nova-compute.conf --config-file /etc/nova/nova.conf graphic list_vms_by_device
      
      +--------------+----------------+--------------+-------------------------------------------------------+---------------+
      | Host Name | Device Name | pciId | VM Name | Profile Names |
      +--------------+----------------+--------------+-------------------------------------------------------+---------------+
      | 10.196.4.135 | NVIDIATesla T4 | 0000:03:00.0 | inst_def-3 (718bb1c4-c0ec-40a9-9ebd-c9ab97e85c9d) | [grid_t4-2q] |
      | 10.196.4.135 | NVIDIATesla T4 | 0000:03:00.0 | inst_def-2 (9e7c44f9-129a-4264-ab40-d369e6b8dab9) | [grid_t4-2q] |
      | 10.196.4.135 | NVIDIATesla T4 | 0000:03:00.0 | inst_def-5 (ba155ebc-b59b-4b7a-80f8-4afbd98cd1aa) | [grid_t4-2q] |
      | 10.196.4.135 | NVIDIATesla T4 | 0000:82:00.0 | yingji-t4-4q-1 (7b6769b4-015f-4d3d-ad0e-ab2236cb9343) | [grid_t4-4q] |
      | 10.196.4.135 | NVIDIATesla T4 | 0000:82:00.0 | yingji-t4-4q-3 (8c853458-539f-4b08-b208-518c88f24e86) | [grid_t4-4q] |
      | 10.196.4.135 | NVIDIATesla T4 | 0000:82:00.0 | yingji-t4-4q-2 (8db11b02-45ac-4837-8e82-2ebe0b84bd08) | [grid_t4-4q] |
      +--------------+----------------+--------------+-------------------------------------------------------+---------------+
      
      For the instance with 2 grid_t4-16q profiles, the display looks like below.
      
      +--------------+----------------+--------------+---------+----------------------------+
      
      |  Host Name   |  Device Name   |    pciId     | VM Name |       Profile Names        |
      
      +--------------+----------------+--------------+---------+----------------------------+
      
      | 10.196.4.135 | NVIDIATesla T4 | 0000:03:00.0 |  vm-08  | [grid_t4-16q, grid_t4-16q] |
      
      | 10.196.4.135 | NVIDIATesla T4 | 0000:82:00.0 |  vm-08  | [grid_t4-16q, grid_t4-16q] |
      
      +--------------+----------------+--------------+---------+----------------------------+
      
      对于具有两个 grid_t4-16q 配置文件的实例,显示内容如下所示:
      +--------------+----------------+--------------+---------+----------------------------+
      
      |  Host Name   |  Device Name   |    pciId     | VM Name |       Profile Names        |
      
      +--------------+----------------+--------------+---------+----------------------------+
      
      | 10.196.4.135 | NVIDIATesla T4 | 0000:03:00.0 |  vm-08  | [grid_t4-16q, grid_t4-16q] |
      
      | 10.196.4.135 | NVIDIATesla T4 | 0000:82:00.0 |  vm-08  | [grid_t4-16q, grid_t4-16q] |
      
      +--------------+----------------+--------------+---------+----------------------------+
      VMware Integrated OpenStack Manager 中运行命令。
      osctl exec -it <compute-pod-name> -- bash -c "export PYTHONWARNINGS=\"ignore:Unverified HTTPS request\" && nova-manage --config-file /tmp/share/nova-compute.conf --config-file /etc/nova/nova.conf --log-file /tmp/nova-manage.log graphic list_vms_by_device"
    3. 从输出中,我们可以看到主机 10.196.4.135 上具有两个地址为 0000:03:00.00000:82:00.0 的显卡。使用的两个配置文件网格是 grid_t4-2qgrid_t4-4q。因此,没有网卡可用于具有其他配置文件的实例。要使用其他 vgpu-profile 引导 实例,必须释放一些显卡。要释放 10.196.4.135 上地址为 0000:03:00.0 的设备,必须关闭实例 inst_def-3inst_def-2inst_def-5 的电源。您必须在工具箱中使用 OpenStack 命令。
      注: 请勿从 vCenter Web 控制台关闭虚拟机电源。
      openstack server stop inst_def-3 inst_def-2 inst_def-5