当前位置:龙泉人才网 - 科技 -

被评为KVM年度核心突破PMU improvements到底是什么?

  • 科技
  • 2023-07-04 10:28
  • CSDN

被评为KVM年度核心突破PMU improvements到底是什么?

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

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

被评为KVM年度核心突破PMU improvements到底是什么?

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

在Intel SPR及其后续的新机型上支持Guest PEBS功能(包括两个特殊特性PRIP++和PDist)

修复对Guest PBES在计数器交叉映射时的跟踪

避免普通计数器与PEBS计数器在虚拟化实现上的混用

增加了KVM在支持vPMU时对host perf子系统依赖的检查

取消了KVM对最大通用计数器数量的推测并给予了明确限制

将性能事件过滤器机制应用到模拟指令

推迟模拟指令溢出注入中断的时机

新增了一套更通用的事件过滤机制与用户态接口

增强了性能事件过滤器机制的掩码判断范围

修复了KVM在用户态反复更新vPMU能力时的不同步

禁止在Arch LBR机器上去支持Legacy LBR

重写了关键函数与执行顺序以提升性能

重写了vPMU在AMD上的部分实现以得到更好的可拓展性

避免特殊用途的零采样周期事件被错误释放

重写了KVM对vCPU上下文保存与恢复时的寄存器跟踪方式

暂时在混合CPU上禁止vPMU已避免随机的访问错误

诸多代码重构与文档维护等。

在腾讯云去年贡献的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的支持。

被评为KVM年度核心突破PMU improvements到底是什么?

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

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

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

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

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

被评为KVM年度核心突破PMU improvements到底是什么?

通过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硬件共享虚拟化处理逻辑来降低上游社区的维护负担。

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

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

免责声明:本文内容来源于网络或用户投稿,龙泉人才网仅提供信息存储空间服务,不承担相关法律责任。若收录文章侵犯到您的权益/违法违规的内容,可请联系我们删除。
https://www.lqrc.cn/a/keji/50457.html

  • 关注微信
下一篇:暂无

猜你喜欢

微信公众号