云与虚拟化云计算模式

简介:内存虚拟化相比裸机 , 仍然存在较大差异 , 是当下值得关注的问题!
云与虚拟化云计算模式
文章图片

文章图片
云与虚拟化
云计算是通过Internet服务的方式提供动态可伸缩资源的计算模式 , 经过多年的发展已成为企业IT技术的重要支撑 。虚拟化是云计算的核心技术之一 , 将一台计算机抽象为多台逻辑计算机 , 即虚拟机 , 每个虚拟机是一个单独安全的环境 , 可运行不同的操作系统且互不影响 。
虚拟化技术给资源使用和调度带来了极大便利 , 云计算系统可以根据负载情况及时进行资源调度 , 在提升资源利用率的同时保证应用和服务不会因资源不足而影响服务质量 。然而虚拟化也是有代价的 , 对资源的抽象带来了性能损失 , 这也是虚拟化一直致力解决的问题 。
虚拟化的资源抽象可以简单划分为三部分:CPU虚拟化、内存虚拟化和设备虚拟化 。其中设备虚拟化已经可以实现网络、存储等设备直通虚拟机 , 没有性能损失;CPU虚拟化在硬件特性的支持下 , 执行普通指令性能与裸机相同;而内存虚拟化相比裸机 , 仍然存在较大差异 , 是当下值得关注的问题 。内存虚拟化
虚拟内存:说到内存虚拟化 , 就不得不提虚拟内存的概念 。早期的操作系统只有物理地址且空间有限 , 进程使用内存时必须小心翼翼以避免覆盖其他进程的内存 。为避免此问题 , 虚拟内存的概念被抽象出来 , 保证每个进程都有一块连续的、独立的虚拟内存空间 。进程直接通过VA(VirtualAddress)使用内存 , CPU访存时发出的VA由硬件MMU(MemoryManagementUnit)拦截并转换为PA(PhysicalAddress) , VA到PA的映射使用页表进行管理 , MMU在转换时会自动查询页表 。
云与虚拟化云计算模式
文章图片

文章图片
内存虚拟化:与虚拟内存的概念类似 , 一台主机上的每个虚拟机认为自己独占整个物理地址空间 , 因而需要对内存再做一次抽象 , 即内存虚拟化 , 保证每个虚拟机都有独立的地址空间 。这样一来 , 在虚拟机和物理机中均有VA和PA的概念 , 即GVA(GuestVirtualAddress)和GPA(GuestPhysicalAddress) , 以及HVA(HostVirtualAddress)和HPA(HostPhysicalAddress) 。虚拟机内的程序使用的是GVA , 最终需要转换成HPA 。两个VA到PA(GVA到GPA以及HVA到HPA)的映射同样使用页表管理 , GPA到HVA一般是几段连续的线性映射 , 由虚拟机的管理程序VMM(VirtualMachineMonitor)进行管理 。
云与虚拟化云计算模式
文章图片

文章图片
进程访存需要从VA转换成PA , 在引入内存虚拟化后 , 转换路径发生了很大的变化 。原本只需要将VA转换为PA , 虚拟化后转换过程变成GVA->GPA->HVA->HPA 。路径变得更长更复杂之后 , 对于访存的安全和性能都带来了挑战 , 这两点也是内存虚拟化需要达到的目标:1)安全 , 即地址转换的合法性 , 虚拟机不能访问不属于自己的内存;2)性能 , 即地址转换的高效性 , 包括转换关系建立的开销低 , 以及转换过程本身的开销低 。经典方案
SPT:由于最初的硬件只支持一层页表转换 , 直接用来转换虚拟机或物理机上的VA到PA都无法完成GVA到HPA的转换 。因此SPT建立了一条捷径 , 即影子页表 , 直接管理GVA到HPA的映射 , 如下图所示 。每一个影子页表实例对应虚拟机内一个进程 , 影子页表的建立需要VMM查询虚拟机内进程的页表 。
云与虚拟化云计算模式