论文部分内容阅读
云计算强调计算环境的灵活性,要求计算平台支持按需分配、动态调整、快速部署、及时解散等功能。系统级虚拟化技术被认为是能满足以上需求的关键技术,已被应用于搭建云计算的基础平台。系统级虚拟化的核心思想是:在一台物理主机上抽象出多个虚拟计算机(Virtual Machine,VM),每个虚拟机可看作物理主机的一个复本,能同时运行独立的操作系统(客户操作系统,GuestOS),通过虚拟机管理器(Virtual Machine Monitor,VMM)访问物理资源。VMM在硬件资源和操作系统之间进行动态映射,使虚拟机在硬件资源池内具有极高的灵活性,但是,为了维护这一映射关系,VMM介入客户操作系统访问I/O设备的流程,带来较大开销。
要优化虚拟机I/O性能,最彻底的方式是消除VMM对I/O过程的介入,由虚拟机直接访问硬件设备;而取消VMM的介入,就取消了VMM对I/O设备的控制,增大了客户操作系统与特定硬件设备之间的耦合性,从而影响虚拟机的灵活性,使虚拟机难以被迁移、也难以动态调整虚拟机使用的资源。本文分析了优化I/O性能和维持虚拟机灵活性之间的矛盾所在,并从性能和灵活性两个方面分别进行优化研究。
性能方面,本文从客户操作系统和底层资源平台分别优化:
(1)客户操作系统优化。对磁盘和网络的虚拟化性能进行了代码级的评测,总结了针对物理硬件平台设计的操作系统中存在不适应虚拟化的三类操作,通过修改客户操作系统源码或配置,合并连续引起虚拟机陷入的指令,消除在虚拟化环境下运行时操作系统中的冗余行为等,使虚拟机的磁盘和网卡的I/O吞吐率有不同程度的提升。
(2)面向交互应用的性能优化。磁盘I/O响应时间是影响虚拟化环境部署延迟和交互性能的关键因素之一,本文采用固态硬盘作为磁盘的高速缓存,优化磁盘I/O响应。缓存策略包括:1)预缓存之后将缓存设为只读,避免缓存替换,该策略可保持对性能的提升,并避免频繁写操作对固态硬盘的损耗;2)优先缓存只读数据,该策略降低了写缓存的频率,并使缓存能够适应动态变化。
(3)相似虚拟机快速启动。利用多个虚拟机的外存相似性共享读入内存的外存数据,供其他虚拟机读取相同数据时直接从内存映射,该优化可以减少磁盘I/O,加速交互响应,支持快速启动相似虚拟机(比非共享提高了45%),支持更多虚拟机同时运行。该优化充分的发挥了虚拟化的优势,实现了操作系统之间的内存共享。
灵活性方面,本文主要研究如何保持使用本地设备的虚拟机的灵活性:
(1)网卡虚实切换。本文通过修改虚拟机网卡的配置信息并修改其状态,使虚拟机在访问物理网卡与访问虚拟网卡两种模式之间能透明切换,切换时间极短且与底层网卡接口无关。利用虚实切换,可以迁移直接访问物理网卡的虚拟机,虚实切换过程不影响虚拟机迁移时的暂停时间。
(2)虚拟机全系统迁移。本文设计了三阶段迁移的方案,基于Block-bitmap的外存同步方式,能够在有限的时间内在线迁移使用本地磁盘的虚拟机,停机时间仅受Block-bitmap大小影响(取决于虚拟机磁盘容量和监控粒度)。并设计了增量迁移方案,使得当虚拟机需要迁回源主机时,只需要同步修改过的数据块。实验表明,该迁移方案即使在I/O密集型的负载情况下仍能正常执行,迁移过程中的虚拟机暂停时间极短、迁移总时间可控。在客户端看来,虚拟机上运行的服务不受影响;增量迁移传输的数据总量远小于首次三阶段迁移传输的数据总量,能极大缩短迁移总时间;基于block-bitmap的外存同步机制简单高效,性能代价小于1%。
现有的虚拟化优化工作通常针对VMM的具体实现细节,难以通用。而本文的优化方案在设计上不依赖VMM的具体实现,既可用于现有的VMM实现,也可以在未来一段时间内适应I/O虚拟化技术的新发展。