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 代理将自动将此特征设置为资源提供程序摘要,如果 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)。
其他部署者影响¶
无
开发人员影响¶
无
升级影响¶
此规范将更新调度过程。如果主机上支持此功能,新的特征
COMPUTE_NET_VIRTIO_PACKED将自动设置为资源提供程序特征列表。将提供新的功能和单元测试。
实现¶
负责人¶
- 主要负责人
justas_napa 在 IRC 和 Gerrit
Napatech 开发人员可以实现此功能 dvo-plv@napatech.com 和 obu-plv@napatech.com。
功能联络人¶
Sean Mooney (sean-k-mooney)
工作项¶
目前阶段不适用。
依赖项¶
无
测试¶
无
文档影响¶
配置选项参考需要更新。
参考资料¶
历史¶
发布名称 |
描述 |
|---|---|
2023.1 Bobcat |
引入 |