3.2. 配置仿真程序线程

Compute 节点具有与每个实例的虚拟机监控程序关联的开销任务,称为仿真程序线程。默认情况下,仿真程序线程与实例在同一 CPU 上运行,这会影响实例的性能。

您可以将仿真程序线程策略配置为在独立 CPU 上运行仿真程序线程,以用于实例使用的 CPU。

注意

为避免数据包丢失,不得在 NFV 部署中抢占 vCPU。

流程

  1. stack 用户的身份登录 undercloud。
  2. 打开您的计算环境文件。
  3. 要为需要 CPU 固定的实例保留物理 CPU 内核,请在计算环境文件中配置 NovaComputeCpuDedicatedSet 参数。例如,以下配置在带有 32 核 CPU 的 Compute 节点上设置专用 CPU:

    parameter_defaults:
      ...
      NovaComputeCpuDedicatedSet: 2-15,18-31
      ...

    如需更多信息,请参阅在 Compute 节点上配置 CPU 固定

  4. 要为仿真程序线程保留物理 CPU 内核,请在计算环境文件中配置 NovaComputeCpuSharedSet 参数。例如,以下配置在带有 32 核 CPU 的 Compute 节点上设置共享 CPU:

    parameter_defaults:
      ...
      NovaComputeCpuSharedSet: 0,1,16,17
      ...
    注意

    计算调度程序也对在共享或浮动 CPU 上运行的实例使用共享集合中的 CPU。如需更多信息,请参阅在 Compute 节点上配置 CPU 固定

  5. 将 Compute 调度程序过滤器 NUMATopologyFilter 添加到 NovaSchedulerDefaultFilters 参数中(如果不存在)。
  6. 使用其他环境文件将计算环境文件添加到堆栈中,并部署 overcloud:

    (undercloud)$ openstack overcloud deploy --templates \
     -e [your environment files] \
     -e /home/stack/templates/<compute_environment_file>.yaml
  7. 配置一个类别,其在专用 CPU 上运行实例仿真程序线程,该 CPU 从使用 NovaComputeCpuSharedSet 配置的共享 CPU 中选择:

    (overcloud)$ openstack flavor set --property hw:cpu_policy=dedicated \
     --property hw:emulator_threads_policy=share \
     dedicated_emulator_threads

    有关 hw:emulator_threads_policy 的配置选项的更多信息,请参阅 类别元数据中的 仿真程序线程 策略