25.4. 更新 CPU 固定参数

Red Hat OpenStack Platform 16.1 使用新参数进行 CPU 固定:

NovaComputeCpuDedicatedSet
设置专用(固定)CPU。
NovaComputeCpuSharedSet
设置共享(未固定)CPU。

在完成升级到 Red Hat OpenStack Platform 16.1 后,您必须将 CPU 固定配置从 NovaVcpuPinSet 参数迁移到 NovaComputeCpuDedicatedSetNovaComputeCpuSharedSet 参数。

流程

  1. stack 用户的身份登录 undercloud。
  2. 如果您的 Compute 节点支持并发多线程(SMT),但创建了带有 hw:cpu_thread_policy=isolate 策略的实例,您必须执行以下选项之一:

    • 取消设置 hw:cpu_thread_policy 线程策略并调整实例大小:

      1. 提供 overcloud 身份验证文件:

        $ source ~/overcloudrc
      2. 取消设置类别的 hw:cpu_thread_policy 属性:

        (overcloud) $ openstack flavor unset --property hw:cpu_thread_policy <flavor>
        注意
        • 取消设置 hw:cpu_thread_policy 属性可将策略设置为默认的 prefer 策略,这会将实例设置为使用启用了 SMT 的 Compute 节点(如果可用)。您还可以将 hw:cpu_thread_policy 属性设置为 require,这将为启用 SMT 的 Compute 节点设置硬要求。
        • 如果 Compute 节点没有 SMT 架构或足够的 CPU 内核,则调度将失败。要防止这种情况,将 hw:cpu_thread_policy 设置为 prefer 而不是 require。默认 首选 策略确保线程同级在可用时被使用。
        • 如果使用 hw:cpu_thread_policy=isolate,则必须禁用 SMT,或使用不支持 SMT 的平台。
      3. 将实例转换为使用新的线程策略。

        (overcloud) $ openstack server resize --flavor <flavor> <server>
        (overcloud) $ openstack server resize confirm <server>

        使用 hw:cpu_thread_policy=isolated 策略为所有固定实例重复此步骤。

    • 从 Compute 节点迁移实例,并在 Compute 节点上禁用 SMT:

      1. 提供 overcloud 身份验证文件:

        $ source ~/overcloudrc
      2. 禁用 Compute 节点接受新虚拟机:

        (overcloud) $ openstack compute service list
        (overcloud) $ openstack compute service set <hostname> nova-compute --disable
      3. 从 Compute 节点迁移所有实例。有关实例迁移的更多信息,请参阅 在 Compute 节点之间迁移虚拟机实例
      4. 重新引导 Compute 节点,并在 Compute 节点的 BIOS 中禁用 SMT。
      5. 引导 Compute 节点。
      6. 重新启用 Compute 节点:

        (overcloud) $ openstack compute service set <hostname> nova-compute --enable
  3. Source stackrc 文件:

    $ source ~/stackrc
  4. 编辑包含 NovaVcpuPinSet 参数的环境文件。
  5. 将 CPU 固定配置从 NovaVcpuPinSet 参数迁移到 NovaComputeCpuDedicatedSetNovaComputeCpuSharedSet

    • NovaVcpuPinSet 的值迁移到之前用于固定实例的主机的 NovaComputeCpuDedicatedSet
    • NovaVcpuPinSet 的值迁移到之前用于未固定实例的主机的 NovaComputeCpuSharedSet
    • 如果没有为 NovaVcpuPinSet 设置值,则所有 Compute 节点内核都应分配给 NovaComputeCpuDedicatedSetNovaComputeCpuSharedSet,具体取决于您要在节点上托管的实例类型。

    例如,您之前的环境文件可能包含以下固定配置:

    parameter_defaults:
      ...
      NovaVcpuPinSet: 1,2,3,5,6,7
      ...

    要将配置迁移到固定配置,请设置 NovaComputeCpuDedicatedSet 参数,然后取消设置 NovaVcpuPinSet 参数:

    parameter_defaults:
      ...
      NovaComputeCpuDedicatedSet: 1,2,3,5,6,7
      NovaVcpuPinSet: ""
      ...

    要将配置迁移到未固定配置,请设置 NovaComputeCpuSharedSet 参数,然后取消设置 NovaVcpuPinSet 参数:

    parameter_defaults:
      ...
      NovaComputeCpuSharedSet: 1,2,3,5,6,7
      NovaVcpuPinSet: ""
      ...
    重要

    确保 NovaComputeCpuDedicatedSetNovaComputeCpuSharedSet 的配置与 NovaVcpuPinSet 中定义的配置匹配。要更改其中任一个的配置,或配置 NovaComputeCpuDedicatedSetNovaComputeCpuSharedSet,请确保在更新配置前,使用固定配置的 Compute 节点不会运行任何实例。

  6. 保存该文件。
  7. 运行部署命令,以使用新的 CPU 固定参数更新 overcloud。

    (undercloud) $ openstack overcloud deploy \
        --stack _STACK NAME_ \
        --templates \
        ...
        -e /home/stack/templates/<compute_environment_file>.yaml
        ...