VirtIO 紧凑环配置支持

https://blueprints.launchpad.net/nova/+spec/virtio-packedring-configuration-support

此蓝图建议暴露 LibVirt 的 packed 选项,该选项允许客户机协商支持 VirtIO 紧凑环功能。此蓝图用于征求社区的意见。

问题描述

使用 Virtio-net 准虚拟网络设备的虚拟机使用虚拟队列 (virtqs) 在 virtio-net 驱动程序和虚拟或物理后端之间发送和接收数据。VirtIO 标准最初定义了一种名为 split-ring 队列的 virtq 类型。该标准的最新版本 (v1.1) 添加了另一种类型的 virtq,称为 packed-ring 队列。队列元素的不同布局可以在虚拟和物理后端中提高性能。

Split-ring 支持是 VirtIO 中的默认选项。支持 packed-ring virtqs 的后端通过在功能协商期间设置 VIRTIO_F_RING_PACKED 功能位来通告这一点。客户机驱动程序然后根据其支持的内容选择 virtq 布局。由于两种选项在功能上相同,并且 packed-ring 更有效,因此通常选择后者。

QEMU 在 v4.2 中添加了对 packed virtqs 的支持,LibVirt 在 v6.3 中添加了支持。Qemu 和 LibVirt 通过 packed 选项支持 packed-ring virtqs。但是,请注意,此选项不会强制虚拟机使用 packed-ring virtq。当设置时,它充当掩码,允许后端通告支持。虚拟机中的驱动程序仍然负责选择 virtqs 的布局。

此蓝图建议添加 Nova flavor extra_spec 和 Glance 镜像属性,在节点上将 packed 选项设置为 true。这样,运行在节点上的所有虚拟机都可以根据后端提供的内容选择 virtq 布局,而不是被强制使用 split-ring。

用例

作为操作员,我希望通过使用更高效的 virtq 结构来受益于 virtio-net 性能的提升。

提议的变更

  • 为镜像属性添加 hw_virtio_packed_ring,为 flavor extra specs 添加 hw:virtio_packed_ring。用户将控制 packed virtqueue 功能,并能够根据需要禁用它。

    hw_virtio_packed_ring=true|false (默认 false) hw:virtio_packed_ring=true|false (默认 false)

  • 提供新的计算 COMPUTE_NET_VIRTIO_PACKED 能力特征。用户可以要求/禁止此特征。Nova-compute 代理将自动将此特征设置为资源提供程序摘要,只要 OpenStack 的当前最小 libvirt 支持版本高于功能所需版本 6.3。

  • 此规范将更新调度过程。ALL_REQUEST_FILTERS 将扩展为新的过滤器 packed_virtqueue_filter。如果镜像属性或 flavor extra_spec 已启用,它将更新 RequestSpec 中的新特征,以避免迁移到不支持 packed virtqueue 功能的节点。

备选方案

保持不变,操作员不会有额外的性能影响。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

使用 virtio-net 的虚拟机将看到性能提升。提升幅度可能在 10/20% 之间(参见 DPDK Intel Vhost/virtio 性能报告)到 75%(使用 Napatech SmartNIC)。

其他部署者影响

开发人员影响

升级影响

如果操作员逐个升级他们的计算节点,只有新升级的计算节点才能在一段时间内支持该功能。

实现

负责人

主要负责人

justas_napa 在 IRC 和 Gerrit

其他指派人

dvo-plv 在 IRC 和 Gerrit

功能联络人

  • Sean Mooney (sean-k-mooney)

工作项

  • 添加镜像属性和 flavor extra specs

  • 提供新的计算能力特征

  • 更新调度过程

依赖项

测试

将添加新的单元和功能测试
  • 验证镜像属性和 flavor extra spec 选项是否正确配置。

  • 验证按特征过滤节点。

  • 验证带有驱动程序数据包选项配置的正确 Libvirt xml。

文档影响

配置选项参考需要更新。

参考资料

历史

修订版

发布名称

描述

2023.1 Antelope

引入

2023.2 Bobcat

已接受

2024.1 Caracal

重新提出