ooouuuooouuu 2017-11-15
Topic录取数量在全球公有云厂商中与Google并列第一
Linux基金会于10月份在捷克举行了一系列的重要会议,包括Linux 内核峰会、嵌入式Linux大会、开源峰会、KVM 论坛、Mesos峰会等一系列会议。此次会议作为本年度Linux基金会的重头戏,吸引了众多的公司和重要人物参与会议,包括Linux创始人Linus,VMware的首席开源专家Dirk Hohndel, Google的开源总监Sarah Novotny等。同时Linux开源社区的一批技术专家也都参与了此次会议,包括Linux内核的维护者Peter、 Thomas,KVM的维护者Paolo等都参与了此次会议。参会的公司包括IBM,Google,Microsoft,Redhat,Amazon,Intel等国际著名公司,同时也包括国内的腾讯,华为等。
此次阿里巴巴受邀参加了开源峰会和KVM FORUM,我们一共有两个topic被选中(录取数量在全球公有云厂商中与Google并列第一),KVM的性能调优和热迁移在阿里云的应用。其中KVM的性能优化这个主题同时被开源峰会和KVM讨论会所选中进行分享。
在KVM性能调优的主题上,我们介绍了当KVM被大规模应用在公有云上的时候所出现的一些问题,而且这些问题在平常的开发中是很难被看到了,但是却真正影响着KVM的性能。通过我们的介绍,KVM的开发者更好的了解了当前KVM存在的瓶颈点, 进而完成进一步的优化。
虽然当前KVM可以基本满足大部分的业务使用,稳定性也比较好,但是在实际业务中的表现仍然和物理机存在的一些差距。我们把用户在阿里云上遇到的问题进行的分析和总结,主要分为三类问题:
第一个问题是消息传递类业务在KVM上的性能比较差,其实这个问题在2015年的KVM 大会上第一次被google所提出,但是过去了两年,依然不能很好的解决。我们针对这个问题提出了smart idle poll的方案,通过在内核触发延迟的关键路径上进行优化,可以有效的降低性能开销,最终做到和物理机持平的性能。
第二个问题是关于虚拟时钟的开销,由于在X86平台上,虚拟时钟是需要KVM进行模拟。而我们在很多游戏用户的场景里面发现,高精度时钟使用的非常频繁,KVM在时钟上引入的开销对游戏业务的影响较大。针对这个问题,我们提出了半虚拟化时钟的方式,通过在KVM和内核里面引入异步时钟操作机制,同时借助硬件的高级特性,可以把时钟的开销基本消除。
第三个问题是消息中间件在KVM看到的性能下降问题。由于消息中间件会大量使用内存来存放消息,同时对消息进行大量操作,会导致大量的TLB刷新开销。而这部分开销在KVM的场景下会被放大进而影响业务的性能。针对这个问题,我们提出了半虚拟化的中断机制,通过合并TLB刷新来减少开销。
对于我们抛出的这些问题和解决方案,现场的听众都非常感兴趣。因为这些问题都和实际的业务紧密相关,很多问题之前的开发者从来都没有关注过,而且也不知道在实际业务中会有如此大影响。
特别是我们提出的smart idle poll的方案,解决了虚拟化领域的一个普遍问题,这个问题不仅KVM会遇到,微软的虚拟化技术、VMware的虚拟化产品以及AWS的Xen都存在这个问题,所以在Q&A的环节,来自于微软和google的技术专家对我们的方案非常感兴趣。除此之外,在会后和Google公司的技术专家David的交流中我们详细讨论了当前KVM在性能方面的一些问题。由于Google也是使用的KVM作为底层虚拟化技术,所以Google看到了很多和我们一样的问题,David对于阿里巴巴今天能够分享我们在实际业务中发现的问题和解决方案表示非常赞赏,希望未来可以一起合作来解决更多的性能方面问题。
尽管从虚拟化的层面看,开源的KVM的热迁移技术相比原来的XEN虚拟化场景已经有了大幅度的提升,但是要把热迁移很好的应用到实际的生产场景中,仍然不是一件容易的事情。 一个最简单的原因就是,在阿里云或者公有云中,我们售卖的不仅仅是一个基于虚拟化的虚拟机实例,而是一个完备的云生态环境。 在这个环境的最底层,我们有云磁盘、VPC网络,在中层,我们有虚拟化、控制系统、在上层,我们提供了各种各样的云服务等高级特性。因此,我们对热迁移的需求,也不仅仅是一个虚拟机在虚拟化层面能够在不同的物理机间进行迁移,而是要求热迁移要对整个云生态系统透明,实现虚拟机在整个云生态系统中平滑切换,无缝穿梭。目前,在有关虚拟化层的在国内外的相关资料中,我们还没有发现有相关资料介绍热迁移在其公有云内部的应用与公有云热迁移全链路的技术难点与解决方案。
在此次的topic中,我们介绍了热迁移从一个基础的虚拟化技术应用到云计算领域时所碰到的主要技术难点以及一些关键的性能优化技术。这包括最底层的虚拟化关键路径优化,云磁盘、VPC网络支持与优化、以及热迁移是如何实现对用户透明的实时迁移的。
在虚拟化关键路径优化方面:我们介绍了通过采取迁移关键路径操作拆解、重组与并发、 增加Pre Last Copy, 虚拟机内存Last Copy压缩等优化技术,是如何大幅度的降低热迁移业务中断时间的,以idle状态的虚拟机为例,目前我们已经将热迁移在虚拟化层的开销从200ms优化到10ms以内。
在虚拟机磁盘优化方面:我们介绍了通过创新性的引入了disk pause状态,在确保数据完整性能的情况下,实现了热迁移时在目的端物理机上快速的云磁盘打开。
在VPC热迁移优化方面:我们通过具有独创性的Relay Forwarding技术,实现了热迁移与网络流表下发解耦,从而实现网络流量的快速倒换。
此外,我们还介绍了目前这一技术在实际生产环境中还有哪些有待解决的问题和技术障碍。分享了热迁移是如何帮助阿里云在面对软、硬件故障时降低用户的宕机时间和宕机次数、在集群资源管理中如何融入调度系统进行集群资源的管理和整合等一些非常实际的应用场景。
通过以上这些优化技术,我们将全链路下,idle状态的虚拟机热迁移的业务中断时间从原来的1S中优化到现在的90ms以内。压力状态下,256M内存压力下全链路业务中断时间100~300ms左右。
在会后,我们同来自于RedHat的热迁移的专家gilbert就热迁移目前存在的问题和热迁移在阿里云的一些技术应用进行了交流,特别就软硬件跨版本的热迁移难点,如:如何通过抽象化cpu特性,从而实现不同型号的cpu的可迁移校验;以及不同厂商cpu前后兼容的实践经验,一些特殊的设备状态在跨版本迁移的支持情况等。我们期望未来通过热迁移进行物理硬件的透明升级,从而为用户提供更高的业务延续性。此外,针对大压力下的一些热迁移性能技术难点,我们也向gilbert提出了一些优化想法,如如何通过IO访问模式的切换,解决io sync耗时太长,以及一些特殊场景的内存压缩算法优化等,gilbert对我们的想法非常感兴趣,并希望未来能够做更进一步的合作。
我们希望通过将阿里云在热迁移生产实践中的走过的路,踩过的坑分享给开源社区的方式,能够帮助更多的云计算领域相关厂商能将这项技术更好的应用在自己的产品和服务中,并进一步的提升热迁移在云计算领域的全链路技术进步,从而为从硬件、到软件、再到服务打造一个热迁移友好的生态系统而贡献一份自己的力量。