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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

本文章来自于阿里云云栖社区

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

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

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

视频回顾:点击进入(原文链接:

https:///edu/lesson/play/617?spm=5176.100239.blogcont71 295.16.5uKcT6)

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直通,对性能更高的可以采用此模式,可以达到和物理机上直接使用接近的性能,但是设备和虚拟机的耦合会对管理造成影响。虚拟化架构优化

虚拟化平台升级及优化

相关文档
最新文档