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 |
重新提出 |