9.3. 配置 Nova PCI 透传的指南
-
在配置 PCI 透传时不要使用
devname参数,因为 NIC 的设备名称可能会改变。反之,使用vendor_id和product_id,因为它们更为稳定,或使用 NIC 的 PCI 设备地址。 -
使用
address参数或product_id通过特定的物理功能(PF)。如果您有同一product_id的多个 PF,则当类别中请求具有相同product_id的别名时,计算服务会使用其中任何这些设备。address参数始终是唯一的。 -
要传递所有虚拟功能(VF),请只指定您要用于 PCI 透传的 VF 的
product_id和vendor_id。如果您使用 SRIOV 进行 NIC 分区,且您在 VF 上运行 OVS,则还必须指定 VF 的地址。 要只传递 PF 的 VF,而不是 PF 本身,您可以使用 address 参数指定 PF 和
product_id的 PCI 地址,以指定 VF 的产品 ID。- 配置 PCI 设备地址参数
-
address参数指定设备的 PCI 地址。您可以使用字符串或字典映射来设置address参数的值。 - 字符串格式
如果使用字符串指定地址,您可以包含通配符 rolebinding,如下例所示:
alias = {"name": "a1", "address": "*:0a:00.*", "physical_network": "physnet1"}- 字典格式
如果使用字典格式指定地址,您可以包含正则表达式语法,如下例所示:
[pci] device_spec = {"address":{"domain": ".*", "bus": "02", "slot": "01", "function": "[0-2]"}, physical_network: "net1"}Compute 服务将地址字段的配置限制为以下最大值:
Expand address 字段
最大值
domain
0xFFFF
Bus
0xFF
slot
0x1F
function
0x7
计算服务支持带有 16 位地址域的 PCI 设备。计算服务忽略具有 32 位地址域的 PCI 设备。
您可以通过在配置中添加 numa_policy 来为 PCI 透传设备指定默认的 NUMA 关联性策略。例如:
alias = {"name":"a1", "product_id":"1572", "vendor_id": "8086", "device_type": "type-PF", "numa_policy": "preferred"}
您可以为 numa_policy 选择四个值之一。
| value | 描述 |
|---|---|
|
| 计算服务会创建一个实例,它只有在至少一个实例的一个 NUMA 节点与 PCI 设备有关联性时才请求 PCI 设备。这个选项提供最佳性能。 |
|
| 计算服务会尝试根据 NUMA 关联性选择 PCI 设备。如果不可能,计算服务将实例调度到没有与 PCI 设备关联性的 NUMA 节点上。 |
|
| (默认)计算服务创建在以下情况之一请求 PCI 设备的实例:
|
|
| 计算服务会创建一个实例,它只有在至少一个实例 NUMA 节点与与 PCI 设备相同的主机套接字中与 NUMA 节点关联时才请求 PCI 设备。例如,以下主机架构有两个套接字,每个套接字都有两个 NUMA 节点,PCI 设备连接到其中一个套接字中的一个节点。 + image::../_images/NUMA_node_socket.png[NUMA 节点关联性与 PCI 设备在同一主机套接字中的 NUMA 节点]
Compute 服务可以将带有两个 NUMA 节点的实例固定到以下主机节点组合,因为它们至少有一个实例 NUMA 节点固定到 PCI 设备的套接字:
实例无法固定到的主机节点的唯一组合是节点 2 和节点 3,因为这些节点都没有与 PCI 设备位于同一个插槽上。如果其他节点由其他实例使用,且只有节点 2 和 3 可用,则实例将无法引导。 |