4.2. 配置仿真程序线程


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

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

注意

为避免数据包丢失,您永远不会在 NFV 部署中抢占 vCPU。确保将仿真程序线程配置为在与 NFV 工作负载不同的 CPU 上运行。

警告

您只能配置整个节点集。不支持在节点集合中重新配置节点的子集。如果您需要在节点集合中重新配置节点子集,您必须缩减节点设置,并从之前删除的节点创建新节点集。

先决条件

流程

  1. 要为仿真程序线程配置节点,请创建或更新名为 nova-extra-config.yamlConfigMap CR,并在 [compute] 下设置 cpu_dedicated_set 参数的值。例如,以下配置使用 32 核 CPU 在 Compute 节点上设置专用 CPU:

    apiVersion: v1
    kind: ConfigMap
    metadata:
       name: nova-extra-config
       namespace: openstack
    data:
       33-nova-emulator-threads.conf: |
         [compute]
         cpu_dedicated_set = 2-15,18-31
  2. 要为仿真程序线程保留物理 CPU 内核,请配置 cpu_shared_set 参数。例如,以下配置使用 32 核 CPU 在 Compute 节点上设置共享 CPU:

        [compute]
        cpu_shared_set = 0,1,16,17
    注意

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

  3. 创建新的 OpenStackDataPlaneDeployment CR,以在 data plane 节点上配置服务并部署数据平面,并将它保存到工作站上名为 compute_emulator_threads_deploy.yaml 的文件中:

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneDeployment
    metadata:
      name: openstack-emulator-threads
  4. compute_emulator_threads_deploy.yaml 中,指定 nodeSets 以包含您要部署的所有 OpenStackDataPlaneNodeSet CR。确保包含您选择的 OpenStackDataPlaneNodeSet CR。该 OpenStackDataPlaneNodeSet CR 定义您要为仿真程序线程指定的节点。

    警告

    如果您的部署有多个节点集,对 nova-extra-config.yaml ConfigMap 的更改可能会直接影响多个节点集,具体取决于节点集和 DataPlaneServices 的配置方式。要检查节点集是否使用 nova-extra-config ConfigMap,因此会受到重新配置的影响,请完成以下步骤:

    1. 检查节点集的服务列表,并查找指向 nova 服务的 OpenStackDataPlaneService CR 的名称。
    2. 确保 OpenStackDataPlaneService CR 的 edpmServiceType 字段的值设置为 nova

      如果 OpenStackDataPlaneService CR 的 dataSources 列表包含名为 nova-extra-configconfigMapRef,则此节点会使用此 ConfigMap,因此会受到此 ConfigMap 中的配置更改的影响。如果某些受影响的节点集合不应重新配置,您必须创建一个指向这些节点集的单独 ConfigMapOpenStackDataPlaneService CR。

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneDeployment
    metadata:
      name: openstack-emulator-threads
    spec:
      nodeSets:
        - openstack-edpm
        - compute-emulator-threads
        - my-data-plane-node-set
        - ...
        - <nodeSet_name>
    • <nodeSet_name > 替换为您要包含在 data plane 部署中的 OpenStackDataPlaneNodeSet CR 的名称。
  5. 保存 compute_emulator_threads_deploy.yaml 部署文件。
  6. 部署数据平面:

    $ oc create -f compute_emulator_threads_deploy.yaml
  7. 验证 data plane 是否已部署:

    $ oc get openstackdataplanenodeset
    NAME STATUS MESSAGE
    compute-emulator-threads True Deployed
  8. 访问 openstackclient 的远程 shell,并验证部署的 Compute 节点是否在 control plane 上可见:

    $ oc rsh -n openstack openstackclient
    $ openstack hypervisor list
  9. 配置一个类别,该类别在专用 CPU 上运行实例的仿真程序线程,该 CPU 从使用 cpu_shared_set 配置的共享 CPU 中选择:

    $ openstack --os-compute-api=2.86 flavor set --property hw:cpu_policy=dedicated \
    --property hw:emulator_threads_policy=share \
    dedicated_emulator_threads

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

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部