当前位置:问答库>论文摘要

题目:多虚拟机内存高效合并机制的研究与实现

关键词:云计算,虚拟机,内存去冗余,内存扫描,内存共享

  摘要



随着云计算技术的完善与普及,越来越多的应用被部署到大型云计算平台,有限的内存资源逐渐成为云计算平台的主要瓶颈,如何优化提高虚拟化技术中的主存利用率是云计算环境中最受关注的问题之一。虚拟化场景下的内存优化技术是一种通过优化虚拟机内存的使用来提高宿主机主存利用率并实现内存超量使用(Memory Overcommit)的技术。

现有虚拟化场景下的内存优化技术主要包括三大类:内存动态调整技术、内存压缩技术和页面共享技术。现有的工作均能在一定程度上优化内存使用从而提高主存的利用率,然而也存在如下一些问题。问题一是内存压缩技术应用场景较窄,性能不高;问题二是内存动态调整技术会剥夺虚拟机内运行应用的资源从而导致性能降低,而且内存动态调整的过程难以掌握。相比于前面两种内存优化技术,页面共享技术是一种实用且易用的内存优化技术,特别是在虚拟化平台上虚拟机内存页面的去重工作对节省内存占用量有重要作用。然而第三个问题是现有的页面共享技术不能充分结合虚拟机内存的使用规律进行页面优化,因而效率不高。

在分析研究诸多虚拟化场景下的内存优化技术后,本文从第三个问题出发,基于实用性较强的页面共享技术,设计并实现了多虚拟机内存高效合并系统SmartKSM。我们的主要贡献是:

1)        通过对相同页面共享技术扫描流程的建模,我们提出对一个页面连续两次扫描的平均时间间隔是影响内存节省量的重要因素。一个页面连续两次扫描的平均时间间隔越长,能够发现的相同内容的页面越少;反之亦然。一般情况下,一个页面连续两次扫描的平均时间间隔即是一轮内存扫描所需时间。针对上述问题,我们提出了细粒度内存扫描以提高相同页面比较的效率,进而给出细粒度内存扫描所应遵循的原则。

2)        我们提出基于页面类型的内存扫描机制,通过页面在客户机操作系统中的用途来对虚拟机内存进行划分,在每一轮内存扫描过程中针对特定页面类型进行扫描,从而降低内存扫描的粒度并提高内存扫描的针对性。

3)        我们提出基于虚拟机内进程的内存扫描机制,根据虚拟机内运行进程的内存占用情况来对虚拟机内存进行划分,从而实现细粒度的内存扫描并提高内存扫描的针对性。

4)        我们通过实验发现了相同页面共享中存在基于页面类型的聚集分布特征,即内容相同的页面有较大可能均来自于客户机操作系统的同一页面类型。这一规律保证了基于页面类型的细粒度内存扫描能够成功匹配相同内容的页面,我们可以利用这一规律来提高页面内容匹配的针对性。

5)        设计并实现了多虚拟机内存高效合并系统,利用基于进程和基于页面类型这两种内存扫描方式实现细粒度内存去冗余机制。

本文通过多种虚拟机负载实验对本系统的性能进行了测试,并与原始的KSM项目进行比较。实验结果显示在虚拟机内运行编译内核负载情况下能够比KSM多合并37%~49%的页面,同时基本保证了应用原有的性能;对于Idle负载的虚拟机能更快的合并内存页面,提前约34%的时间达到内存稳定;对于wikipedia这一类的内存稳定型应用负载,我们的系统的性能略优于原始KSM。以上结果说明,我们的系统能有效利用短期的页面共享机会(short-term page sharing opportunities);传统的相同页面共享技术(如KSM)对内存稳定型应用有较好的性能,我们的系统也同样能达到传统技术的内存扫描性能。