论文摘要
近年来,以共享片内Cache为特征的片上多处理器( Chip of Multiprocessors,CMPs)架构已被广泛应用于桌面计算机。服务器平台上,对提高计算机系统的性能起到了巨大的推动作用。借助虚拟化技术,多个用户能够充分共享CMP中集成的丰富计算资源,而且随着x86架构虚拟化的突破,虚拟化技术已被广泛应用于服务器整合。安全计算平台。内核调试与开发等多个领域。然而,现有的虚拟化系统多针对对称多处理器(SymmetricMultiprocessrors,SMPs)架构设计,移植到CMP架构后,多个虚拟机竞争共享缓存的问题变得非常严重,严重影响了整个系统的性能。因此,在虚拟化系统中,如何避免多个虚拟机之间的共享缓存竞争问题,充分发挥出CMP处理器架构的优势,已成为摆在研究者面前的一项新课题。现有的工作多采用静态Cache划分的方法来隔离多个虚拟机之间的共享缓存竞争。该方法存在很严重的缺点,即需要在虚拟机启动前手动分配Cache大小,并且该方法只能被动地实现性能隔离,无法主动利用程序的运行时特征来提高性能。本文在广泛深入研究虚拟机环境下二级缓存对应用程序影响的基础上,探索并提出了在CMP处理器平台下实现虚拟机动态Cache划分系统的方法,并取得了以下研究成果:(1)提出了虚拟机环境下面向二级缓存的应用程序运行时特征分类方法。以SPEC CPU2006程序集为例,研究了应用程序工作集与处理器缓存之间的关系,结合程序测试结果,依据程序的静态特征将其分为Cache敏感型。Cache污染型和Cache无关型三类;通过进一步研究程序运行时二级缓存失效率的变化,按程序的运行时特征将其分为颠簸型程序和平缓型程序两类。该分类方法为虚拟机环境下动态Cache划分算法的设计提供了理论依据。(2)设计并实现了虚拟机环境下动态Cache划分算法。该算法采用页面着色思想,通过约束虚拟机所能够访问的内存页面来实现Cache的隔离,并且能够依据程序对Cache的需求动态地调整虚拟机之间的Cache比例,在实现Cache隔离的同时提高虚拟化系统的性能。我们在Xen虚拟化系统上实现了该动态Cache划分算法,并以SPEC CPU2006为基础构建工作负载进行性能测试。实验结果表明,采用动态Cache划分方法后,系统性能比未划分情况下最高提高了5%,在颠簸型程序负载下,系统性能比静态Cache划分系统提高了7%。