这项核心突破,让CPU运行由“黑盒”变“白盒”
驯服了CPU这头“性能怪兽”
作为开发者应该有这样的感受,就是要在安全隔离的虚拟化环境中, 对特定或全局软件负载进行性能数据的量化、瓶颈分析与优化,难度极大,而且极不准确。
虽然明明知道应用在CPU这头“性能怪兽”上run,但是就是看不清,测不准,想要对其优化,更是难上加难。
传统的方法,一般是借助额外的软件逻辑定期记录运行状态,需要“纯手工”操作然后推理出前后改动的相对性能差异,但这种方式严重依赖于操作系统或应用内预先设定的性能分析回调点,虽然也能测出一部分性能数据,但准确度却差强人意,而且无形中还损耗了一部分CPU宝贵的性能资源。
对于这样的难题,业界也有一些替代方案,但限于技术短板,之前并没有突破性的进展。
今年,针对虚拟机中CPU硬件性能事件与软件代码匹配不够准确的问题,腾讯云经过深入研究和硬件探索,自主设计了一套 Intel Precise Event-Based Sampling 特性 (Guest PEBS) 在KVM上的虚拟化方案。
与常规性能事件计数器溢出中断相比,目标代码的事件指令滑动误差被最小化,同时通过直接将多个性能事件发生时的不同CPU状态批量写入虚拟机内存中,保证了在采集大量性能事件样本时没有即时中断,大幅减小了性能事件采样开销,实现了应用程序内代码级粒度的数据可采集、性能可分析、瓶颈可优化的技术升级。
目前,Guest PEBS 技术方案的核心框架已经被上游社区接收,并被其他厂商广泛测试。作为另一块腾讯云上分析应用性能的底层软件基石,该技术进一步加固了腾讯云性能分析服务的技术领导力。
凭借这些优秀的特性,这项技术也无可争议地被KVM社区评选为年度核心突破。
专啃虚拟化领域“最硬的骨头”
回顾腾讯云在虚拟化领域的突破,一路走来,充满艰辛。从最初的不被看好,到如今的引领业界,腾讯云整整走了十年。
2013年,当时最主流的虚拟化技术是Xen如日中天,众多的云厂商将其作为虚拟化技术的不二之选,KVM更像是后起之秀。代码简单清晰,从原理上分析相对Xen具有更好的技术前瞻性。但问题是,它仅有一个初级的社区开源版本,而尚未作为一个主流的技术栈为业界所验证。
是跟随主流还是探索无人区,经过充分地探讨,腾讯云虚拟化技术团队的选择是KVM。面对产业数字化的契机,云计算作为产业互联网的底层基石,未来一定有巨大的成长空间。探索KVM虽然相对来说更加艰难,但这是一条必由之路。
后来,在腾讯公司高级执行副总裁汤道生的支持下成立一个专注开源的部门,专职投入到KVM的开源贡献中,这在国内寥寥无几。
大量的投入换来的也是腾讯云在虚拟化技术领域的一项项核心突破。从2013年至今,已经有10项技术被评为KVM年度核心突破。
今年,腾讯云还将两项自研的性能提升方案贡献给开源社区。
其中一项是针对虚拟机由宿主机自由调度、而宿主机不感知客户业务应用程序请求的问题,腾讯云提出了提升虚拟机操作系统内核临界区扩展性的方案。
这一方案通过启发式虚拟化调度加速算法,加速被宿主机调度抢占临界区的虚拟机,克服了虚拟机内同步语义被宿主机调度抢占的性能损失。通过实现大规格虚拟机(多CPU和大内存)场景下的消息传递负载性能提升30%,保证用户业务丝滑无抖动。
此外,针对数据库、通用网络等IO密集型业务的性能提升难题,腾讯云基于社区版本迭代了高性能异步IO框架(io_uring),提出了新的异步化技术方案uringlet,使关键业务与敏感服务响应更加及时。相较于业界过往的高度定制化方案,这一技术更加通用、对业务侵入性极小、易于适配、集成部署成本显著降低。
腾讯云相关技术负责人表示:“腾讯云现阶段在KVM开源方面聚焦的主要是行业最痛点的问题,一方面通过持续创新解决腾讯云线上遇到的各种挑战并将产出反馈给社区,另一方面探索云计算领域的新技术,做好前沿技术的预研和积累,坚定不移地持续为虚拟化开源社区做出贡献。”
作为中国唯一连续六年进入该榜单、贡献值最高的中国企业,腾讯云累计为KVM社区贡献280项patch、10项“核心突破”,占大会全部核心突破的20%。