CPU、内存、IO虚拟化关键技术及其优化探索

2017在线技术峰会上,来自阿里云弹性计算团队的子团分享了红包背后虚拟化技术。他首先比较了容器技术和虚拟化技术,然后从CPU虚拟化、内存虚拟化、IO虚拟化三个方面介绍了虚拟化关键技术。他还分享了虚拟化架构的优化探索,包括高性能网络方案、高性能云盘/本地盘方案、高效热迁移技术、虚拟机CPU/内存热插拔技术等。

以下内容根据直播视频整理而成。

视频回顾:点击进入

pdf下载:点击进入

面临的挑战

 

以前在阿里、天猫等用的比较多的是容器技术,比如LXC/Docker,从2015年开始将“双十一”的流量部分迁移到了阿里云的虚拟机上。容器技术的特点是轻量,很容易达到本地物理机的性能,而虚拟化技术是跑在物理机上的虚拟机上的,开销相对大一些,性能不如容器技术,但是安全性比较高。

容器技术

 

容器技术的大体架构如上图所示,最下面是硬件平台,主流使用的是Linux内核,内核上会有Container引擎,最上方会跑一些Container实例。

虚拟化技术

 

虚拟化技术和容器技术最大的差别是在虚拟机和硬件平台之间会有一个虚拟机监视器,主要用于将硬件抽象出来切分资源提供给虚拟机,提供隔离和虚拟化的功能,在监视器上方则是一个个的虚拟机。

要在阿里云的公有云上跑这些业务的话,需要比较强的隔离性、安全性,所以选择虚拟化技术更加合适。虚拟化技术概念是IBM很早提出的,然后VMware公司将虚拟化技术推向民用市场。在Intel发布VT-x后,虚拟化技术走向成熟,公有云的普及让虚拟化技术规模扩大。

虚拟化关键技术

CPU虚拟化

 

CPU的虚拟化从实现上可以分为三种:二进制翻译技术,其优势在于跨平台虚拟化也可以实现(纯软件实现,对硬件没有要求),其缺点是指令翻译过程开销会明显增加(因为要用很多指令才能解释一个其他平台的指令,和单词翻译类似),性能不好,很少用在商用工程上,主要用于研究机构做仿真;CPU半虚拟化技术,比如在X86机器上虚拟X86的虚拟机,大部分的指令是不需要翻译的,但因为x86早期设计问题,有些敏感之类执行的异常没办法被hypervisor捕获, 导致无法进行适当模拟, 所以虚拟机的内核必须要通过修改来适配虚拟化环境;CPU硬件辅助虚拟化技术(VT-x),即每个虚拟机在non-root模式下,看到的资源(比如x86的ring结构)和本地的物理机是一致的,理论上虚拟机的内核不需要经过任何的修改就能够完全运行起来。

 

目前的X86机器都是支持VT-x的。VT-x提供了两种模式:root模式,权限最高,可以访问所有硬件,管理所有虚拟机;non-root模式,只拥有部分特权。右下角的这张图中,VMM跑在root模式下,其上是两个虚拟机,从root模式进入non-root模式的过程叫VM Entry,从虚拟机退出到VMM的过程是VM Exit。

 

当需要给虚拟机执行机会使它能够运行里面的操作系统、进程作业时,需要从root模式进入non-root模式,在non-root模式运行和在物理机上运行是没有任何区别的。只有当需要去访问一些硬件,做IO操作, 或者收到中断等情况的时候, 才需要从虚拟机退出到VMM。VM Entry和VM Exit决定了跑在机器上的虚拟机的性能,这两个操作是非常耗时的,在当前主流的至强E5平台上大约需要1 ~ 2微秒的时间。VMCS则记录了用来决定两种模式间切换的控制数据。

内存虚拟化

内存虚拟化主要面临两方面的挑战:虚拟机操作系统总是希望能够看到物理内存是从0开始的;虚拟机总是希望看到在地址空间里内存是连续的。但是硬件往往并不能保证上述两点。

 

如上图所示,在虚拟机里看到的内存实际上是Pseudo伪物理内存,实际的物理内存分配是硬件管理的。

MMU虚拟化技术

MMU是内存里CPU访问内存的一个主要控制单元,它面临的挑战是Guest TLB和Guest页表对硬件来讲并不总是有效的,所以MMU一定要经过虚拟化。MMU虚拟化主要有四种方式:Direct page table、Virtual TLB、Shadow page table(通过多层的page table来控制)和Extended page table(目前最主流的)。

Extend Page Table

 

Extend Page Table的实现如上图所示,Guest CR3控制页表的信息,完成Guest的线性地址到物理地址的转换过程,再到物理机的物理地址映射则通过EPT来完成。这种基于硬件的EPT技术,使得虚拟机里的一次内存访问不需要经过多次的页表访问就可以完成,在内存访问方面可以达到和物理机相近的水平。

IO虚拟化

 

常见的IO虚拟化主要有三种方案:基于软件模拟的方案,这种方案里, 中断、DMA的访问都是通过软件实现的,优点是可以模拟任何硬件的模型,缺点是性能不会太好;半虚拟化技术,主要是为了解决软件模拟性能问题,比如串口对性能要求不高可以采用软件模拟,但是磁盘设备、网卡设备对性能要求高,主流方案是采用半虚拟化技术,前后端相互感知,通过Shared Memory控制请求的传输,两个设备之间的通知也是基于快速消息传递,性能很高;设备直通模式,比如PCIE的直通、网卡SROV直通,对性能更高的可以采用此模式,可以达到和物理机上直接使用接近的性能,但是设备和虚拟机的耦合会对管理造成影响。

虚拟化架构优化

虚拟化平台升级及优化

 

早期的阿里云后台采用Xen的虚拟化方案,之后切换到了KVM里面。KVM能够给虚拟机提供更好的性能、稳定性, 更重要的是架构简洁,可维护性高。

 

虚拟化的整体架构如上图所示,最上方是后羿管控系统,主要负责虚拟机生命周期的管理,下发虚拟机启停、关闭、销毁等操作到物理机,调用Libvirt接入API,而Libvirt通过调用Qemu完成虚拟机的操作。系统使用Virtio技术做磁盘和IO设备的虚拟化,内核中使用vhost-net/vhost-blk模块来加速Virtio的性能。

新虚拟化平台的特性

  • 热升级架构:所有组件热升级,由于开源代码有安全漏洞,热升级技术为性能保驾护航;
  • 高可用性架构:高效、稳定的热迁移,CPU/内存的热插拔,vMCE支持,内核热补丁;
  • 高性能网络架构:支持vhost-net,支持多队列虚拟网卡,SRIOV硬件网卡虚拟化;
  • 高性能存储架构:支持dataplane增强的高性能分布式存储,支持SPDK的超高性能用户态框架。

高性能网络方案

 

高性能网络是基于SRIOV和万兆网卡技术来做的。

高性能云盘/本地盘方案

 

SSD云盘的数据可靠性非常高,对数据可靠性要求不是非常高的业务可以使用高性能本地盘。

高效热迁移技术

 

不同集群中的数组集的负载出现不均衡情况时,需要将负载特别高的物理机上的虚拟机迁移一部分到负载低的物理机上,如果没有热迁移技术则只能采用停机迁移的方式,用户可以感知到,但是热迁移技术用户是感知不到的。另外,当物理机硬件出现故障时,比如磁盘坏道变多、可校正ECC较多,此时就可以把此物理机上的所有虚拟机热迁移到其它物理机上,然后对故障机器进行维护。当机器上软件版本出现很大问题没办法进行热升级的时候,也可以使用热迁移技术进行迁移升级。

虚拟机CPU/内存热插拔技术

 

当升级设备时,不想停机升级,则可使用热插拔技术进行扩容。

软件层面tuning

在软件层面进行了大量的优化:Pvtimer、Pvipi、Posted interrupt、power。

优化效果

 

上图反映的是一台虚拟机在跑红包其中某一个业务的时候,虚拟机每秒vmexit次数的统计。蓝色代表优化前,红色代表优化后。从图上看出,优化后退出次数明显减少,虚拟机性能越来越接近物理机表现。

时间: 2025-01-08 12:26:30

CPU、内存、IO虚拟化关键技术及其优化探索的相关文章

支撑华为云计算的虚拟化关键技术

支撑华为云计算的虚拟化关键技术 杨晓伟 •虚拟化背景.热点与趋势 •UVP在云计算中的应用及关键技术 temp_12122409373843.rar

统计和分析系统性能【IO CPU 内存】的工具集合

统计和分析系统性能[IO CPU 内存]的工具集合 blktrace http://www.oschina.net/p/blktrace 获取磁盘写入的信息 root@demo:~/install/percona-toolkit-2.2.1# debugfs -R 'stats' /dev/sda1 debugfs 1.41.11 (14-Mar-2010) debugfs -R 'stats' /dev/sda1|grep Block debugfs 1.41.11 (14-Mar-2010)

风起云涌,5G物联网时代的关键技术SDNFV

1.SDNFV的定义 SDNFV是Software Defined Network Function Virtualization的缩写.由Software Defined Network(软件定义网络, 缩写SDN)加上Network Function Virtualization(网络功能虚拟化,缩写NFV)合并而成. SDN诞生于美国斯坦福大学Clean Slate课题,斯坦福大学Nick McKeown教授为首的研究团队提出了Openflow的概念用于校园网络的试验创新,基于Openfl

智慧城市建设的关键技术研究

目前我国正处在快速的城市化进程中,城市规模不断扩大,在促进经济.社会.人文发展和拉动国家整体发展水平上都起到非常重要的作用.然而,随着城市环保.节能.交通.产业转型等压力上的日益增加,亟需新的城市发展模式与管理工具来提升城市发展水平.伴随着信息技术的快速发展与广泛应用,"智慧城市"的概念呼之欲出.越来越多的城市在"十二五"规划中提出了把建设智慧城市作为转变发展方式,所以未来智慧城市建设将在我国掀起一轮新的高潮.智慧城市作为信息技术与城市建设的完美结合,涉及技术众多.

云计算、虚拟化 未来技术的商业智慧

本文讲的是云计算.虚拟化 未来技术的商业智慧,[IT168 资讯]从云计算.虚拟化.到随时随地上网等,未来技术不再仅仅是工程师驾驭的产物,而是创新精神与商业智慧的巧妙结合 "如果您的孩子需要零花钱,您可以从电脑钱包中给他转账5美元.此外,当您驾车驶过机场大门时,电脑钱包将会与机场购票系统连接,检验您是否购买了机票. "您可以亲自进入地图之中,方便的找到每一条街道或每一座建筑. "音乐将不再存储于CD或者磁带等笨重的媒介中,而是存储在一台服务器上,供用户通过互联网下载.&quo

DC/OS关键技术与应用场景

本文讲的是DC/OS关键技术与应用场景[编者的话]文章首先对数据中心操作系统内的主要技术,包括Mesos.Yarn.Kubernetes和容器进行了阐述.根据国内外电信运营商的现状和面临的问题,提出了一种解决方案,并对技术实现及选型建议进行了讨论.最后对电信运营商应用DC/OS关键技术的案例进行了简要介绍. 引言 随着越来越多的平台.架构.系统.组件和工具等通过开源社区.小微型初创项目而衍生,不再由IT或互联网巨头独自垄断,这为IT领域各项技术的快速.活跃发展提供了良好的温床,开源技术的迅速发展

Windows CE嵌入式导航系统研究(关键技术)

1.1 GPS全球定位技术 GPS(Global Position System):全球定位系统,它是美国从上世纪 70 年代开始研制,历时 20 年,耗资近 200 亿美元,于 1994 年全面建成的利用导航卫星进行测时和测距,具有在海.陆.空进行全方位实时三维导航与定位能力的新一代卫星导航与定位系统.如今,GPS 已经成为当今世界上最实用,也是应用最广泛的全球精密导航.指挥和调度系统. 1.1.1 GPS组成 GPS 系统主要包括有三大组成部分,即空间星座部分.地面控制部分和用户设备部分[6

io端口 io内存-IO端口和IO内存的区别

问题描述 IO端口和IO内存的区别 外设IO寄存器地址独立编址的CPU,这时应该称外设IO寄存器为IO端口,访问IO寄存器可通过ioport_map将其映射 到虚拟地址空间,但实际上这是给开发人员制造的一个"假象",并没有映射到内核虚拟地址,仅仅是为了可以使用和IO内存一样的接口访问IO寄存器:也可以 直接使用in/out指令访问IO寄存器. 例如:Intel x86平台普通使用了名为内存映射(MMIO)的技术,该技术是PCI规范的一部分,IO设备端口被映射到内存空间,映射后,CPU访

68期:2015“双11”背后的关键技术专题

云周刊 本周要点 查看更多 [盘点]2015"双11"背后的关键技术 回首这一年,盘点技术界的大事件必然离不开"双11"这一场技术盛宴.当亿万用户购物狂欢时,屏幕那一头是众多阿里工程师的努力付出.为大家盘点了2015年"双11"阿里技术内幕,从应用服务.中间件.数据库到基础设施等方面工程师一线实战技术经验分享,让你更多了解"双11"背后的人和事,也希望帮助开发者从中得到借鉴. 阿里云Docker容器服务开发挑战与对策 阿里云2