欢迎你们前往腾讯云社区,获取更多腾讯海量技术实践干货哦~算法
做者:腾讯云计算团队 windows
嘉宾介绍:肖光荣,腾讯云开源团队负责人,操做系统专家。肖光荣在Linux内核、KVM社区工做近十年,是Ftrace, MM, Networking等子系统的活跃贡献者。近几年主要工做在虚拟化领域,是KVM的核心开发者,Virtual NVDIMM子系统的维护者。肖光荣向社区提交了大量Patch,在华人内核贡献者中排名Top 15,在内核和KVM社区拥有巨大影响力。安全
前不久,KVM Forum 大会发布了 2017 年最新 KVM 开源贡献榜,腾讯云因其向 KVM 内核贡献了 46 个 patch,成为全球惟一一家上榜的公有云厂商。据了解,这些补丁大可能是腾讯云在实战过程当中的经验总结,主要用于改善和解决 KVM 虚拟机在热迁移,时钟计时、嵌套虚拟化等方面的使用问题以及修复一些安全漏洞。网络
在开源的全部 patch 里,比较引人注目的是,腾讯云率先采用快速写保护、共享脏页位图、优化热迁移块大小等一系列方式,优化热迁移效率以及提高热迁移成功率。那么,它的虚拟机热迁移过程和具体方法是什么?腾讯云又如何看待 KVM 技术开源?KVM 如今面临着哪些新的挑战?带着这些问题,InfoQ 采访了腾讯云高级工程师肖光荣,就腾讯云的 KVM 开源技术与开源思路作了简单交流。架构
Q:简单阐述一下 KVM 虚拟化技术以及 KVM 和云计算的关系?框架
肖光荣: KVM 是 Kernel-based Virtual Machine 的简称,KVM 要求 CPU 支持硬件虚拟化技术(如 intel VT 或 AMD-V),是 Linux 下的全虚拟化解决方案。KVM 由处于内核态的KVM模块和用户态的 QEMU 两部分构成。内核模块实现了 CPU 和内存虚拟化等决定关键性能和核心安全的功能并向用户空间提供了使用这些功能的接口,QEMU利用KVM模块提供的接口来实现设备模拟、 IO 虚拟化和网络虚拟化等。单个虚拟机是宿主机上的一个普通 QEMU 进程,虚拟机中的 CPU 核(vCPU)是 QEMU 的一个线程,VM 的物理地址空间是 QEMU 的虚拟地址空间(图 1)。异步
vCPU 线程通过KVM模块提供的系统调用进入到宿主机内核态,在内核态切换到CPU的非根模式,即 guest 模式,此时虚拟机内的 CPU 得到宿主机 CPU 资源,得以执行。在 guest 模式中,遇到敏感指令没法直接执行,或者有特定的内部异常和外部中断产生,vCPU 会退出到根模式由 KVM 内核或 QEMU 来模拟执行(图 2)。性能
KVM 虚拟化技术是当前云计算中计算虚拟化的主流技术,是云计算的核心底层能力,使用 KVM 把多台物理机虚拟化后,组成一个大的虚拟资源池,方便用户从资源池中按需分配计算能力,提高资源的使用效率,同时保证多用户资源之间的隔离性、安全性。优化
Q: 腾讯云这次向 KVM 社区贡献的 46 个 patch 主要解决了哪些问题?云计算
肖光荣:这 46 个 patch 是咱们在实战过程当中的经验总结,用于改善和解决 KVM 虚拟机在实际运营过程当中遇到的一些问题,这些Patch主要应用在如下三个方面:
Q:腾讯云在虚拟机热迁移技术上有比较明显的突破,可否讲解一下虚拟机的迁移过程以及腾讯云如何提高热迁移性能?
肖光荣:虚拟机热迁移是一项很是重要的技术,热迁移能够在用户几乎无感知的状况下将虚拟机从当前宿主机迁到另外的宿主机,热迁移主要用于解决一些软硬件不可逆场景下的虚拟机可用性问题,如:宿主机硬件批次性隐患、宿主机内核内存泄漏等。腾讯云内部大量地使用热迁移来提高虚拟机的可用性,从近一年的统计数据来看,已经作到虚拟机的可用性大于物理机。
虚拟机的热迁移主要有下面几步:
如上所述,源端须要去捕获内存的更改,在当前的环境下是采用写保护和脏页位图的方法,即先把内存所有变为只读,在虚拟机写内存时就会产生异常被KVM内核模块捕获而且记录到脏页位图,该脏页位图最后被复制到QEMU,据此QEMU能知道哪些内存被更改。
对于脏页内存的捕获,咱们主要经过两大方式提高热迁移效率:1)采用快速写保护算法,该算法是无锁的而且算法复杂度为 O(1),这就意味着它的性能与虚拟机的内存大小和工做负载无关。2)采用KVM内核模块和QEMU共享脏页位图的方法,实现零拷贝以及减小用户态和内核态的上下文切换。
另外在迁移脏块的时候,针对子机内部 IO 性能降低的问题,优化热迁移块大小,避免传输无用数据,提高热迁移成功率。固然,腾讯云还有不少其余提高热迁移性能和稳定性的优化方法,在此就不一一列举了。
Q:腾讯云如何看待云厂商们对 KVM 开源的贡献和支持问题?
肖光荣:腾讯云一直秉承开放,共享的心态参与开源,凭借庞大的用户群和 KVM 集群规模,腾讯云在 KVM 虚拟化上作了深刻的研究和丰富的实践。腾讯云自 2017 年 5 月加入 Linux 基金会以来,更加大了回馈社区的力度。在 KVM 内核领域,已是贡献度最高的公有云厂商。
过去,大型开源项目一直鲜见中国大型企业的身影,因此开源界一直诟病中国企业只索取不贡献,做为公有云的一线厂商,咱们但愿经过实际行动转变开源界的见解。
当前 KVM 虚拟化技术是各家云厂商使用的主流虚拟化技术,腾讯云有一个专门负责作开源的团队,该团队一方面将持续创新以来解决腾讯云线上遇到的各类挑战而且将产出反馈给社区,另外一方面探索云计算领域的新技术,作好前沿技术的预演和积累。同时咱们也但愿各大云厂商加大对 KVM 项目的投入,积极参与到社区,共同应对新硬件,新架构给 KVM 带来的挑战。
Q:KVM 技术如今面临着哪些新的挑战?
肖光荣:一方面,Intel 不断推出新 CPU 架构:haswell、broadwell、skylake 到 cascadelake,网络带宽从 10G 到 25G 再到 100G,更新的硬件架构,更高的网络带宽须要更高效的虚拟化才能将硬件的性能充分发挥。另外一方面,GPU、FPGA 在 KVM 上的虚拟化、池化有待突破,不然 GPU、FPGA 的总体利用率没法提高。虚拟机网络性能一直是虚拟化的短板,利用智能网卡等技术能够将网络性能作到和物理机旗鼓至关,但同时也让热迁移变得困难。
此文已由做者受权腾讯云技术社区发布,转载请注明文章出处
原文连接:https://cloud.tencent.com/community/article/385740