4.2. 配置仿真程序线程
Compute 节点具有与每个实例的虚拟机监控程序关联的开销任务,称为仿真程序线程。默认情况下,仿真程序线程在与实例相同的 CPU 上运行,这会影响实例的性能。
您可以将仿真程序线程策略配置为在单独的 CPU 上运行仿真程序线程与实例使用。
为避免数据包丢失,您永远不会在 NFV 部署中抢占 vCPU。确保将仿真程序线程配置为在与 NFV 工作负载不同的 CPU 上运行。
您只能配置整个节点集。不支持在节点集合中重新配置节点的子集。如果您需要在节点集合中重新配置节点子集,您必须缩减节点设置,并从之前删除的节点创建新节点集。
先决条件
- 您已启用了 CPU 固定。
-
您已选择了
OpenStackDataPlaneNodeSet自定义资源(CR),用于定义您要为仿真程序线程配置的节点。有关创建OpenStackDataPlaneNodeSetCR 的更多信息,请参阅 Deploying Red Hat OpenStack Services on OpenShift 指南中的创建数据平面。https://docs.redhat.com/en/documentation/red_hat_openstack_services_on_openshift/18.0/html/deploying_red_hat_openstack_services_on_openshift/assembly_creating-the-data-plane
流程
要为仿真程序线程配置节点,请创建或更新名为
nova-extra-config.yaml的ConfigMapCR,并在[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要为仿真程序线程保留物理 CPU 内核,请配置
cpu_shared_set参数。例如,以下配置使用 32 核 CPU 在 Compute 节点上设置共享 CPU:[compute] cpu_shared_set = 0,1,16,17注意计算调度程序还将共享集合中的 CPU 用于在共享或浮动 CPU 上运行的实例。如需更多信息,请参阅在 Compute 节点上配置 CPU 固定。
创建新的
OpenStackDataPlaneDeploymentCR,以在 data plane 节点上配置服务并部署数据平面,并将它保存到工作站上名为compute_emulator_threads_deploy.yaml的文件中:apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneDeployment metadata: name: openstack-emulator-threads在
compute_emulator_threads_deploy.yaml中,指定nodeSets以包含您要部署的所有OpenStackDataPlaneNodeSetCR。确保包含您选择的OpenStackDataPlaneNodeSetCR。该OpenStackDataPlaneNodeSetCR 定义您要为仿真程序线程指定的节点。警告如果您的部署有多个节点集,对
nova-extra-config.yamlConfigMap的更改可能会直接影响多个节点集,具体取决于节点集和DataPlaneServices的配置方式。要检查节点集是否使用nova-extra-configConfigMap,因此会受到重新配置的影响,请完成以下步骤:-
检查节点集的服务列表,并查找指向
nova服务的OpenStackDataPlaneServiceCR 的名称。 确保
OpenStackDataPlaneServiceCR 的edpmServiceType字段的值设置为nova。如果
OpenStackDataPlaneServiceCR 的dataSources列表包含名为nova-extra-config的configMapRef,则此节点会使用此ConfigMap,因此会受到此ConfigMap中的配置更改的影响。如果某些受影响的节点集合不应重新配置,您必须创建一个指向这些节点集的单独ConfigMap的OpenStackDataPlaneServiceCR。
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 部署中的OpenStackDataPlaneNodeSetCR 的名称。
-
检查节点集的服务列表,并查找指向
-
保存
compute_emulator_threads_deploy.yaml部署文件。 部署数据平面:
$ oc create -f compute_emulator_threads_deploy.yaml验证 data plane 是否已部署:
$ oc get openstackdataplanenodeset NAME STATUS MESSAGE compute-emulator-threads True Deployed访问
openstackclient的远程 shell,并验证部署的 Compute 节点是否在 control plane 上可见:$ oc rsh -n openstack openstackclient $ openstack hypervisor list配置一个类别,该类别在专用 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 线程策略。