Port NUMA 亲和性策略¶
https://bugs.launchpad.net/neutron/+bug/1886798
为“port”对象添加一个新的参数来设置 NUMA 亲和性策略。
问题描述¶
目前 Nova 允许为 PCI 设备定义“numa_affinity_policy”。这些 PCI 设备可以是网络卡,例如。当使用此物理设备(具有 VNIC 类型“direct”、“direct-physical”、“macvtap”或“virtio-forwarder”的 SR-IOV port)创建 port 时,Nova 将根据 host NUMA 拓扑可用性和与此 PCI 网络设备关联的 NUMA 节点来选择生成虚拟机的 host [1]。
但是,对于 SR-IOV 以外的其他后端,目前无法进行此过滤。例如,使用 DPDK 的 Open vSwitch 将运行连接到特定 CPU 核心(以及特定 NUMA 节点)的 PMD 线程 [2]。Nova 通过为每个定义的物理或隧道网络分配一组 NUMA 节点来表示此信息 [3]。如果提供了 port NUMA 亲和性策略,Nova 将在调度期间强制执行它。
提议的变更¶
此 spec 的目标是创建一个适用于所有 port 的“numa_affinity_policy”参数。此信息将提供给 Nova,Nova 将在调度虚拟机时使用它,而与网络后端无关。
当然,Nova 应该具有网络后端 NUMA 信息拓扑。例如,由于 [3],Nova 可以静态配置物理网络的 NUMA 位置。使用 port “numa_affinity_policy”参数,Nova 调度器将过滤与所需策略匹配的那些 host。
此 spec 涵盖了 [4] 中定义的缺失情况。为每个 port(接口)定义 NUMA 亲和性策略,包括所有类型的 port,而不仅仅是 SR-IOV 接口。它还避免在 Nova flavor 中定义 NUMA 亲和性;相反,可以使用具有不同策略的通用 flavor。
此 spec 建议为“port”对象添加一个新的参数。此参数“numa_affinity_policy”将是一个字符串,定义基于 Nova 中定义的 PCINUMAAffinityPolicy [5] enum 的 NUMA 亲和性策略。该字段可以具有不同的值:“required”、“legacy”和“preferred”。
此信息将在告知 Nova 时填充到“port”字典中。此参数将作为 port 字典中的一个新扩展,以名为“numa_affinity_policy”的新字段添加。默认情况下,此新参数的值将为“None”,以保持向后兼容性。
数据模型影响¶
将创建一个名为“portnumaaffinitypolicy”的新表
属性名称 |
类型 |
CRUD |
默认值 |
验证/转换 |
|---|---|---|---|---|
port_id |
uuid-str |
R |
||
numa_affinity_policy |
str |
CRU |
无 |
枚举(包括 None) |
此子表将依赖于“ports”表。每一行将与“port”行具有 1:1 的关系,并且当“port”行也被删除时,将删除该行。
REST API 影响¶
“port”API 中的“numa_affinity_policy”参数
NUMA_AFFINITY_POLICY_VALUES = (None, 'required', 'preferred', 'legacy')
RESOURCE_ATTRIBUTE_MAP = {
'port': {
'numa_affinity_policy': {
'allow_post': True,
'allow_put': True,
'validate': {'type:values': NUMA_AFFINITY_POLICY_VALUES}
'default': None,
'is_visible': True}
}
}
仅当 port 未绑定时,才能更新该参数。此检查不依赖于 API,而是依赖于服务器。
安全影响¶
无
性能影响¶
无
操作员 CLI 影响¶
将在“port”CLI 接口的 create、set 和 unset 命令中添加一个额外的参数。
用于记录资源
openstack port create [--numa-policy-required | --numa-policy-preferred |
--numa-policy-legacy]
openstack port set [--numa-policy-required | --numa-policy-preferred |
--numa-policy-legacy]
openstack port unset --numa-policy
实现¶
负责人¶
- 主要负责人
Rodolfo Alonso Hernandez <ralonsoh@redhat.com> (IRC: ralonsoh)
测试¶
单元测试
功能测试
API 测试
文档影响¶
用户文档¶
为操作员将 CLI 用法添加到网络指南中。