Improvement缩写_Improvements._improvements

腾小云导读

在刚刚结束的全球虚拟化顶级技术峰会 KVM Forum 上,2023年度全球企业 KVM 开源贡献榜正式发布。腾讯云连续七年入围,继续成为贡献度最高的中国企业。其中,腾讯云自研的 PMU improvements 方案,被评为 KVM 年度核心突破。

通过为云上业务构建性能优化分析的基础框架,为开发者提供值得信赖的性能量化工具,以加速在不同业务上实现降本增效的目标。在业界,越来越多的云厂商也开始支持在虚拟机中使用 PMU 工具来优化它们目标负载的性能。

Improvement缩写_Improvements._improvements

其中 PMU improvements 这项突破,其背后就包括了腾讯云过去一年参与的十几项贡献,包括:

在腾讯云去年贡献的 Guest PEBS 基础上,今年的 Guest 可以进一步获得两种 Intel SPR 平台上的新能力。其中一种能力被称为精确分配指令退休(PDIR)特性被增强为指令精确 PDIR(PDIR++),它的 PEBS 是直接在导致溢出的指令之后的下一条指令上生成。另一个新的精确分布(PDist)设施,消除了 PEBS 的任何滑动效应,PEBS 记录将在导致计数器溢出的指令或操作完成后精确生成。上述两个新能力将帮助PEBS成为目前最精确的性能与指令定位工具。

与此同时,云计算市场已经注意到 AMD 计算平台的优势,基于AMD的虚拟机实例数量呈指数增长,相应的 vPMU 需求也迫在眉睫。腾讯云利用在这方面的技术积累,及时地向社区增加了 AMD Zen4 平台上的性能分析虚拟化支持,其中一个新特性 AMD PerfMon V2 已被社区接收,这将有助于我们的客户在腾讯云的 AMD 实例上更高效低开销的方式使用 PMU 计数器,特别是在多计数器同时被使用的场景中降低 PMU 性能分析工具对业务负载的干扰。

AMD Performance Monitoring V2 是 AMD 在 Zen4 平台上推出的最新一代PMU硬件技术,将允许软件系统架构化地检测核心性能计数器数量而不是使用静态配置,另一个核心变动是其拥有全新的 “全局控制” 寄存器,允许同时启用或禁用多个性能计数器,而在此之前软件想使用 AMD 性能监控功能必须逐一单独设置不同的性能计数器。上游 Linux 内核在v5.18开发周期中获得了母机上对 AMD PerfMon V2 的支持。

AMD PerfMon V2 在 Linux 启动阶段被识别并初始化

腾讯云的开源团队很快注意到了这项新特性,并意识到这项特性在虚拟化技术中拥有更大的应用价值。

在以往的 AMD 虚拟机实例中,PMU 的软件代理(往往是PMU驱动),需要根据用户指定的性能事件来配置性能计数器(PMC)的事件选择寄存器,并通过同一个事件选择寄存器来启用该计数器,并在一段时间后再次通过同一个事件选择寄存器来禁用计数器,通过启用和禁用这个时间段内,前后两次性能事件发生的次数变化,为当前负载提供性能分析数据。

此项流程在只使用单个性能计数器时可以按预期工作,但当 PMU 软件代理使用多个性能计数器时,就会出现需要多次访问不同的事件选择寄存器,并通过不同的事件选择寄存器来启用不同的性能计数器。这里就会引入计数器先后启动的误差,即在最初启动的性能计数器将包含后续启动性能计数器时执行的指令所产生的性能事件,这部分性能事件来自 PMU 软件代理,而非业务负载本身,即一部分性能事件并不来自目标业务负载,由此产生的性能分析误差就会误导 PMU 数据的分析者。这部分误差也会出现在多个性能计数器被禁用的时候。

PMU 软件代理在向上层汇报数据时需要提前感知到这部分误差并合理剥除,这在不同性能事件的通用性处理上并不容易。在虚拟化实现上,配置多个性能寄存器而产生的多次事件选择寄存器访问,将会带来同样次数的虚拟化退出,这部分退出在虚拟机使用多个性能计数器时增加了虚拟化开销。

improvements_Improvements._Improvement缩写

通过AMD Guest PerfMon V2技术降低虚拟机退出次数

在拥有 PerfMon V2 的 AMD 平台上,PMU 软件代理可以先后配置好不同的事件选择寄存器,再通过新引入的“全局控制” 寄存器,统一控制多个性能计数器的开关状态,在微架构层面实现多个计数器的同时启用与关闭,避免了之前计数器先后启用带来的性能事件误差。

在虚拟化实现上,多次性能计数器开关产生的多次虚拟机退出可以合并成单次“全局控制” 寄存器访问产生的虚拟机退出,在虚拟机使用多个性能计数器的场景中,大幅度降低了虚拟机退出次数。此外在 V2 中引入的全局 STATUS 寄存器与全局 OVF_CTRL 寄存器,通过为每一个计数器增加溢出判断逻辑,优化了多个性能计数器在同时被使用时产生溢出之后的判断逻辑。利用 AMD GuestPerfMon V2 虚拟化技术,AMD 虚拟机也能获得物理机级别的性能监控,同时大幅度降低了性能监控单元的虚拟化成本、提升了多计数器使用场景的准确性。

此类多次转化为单次的优化思路,需要硬件访问接口的设计改动,当真实硬件出现此类设计改动时,也让虚拟化功能从中受益。在内核代码实现上,AMD Guest PerfMon V2 将会出现在 v6.5 内核中,腾讯云工程师还重构了 AMD 此前的 vPMU 实现,提升性能的同时,通过与Intel硬件共享虚拟化处理逻辑来降低上游社区的维护负担。

透过层层隔离的复杂环境抽丝剥茧,我们希望虚拟机的虚拟化开销更低、性能更强。也希望每一个我们的客户不必搞懂这些深度抽象的底层技术,就能在腾讯云上把云用好。

与此同时,腾讯云将继续投身开源社区以繁荣开源虚拟化技术栈,利用一项项技术突破继续推进腾讯云技术研发与开源贡献,继续提供业界领先的云计算服务。

improvements_Improvements._Improvement缩写

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注