写点什么

首次公开:腾讯云虚拟化技术原理及可用性提升实践

  • 2020-06-24
  • 本文字数:2302 字

    阅读完需:约 8 分钟

首次公开:腾讯云虚拟化技术原理及可用性提升实践

作为云的 IaaS 大底层,CVM 的机型矩阵已经全面覆盖电商、视频、游戏、金融、基因测序、智能语音、汽车、医疗、物联网等多种业务场景,开启了全行业的计算提速。Hypervisor 作为云计算的基石,对虚拟机的性能优劣起着决定性的作用。腾讯云虚拟化技术在过去十年的发展中经历了多次更新换代、全面升级,在可用性方面提升效果明显。

虚拟化技术架构与挑战

虚拟化技术是云计算最核心的技术之一,也是云计算商业模式的底层支撑。海量服务器需要通过虚拟化的技术形成大的资源池,其重要性不言而喻。虚拟化技术整体架构图如下所示:



其中 VStation 作为云计算操作系统,承担了资源调度、请求排队的工作,通过 Compute 与底层虚拟化模块进行请求下发。虚拟化层负责资源的虚拟化,为每台 CVM 构造出完整的 PC 运行环境,包括 CPU、内存、网络、存储各个部分资源。


主要包含 Libvirt、QEMU、KVM 三部分:


  • QEMU 与 KVM 构成 Hypervisor,负责 CVM 资源的虚拟化,在物理机上,虚拟出一个个完整的 PC 环境;

  • Libvirt 负责提供统一对外的接口,用于管理 Hypervisor。


伴随着业务的高速增长和发展,宿主机的异构趋势和虚拟机多样化需求等等呈现指数增长,对底层虚拟化技术的要求更是越来越严苛。当前云计算虚拟化面临的问题包括:


  • 可用性:硬件上复杂集成度的增加对降低故障率带来了巨大的挑战,在云上如何规避物理服务器宕机对虚拟机的影响,让业务层面减少感知甚至实现无感知;

  • 性能:业务追求虚拟化后的计算、网络、存储等各方面媲美物理机的性能,性能能否和过去 IDC 物理机相匹配?

  • 稳定性:稳定性方面能否保持像物理机一致的稳定性,满足业务对响应时延的极致追求?

  • 交付效率:业务对交付效率要求逐步苛刻,云上灵活的迁移调度如何提供秒级交付的体验?

腾讯云虚拟化技术巡礼

软硬件协同可用性提升方案

近年来硬件集成度不断增加,从 CVM S2 实例,整机宿主机 56 核 256G 内存,到 S5 实例 96 核 384G,SA2 实例 192 核 512G 内存;在未来的 CPU 厂商路标规划中也将推出单机超过 400 核的机型。硬件集成度增加大大降低单核成本,但也为降低故障率带来的巨大的挑战。分析现网故障数据,内存多比特错误导致的 UCE 错误是物理服务器宕机的主要原因。



服务器故障率统计


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。同时针对大规格子机热迁移进行深度优化,解决大规格子机热迁移过程中性能下降的问题。

自研内核调度器 VMF

Linux 内核作为一个通用的 OS,需要兼顾各种各样类型的进程,包括实时进程、交互式进程、批处理进程等。而调度器(Scheduler)作为 OS 的核心组件——CPU 时间的管理器,主要负责选择某些就绪的进程来执行。


不同于传统的 CFS 调度器,(Completely Fair Scheduler 简称,即完全公平调度器),腾讯云自研了一款针对虚拟机环境的运行特征定制的、专用的、能提升虚拟机 latency 和性能的、同时能满足腾讯云场景当前和未来可能的定制需求的,能持续演进优化的内核调度器——VMF。


VMF 的基本原理为:根据虚拟机场景中的任务特征,将任务进行分类(分为 4 类),其中 VM 类型对应于虚拟机进程,具有绝对的最高运行权和优先级。针对不同任务类型制定相应的调度策略,将 CPU 资源尽量向 VM 任务倾斜(而不是考虑“公平”),如此最大程度的保障虚拟机的 CPU 资源供应,结合虚拟化层面的其他优化手段,让虚拟机拥有媲美物理机的极致性能。通过采用 VMF 调度算法,大大减少了母机进程对 VCPU 的干扰, 达到了和物理机接近的稳定性。

VM 启动优化

对于 GPU 机型,目前采用设备直通的方式,虚拟机启动的时候,提前分配并锁住全部的虚拟机内存,而虚拟机内存越大,启动就越慢。以 700G 内存的虚拟机为例,启动时间高达 270 秒左右。


问题的本质在于内核为虚拟机分配内存时、为了防止信息泄露,在一个单线程的持所环境中,把分配到的内存全部清零,导致处理耗时较长。


腾讯云引入了新的机制,并把清零的工作挪到用户层,由所有 vCPU 线程并发执行。经测试,上述启动时间需要 4.5 分钟的虚拟机,优化后的启动时间只需 22 秒。相关补丁已经贡献给社区并被接纳。

关注开源

腾讯云是最早拥抱 KVM 技术的云计算服务商,早在 2013 年,腾讯云基于对虚拟化技术未来发展方向的判断,便全面采用由开源社区支持的 KVM 技术,并投入核心团队参与研发。近年来,腾讯云还一直积极推进虚拟化开源建设。在去年的 KVM Forum 上,腾讯云凭借年度 40 个 patch 的贡献,名列全球第七,连续三年 KVM 社区国内贡献排名第一,连续三年成为国内唯一登榜的云计算服务商。其中,腾讯云今年贡献的 3 个技术特性,还被评为 KVM 年度核心突破。


2020-06-24 15:114499
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 395.1 次阅读, 收获喜欢 1983 次。

关注

评论

发布
暂无评论
发现更多内容

机器学习是什么?

马同学

学习

spring-boot-route(二十二)实现邮件发送功能

Java旅途

Java Spring Boot 发送邮件

全面到哭!BAT内部Java求职面试宝典,必须人手一份!

Java架构之路

Java 程序员 架构 面试 编程语言

面试官的灵魂一击:你懂 MySQL 事务日志吗?

Java架构师迁哥

标准的开发框架,对企业开发有多重要?

Learun

敏捷开发 快速开发

架构师训练营第五周学习总结

尹斌

Microsoft Azure机器学习采用NVIDIA AI为Word编辑器提供语法建议

iOS性能优化 — 一、crash监控及防崩溃处理

iOSer

性能优化 ios开发 Crash 监控及防崩溃处理

JavaScript 类型 — 重学 JavaScript

三钻

Java 大前端

容器化应用系统上生产的最佳实践

东风微鸣

Kubernetes 最佳实践 生产

vivo 商城前端架构升级—前后端分离篇

vivo互联网技术

Java 大前端 前后端分离

解析 CloudQuery 审计分析功能

BinTools图尔兹

数据库 sql 安全 工具软件

ArCall功能介绍手册

anyRTC开发者

ios 音视频 WebRTC RTC 安卓

自动化测试框架类型,你知道几种?此处介绍5种比较常见的

软测小生

软件测试 自动化测试框架 软件自动化测试

数据湖探索DLI新功能:基于openLooKeng的交互式分析

华为云开发者联盟

数据 处理

typora增强-mac

老菜鸟

Typora

千万不要往 Shell 里粘贴命令!

大道至简

命令行

DDIA 读书笔记(2)数据模型的存储与检索

莫黎

读书笔记

GitLab用户切换引发的某程序员“暴动”,怒而开源项目源码

小Q

Java git 学习 开发 代码仓库

架构训练营第一周学习小结

李日盛

攻克金融系统开发难点,借助SpreadJS实现在线导入Excel自定义报表

葡萄城技术团队

SpreadJS 在线导入excel

吃透阿里大佬整理的Java面试要点手册,成功五面进阿里(二本学历)

Java架构追梦

Java 学习 架构 面试 核心知识点整理

LeetCode题解:98. 验证二叉搜索树,递归中序遍历过程中判断,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

学习总结

饺子

AI让远程交流“更清晰”:GAN消除视频通话中的抖动

趣味科普丨一文读懂云服务器的那些事儿

华为云开发者联盟

镜像 服务器 服务

架构师训练营第一周课后作业

李日盛

批处理 有状态等应用类型在K8S上应该如何配置?

东风微鸣

Kubernetes 最佳实践

学了那么多 NoSQL 数据库 NoSQL 究竟是啥

哈喽沃德先生

数据库 nosql 非关系型数据库

1分钟带你get React setState 面试要点

Leo

面试 大前端 React setState

mPaaS x Menxlab | 1024程序员节:Talk is cheap,Show me the AppID

蚂蚁集团移动开发平台 mPaaS

程序员 开发者 mPaaS 1024

首次公开:腾讯云虚拟化技术原理及可用性提升实践_服务革新_小智_InfoQ精选文章