论文部分内容阅读
云计算的出现为现代计算模式带来了革命性的变化。随着网络和虚拟化技术的发展,虚拟云已经成为一种全新的提供计算资源服务的方式。云服务提供商(诸如亚马逊、微软等)通过集中式管理虚拟云服务器并提供按需计算模型的方式,显著地降低了建设,维护和升级计算基础架构的成本。这也在很大程度上降低了用户租用和维护计算资源的成本。因此云计算服务也越来越受到来自公司、组织甚至个人用户的青睐。于此同时,多核技术也逐渐普及和发展,单块CPU芯片上的核数也逐年增加。目前Intel和AMD公司都早已在市场上发布了12核的CPU, AMD公司甚至以及发布了他们的16核CPU产品。同时随着对称多处理器技术的发展,单台物理服务器已经可以配备80个物理CPU核心。在可预见的未来,单台物理服务器配备上百个CPU核心也不足为奇。因此虚拟云中的客户虚拟机也很可能会配备丰富的资源(例如,CPU核心数)。事实上一部分云服务商已经开始提供32核虚拟机的租赁服务。随着客户虚拟机CPU核心数目的增加,如何在虚拟环境中提高并发程序的性能及可伸缩性也就变得越来越重要。然而,目前对虚拟化系统的性能及可伸缩性的研究工作依然非常有限,大多数研究工作集中于虚拟化系统的某个特殊子系统,例如网络系统的性能、虚拟机调度系统的性能等。目前仍然没有一套完整的工作来对虚拟化系统各方面的性能及可伸缩性进行研究和分析,并根据找到的问题提出有针对性的解决方案。本论文力图对虚拟化系统各个方面的性能及可伸缩性做详细的研究与分析,主要包括虚拟化系统软件、I/O虚拟化系统以及虚拟机管理软件三个方面。在这个研究工作的基础上我们提出了一套实用的、系统的解决方案在虚拟化系统的不同层面(软件层、硬件层)对虚拟化系统进行优化以提高系统的性能及可伸缩性。本文的主要内容和贡献包括以下几个方面:1.首个对虚拟化系统的性能及可伸缩性进行完整性测评和分析的工作。我们以Xen虚拟化系统和KVM虚拟化系统为基础对虚拟化系统的各个方面在多核平台上的性能及可伸缩性进行了研究,并将多核虚拟化环境的性能和可伸缩性问题归为以下三类:1)虚拟化系统软件的性能及可伸缩性问题,包括系统软件栈设计与实现和虚拟机调度机制造成的问题;2)硬盘等外设虚拟化的性能及可伸缩性问题;以及3)虚拟机管理软件的性能及可伸缩性问题。2.我们针对虚拟化系统软件的可伸缩性问题提出了三个性能优化系统:Cer-berus+系统、iXen系统和vCPU-Bal系统。Cerberus+系统通过在多核平台上聚集多个同构的虚拟机(每个虚拟机配备1至2个vCPU)为同一个并发程序提供多种计算服务的方式避免单个虚拟机因配置的vCPU数目增加而性能下降的问题,同时又能保证并发程序的运行。在48核的AMD服务器上对不同应用程序的测试结果显示Cerberus+系统的性能要比Xen-Linux系统的性能提升1.37倍至11.62倍,并且Cerberus+系统具有更好的可伸缩性。iXen系统根据造成系统软件栈性能及可伸缩性问题的原因入手,结合多种优化机制逐一解决或缓解了Xen虚拟化系统中存在的时间模拟器竞争问题、空闲时间问题、共享缓存问题以及指令TLB缓存缺失问题。在48核的AMD服务器上对不同应用程序的测试结果显示iXen系统的性能要比Xen-Linux系统的性能提升1.10倍至9.42倍vCPU-Bal系统通过动态调整虚拟机vCPU数目来尽量避免vCPU调度竞争的方法解决由于虚拟机调度造成的可伸缩性问题。在12核的Intel服务器上的测试结果显示vCPU-Bal系统能提升Xen系统13.6%的性能,KVM系统25.5%的性能。3.我们提出了首个硬盘I/O虚拟化的系统VFlash。我们通过对固态硬盘内部各部件进行虚拟化的改造并利用SR-IOV技术实现了高效的硬件固态硬盘虚拟化,并基于DFTL和FAST两种闪存转换层算法设计了两种适合于虚拟环境的闪存转换层算法。VFlash系统不但可以有效消除软件模拟虚拟硬盘设备所带来的开销,而且还能充分开发了固态磁盘内部的闪存并发访问特性。通过使用FlashSim模拟器的模拟测试结果显示从硬件性能开销上看VFlash系统对单个虚拟硬盘性能的影响很小,但是却能在多个虚拟机的环境下充分发挥固态硬盘的并发性能。4.我们通过对虚拟机动态迁移操作的可并行性研究发现虚拟机迁移操作中大多数子操作都可以通过数据并发技术和流水线并发技术进行并行化。在此技术上我们基于多线程技术设计了并行虚拟机迁移系统,PMigrate系统,并分别在Xen系统和KVM系统上进行了实现。测试结果显示的PMigrate系统可以将虚拟机迁移的时间缩短2.49倍至9.88倍,并将迁移过程中虚拟机宕机时间缩短1.9倍至279.89倍。