论文部分内容阅读
随着虚拟机的广泛应用,虚拟化技术已成为云计算领域的一项关键的支持技术。为提高虚拟机的性能,研究人员花了很多的精力去减小虚拟化的开销。其中一个很大的关注点是内存虚拟化开销。传统的全虚拟化虚拟机使用影子页表机制进行页表的虚拟化,但是影子页表需要维持与客户页表的同步,因此页面中断都会伴随开销很大的虚拟机陷出。为了避免这个开销,硬件厂商提供了一种硬件辅助虚拟化的二维页表机制,在Intel平台称为EPT(扩展页表),在AMD平台称为NPT(嵌套页表)。使用硬件辅助虚拟化的二维页表,虚拟机可以自行处理页面中断而不必陷出,省去了影子页表同步和陷出的开销。但是像二维页表这样的硬件辅助分页机制也存在固有的缺点,即访问页表有更深的层级和更长时间的查找延迟。实验表明硬件辅助分页(HAP)和影子页表分页(SP)在性能表现上各有千秋。尽管对大部分程序来说,两种机制的性能差别并不明显,但是仍有一些程序在不同的机制下可以达到34%的性能差距。本文提出了一种动态切换分页机制(DSP),通过监测TLB失效和页面中断数来动态地选择切换内存虚拟化模式。DSP选取TLB失效频率和页面中断频率作为程序的特征数据,通过分析基准测试程序在HAP模式和SP模式下的运行特征及运行时间,分析总结出适于运行在HAP模式的特征和适于运行在SP模式的特征,并给出一个程序特征更适于运行在何种模式的判断规则。在开启DSP机制时,虚拟机管理器采集程序运行特征,并根据规则判断出该特征更适应于何种内存虚拟化模式,从而判断需要保持在当前模式运行还是切换到另一种模式运行才能获得更高的效率。经过实验测试,使用DSP机制动态地选择合适的内存虚拟化模式,虚拟机的运行效率总能达到或接近HAP模式和SP模式中较优的一个,有时甚至比单纯地使用HAP模式或SP模式效率都更高。由于DSP中使用的分类规则是针对特定的实验环境总结出来的,换一个硬件环境则不一定适用,因此,本文在DSP工作的基础上,又探索了通过机器学习的方式学习根据特征数据进行分类的分类规则,以便于将DSP推广到新的硬件平台。由于工作量有限,机器学习的策略没有取得很好的性能表现,但仍分析了当前设计中的问题,提出了很多改进尝试的方向。