云计算部分-计算虚拟化01

所有计算应用(含OS)并非直接承载在硬件平台上,而是在上层软件与裸机硬件之间插入了一 层弹性计算资源管理及虚拟化软件:弹性计算资源管理软件对外负责提供弹性计算资源服务管理 API,对内负责根据用户请求调度分配具体物理机资源;虚拟化软件(Hypervisor)对来自所有的 x86指令进行截获,并在不为上层软件(含OS)所知 的多道执行环境并行执行“仿真操作”,使得从 每个上层软件实例的视角,仍然是在独占底层的 CPU、内存以及I/O资源,如下图所示:

虚拟化池化差别 虚拟化计算_虚拟化池化差别


而从虚拟化软件的视角,则是将裸机硬件在多个客户机(VM)之 间进行时间和空间维度的穿插共享(时间片调度、 页表划、I/O多队列模拟等)。由此可见,计算虚拟化引擎本身是一层介于OS与硬件平台的中间 附加软件层,因此将不可避免地带来性能上的损耗。然而随着云计算规模商用阶段的到来,以及计算虚拟化的进一步广泛普及应用,越来越多的计算性能敏感型和事务型的应用逐步被从物理机平台迁移到虚拟化平台之上,因此对进一步降低计算虚拟化层的性能开销提出了更高的要求,典 型的增强技术包括以下内容。

  • 虚拟化环境下更高的内存访问效率:应用感知的大内存业务映射技术,通过该技术,可有效提升从虚拟机线性逻辑地址到最终物理地址的映射效率。
  • 虚拟化环境下更高的CPU指令执行效率:通过对机器码指令执行的流程进行优化扫 描,通过将相邻执行代码段中的“特权”指令所 触发的“VM_Exit”虚拟化仿真操作进行基于等 效操作的“合并”,从容达到在短时间内被频繁 反复地执行。由于每次VM_Exit上下文进入和退 出的过程都需要涉及系统运行队列调度以及运行 环境的保存和恢复,即将多次上下文切换合并为 一次切换,从而达到提升运行效率的目的。
  • 虚拟化环境下更高的I/O和网络包收发处理效率:由于多个虚拟机在一个物理机内需要共享相同的物理网卡进行网络包收发处理,为有效减少中断处理带来的开销,在网络及I/O发包过程 中,通过将小尺寸分组包合并为更大尺寸的分组包,可以减少网络收发接受端的中断次数,从而 达到提升虚拟机之间网络吞吐率的目的。