摘要:在云计算中,虚拟化技术、分布式资源管理技术、数据存储技术、网络技术是最为关键的几个基础技术体系。虚拟化是底层最核心的技术之一,海量服务器需要通过虚拟化的技术才能形成
在云计算中,虚拟化技术、分布式资源管理技术、数据存储技术、网络技术是最为关键的几个基础技术体系。虚拟化是底层最核心的技术之一,海量服务器需要通过虚拟化的技术才能形成形成大的资源池。其在高可用、高性能、快速创建等方面的技术指标,直接关系到云计算的商业价值。
虚拟化技术也分为技术流派,其中以 KVM、Xen、VMWare ( Virtual Machine ware ) 等为主流。在 2013 年,腾讯云基于对虚拟化技术未来发展方向的判断,放弃当时的主流 XEN 虚拟化技术,拥抱开源的 KVM 技术,并将其不断演进。
近日,腾讯云虚拟化技术负责人陈立东和资深虚拟化技术专家马文霜等人首次向媒体介绍了腾讯云在虚拟化技术实践方面的经验。
虚拟化是什么?
虚拟化主要负责服务器资源的虚拟化,简单理解,就是在一台物理机上为一个虚拟机构造一个完整的操作系统运营环境。虚拟化的资源包括有 CPU、内存、网络和存储几个部分。一般来说,在物理机上通过虚拟化技术通过多个完整的虚拟机,在不同的虚拟机用不同的形式售买给不同的客户。
腾讯云的 VStation 作为云计算操作系统,承担了资源调度、请求排队的工作,通过 Compute 与底层虚拟化模块进行请求下发。虚拟化层负责资源的虚拟化,为每台 CVM 构造出完整的 PC 运行环境,包括 CPU、内存、网络、存储各个部分资源。
腾讯云 VStation 的整体架构图
腾讯云在虚拟化技术方面的实践
随着业务的高速增长和发展,宿主机的异构趋势和虚拟机多样化需求呈现指数增长,对底层虚拟化技术的要求更是越来越严苛。当前云计算虚拟化面临的问题包括以下四点:
可用性
硬件上复杂集成度的增加,对降低故障率带来了巨大的挑战,虚拟化技术如何在云上规避物理服务器宕机对虚拟机的影响,让业务层面减少感知甚至实现无感知,是腾讯云面临的第一大挑战。
陈立东提到,在腾讯云规模达到一定规模时遇到了一个问题,当时某个游戏客户投诉腾讯云云服务器故障率高,云服务器突然宕机,导致游戏玩家掉线,客户甚至因此考虑迁移到其他云。这给了陈立东团队非常大的压力。
对此,腾讯云采用了多种优化方案,其中两个技术点至关重要:内存高级 RAS 特性 MCA recovery 和热迁移。
首先是 MCA recovery。2019 年腾讯云联合 Intel 定制 CPU,支持高级 RAS 特性,来降低虚拟化场景下硬件故障对可用性的影响。这背后的代表性技术名为 MCA Recovery,支持对内存 UCE 错误进行隔离,避免整机宕机。据了解,腾讯云是业界首家在大型数据中心中采用 MCA Recovery 技术降低内存故障率的厂商。
数据显示,由于软硬件协同的方式依赖 Intel CPU 架构、BIOS、BMC、Linux 内核、上层资源调度管理,初期规避成功率不超过 5%, 目前通过一系列的软硬件结合优化,腾讯云 CVM 云服务器通过 MCA Recovery 已规避大量的内存 UCE 错误,大大降低了内存故障率。
其次是热迁移技术。CVM 时运行于物理机硬件 + VMM(Virtual Machine Monitor ) 所构造的虚拟化环境中,一个云服务器是一个完整的 PC 系统,内部可以运行各种 OS,如 Windows/linux,用户的各类业务运行于 OS 内部。
热迁移技术是指把一台运行状态的 CVM 从其所在的物理服务器迁移到另一台物理服务器上,期间 CVM 的操作系统和操作系统内部的应用程序保持运行,业务对热迁移操作无感知。
热迁移示意图
对热迁移技术进行了专项优化迭代,热迁移成功率由 70% 提升到了 98%,停机时间从秒级减少到 50ms。同时针对大规格子机热迁移进行深度优化,解决大规格子机热迁移过程中性能下降的问题。
性能
业务追求虚拟化后的计算、网络、存储等各方面媲美物理机的性能,性能是否和过去 IDC 物理机相匹配是腾讯云面临的第二大挑战。
在降低虚拟化性能损耗上,陈立东以腾讯内部自研上云的过程举例。项目启动不久,微信同事在测试时反馈其中一个模块性能下降超过 30%。为此,腾讯云投入了多个资深开发工程师进行分析,共做了 7 轮优化,最终将 KVM 的虚拟化损耗降低到 5%。
针对 Linux 子机场景,腾讯云也做了一些与 KVM 虚拟化本身结合性的性能优化,对外推出了腾讯的 Linux 的发行版 Tencent Linux。
另外,腾讯云还针对 Windows 子机进行了大量优化,逆向分析 Windows 内核逻辑,专门优化了 KVM 对 Windows 内核的支持,大大提升了 Windows 云服务器在腾讯云上的性能。
稳定性
稳定性方面能否保持像物理机一致的稳定性,满足业务对响应时延的极致追求是第三大技术挑战。
陈立东提到,Linux 内核作为一个通用的 OS,需要兼顾各种各样类型的进程,包括实时进程、交互式进程、批处理进程等。而调度器(Scheduler)作为 OS 的核心组件—— CPU 时间的管理器,主要负责选择某些就绪的进程来执行。
不同于传统的 CFS 调度器,(Completely Fair Scheduler 简称,即完全公平调度器),腾讯云自研了一款针对虚拟机环境的运行特征定制的、专用的、能提升虚拟机 latency 和性能的、同时能满足腾讯云场景当前和未来可能的定制需求的,能持续演进优化的内核调度器—— VMF。
VMF 的基本原理为:根据虚拟机场景中的任务特征,将任务进行分类 ( 分为 4 类 ) ,其中 VM 类型对应于虚拟机进程,具有绝对的最高运行权和优先级。针对不同任务类型制定相应的调度策略,将 CPU 资源尽量向 VM 任务倾斜 ( 而不是考虑 " 公平 " ) ,如此最大程度的保障虚拟机的 CPU 资源供应,结合虚拟化层面的其他优化手段,让虚拟机拥有媲美物理机的极致性能。通过采用 VMF 调度算法,大大减少了母机进程对 VCPU 的干扰, 达到了和物理机接近的稳定性。
交付效率
由于业务对交付效率要求逐步苛刻,提供云上灵活的迁移调度的秒级交付的体验是腾讯云遇到的第四大挑战。
早期腾讯云的客户反馈 GPU 机型,购买后启动比较慢,需要等几分钟后才能启动,影响使用体验。以 700G 内存的虚拟机为例,启动时间高达 270 秒左右。
出现问题的本质在于内核为虚拟机分配内存时、为了防止信息泄露,在一个单线程的持所环境中,把分配到的内存全部清零,导致处理耗时较长。
腾讯云引入了新的机制,并把清零的工作挪到用户层,由所有 vCPU 线程并发执行。经测试,上述启动时间需要 4.5 分钟的虚拟机,优化后的启动时间只需 22 秒。相关补丁已经贡献给社区并被接纳。
相关文章推荐
新网新人专享,注册领SSL证书百元神券2022-09-15
新网与亚洲诚信达成战略合作,携手共建安全云生态2022-09-06
企业网站没有SSL证书,你将面临......2022-09-27
SSL协议、TLS协议,有什么区别?2022-09-26
网站跳出率高?可能是没装SSL证书2022-09-26