Libvirt: 租户控制 qemu 性能监控单元 (vPMU)¶
https://blueprints.launchpad.net/nova/+spec/libvirt-pmu-configuration
qemu/kvm 支持模拟 vPMU,以便在虚拟化环境中启用标准性能监控工具,例如 Perf。x86 CPU 上可用的 vPMU 模拟了 Intel 处理器上的硬件 PMU,并在 kernel 3.3.1 中引入 kvm。
libvirt 在 1.2.12 中引入了对 vPMU 控制的支持,请参阅 https://libvirt.org/formatdomain.html#elementsFeatures,因此 nova 支持的 libvirt 最低版本为 1.3.1,此功能可用。
本规范旨在允许租户控制何时启用 vPMU。
问题描述¶
虽然 kvm/qemu 对 vPMU 的支持通常是一项有用的功能,但收集和维护虚拟性能计数器会引入约 10us 的额外延迟,这约为 5G 端到端流量处理延迟总预算的 1%。虽然这看起来很小,但它是虚拟化引入的总延迟的重要组成部分,因此是实现端到端系统延迟目标的重要因素。
由于目前无法通过操作员或租户直接控制 vPMU 的提供,这为那些希望启用或禁用 vPMU 以避免延迟开销或依赖它来监控其工作负载性能的人们造成了问题。
用例¶
作为构建 5G 网络的电信运营商,我希望能够部署虚拟化无线接入网络 (vRAN) 应用,从而最大限度地减少虚拟化堆栈带来的延迟影响。
作为租户,我希望能够在虚拟化环境中,使用标准工具(如 perf)来监控我的应用程序的性能,以便开发、调整和分析我的应用程序。
提议的变更¶
本规范建议添加一个布尔图像元数据键 hw_pmu=True|False 和一个相应的 flavor extra spec hw:pmu=True|False,以显式启用/禁用 pmu。
默认值将为未设置,这意味着该属性既不在图像中也不在 flavor 中。这将保留当前行为。
如果将 pmu 属性设置为 true,则 libvirt xml 中的 pmu feature 元素将被设置为 on。 同样,如果将 pmu 属性设置为 false,则 pmu feature 元素将被设置为 off。 如果未指定 pmu 属性,则不会在 xml 中发出任何 pmu 元素,从而允许 qemu 确定是否应启用 pmu。
注意
当前,如果未设置,pmu 的启用/禁用基于 CPU 模式和型号。 如果 cpu_mode=host-passthough,则它将被启用;如果设置了自定义 CPU 模型,则它将被禁用。
除了上述最小更改之外,libvirt 驱动程序可以被修改为报告对 vPMU 的支持,以改善调度。 由于 Nova 的最低要求的 qemu/libvirt 支持 vPMU 功能,因此这仅在异构云中才有用。 因此,将此功能作为 trait 公开的决定留给实现,如果需要,将在 https://blueprints.launchpad.net/nova/+spec/image-metadata-prefiltering 的一部分启用。
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
图像元数据版本化通知将被扩展,以包含新添加的字段。
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
如果操作员希望使用此功能,他们需要相应地更新他们的 flavor 和/或图像。
开发人员影响¶
无
升级影响¶
无
选择在 flavor extra_spec 和图像元数据值未设置时的默认行为是为了在升级时保持向后兼容性。
实现¶
负责人¶
- 主要负责人
sean-k-mooney
工作项¶
扩展 libvirt 驱动程序配置模块以支持 pmu 元素
扩展 libvirt 驱动程序以根据 flavor/image 启用/禁用该功能
可选地启用 vPMU trait。
依赖项¶
如果选择启用将 vPMU 模拟作为 trait 的报告,则该 trait 的使用将取决于 https://blueprints.launchpad.net/nova/+spec/image-metadata-prefiltering 的完成情况。
该通用功能没有依赖关系
测试¶
这将主要通过 xml 生成和 flavor/image 处理代码的单元测试进行测试。 如果添加了 traits 支持,也可以使用 libvirt 假驱动程序实现功能测试。
文档影响¶
flavor 和 image 文档需要扩展,以记录新的 extra_spec。 Glance 元定义也将更新,以记录其使用和支持的值。
参考资料¶
无
历史¶
发布名称 |
描述 |
|---|---|
Train |
引入 |