论文部分内容阅读
内存去冗余化一直是计算机高性能领域研究的一个热点,在服务器上特别是云计算中,各类的服务或者虚拟机对内存的需求很高,在传统的虚拟机技术中,每个虚拟机(VM)都需要有一块独立的内存,不能的虚拟机内存之间存在着相同页面;而在轻量级的容器技术中,不同容器之间,容器与主机之间会存在着不少的文件和内存数据是重复的;在内存计算中,对内存的需求尤其大。其他包括个人计算机和终端设备如手机也存在着内存紧张的问题。因此不仅有必要,也有需求提高内存利用率。因而,探究更好的去除内存冗余度的方法将有很大的应用前景。内存去冗余就是消除内存中的相似或是相同的内存区域,把存储多份冗余的内存变为只存储一份的一种方法。系统中可能会存在大量的冗余内存,当前主要有内存压缩和内存去冗余两种方法,并且都已经成功应用在Linux内核中。内存去冗余的代表作是UKSM,内存压缩的代表作是Zswap。然而,现在Linux内核中的这两种机制是由不同的团队设计并且实现的,它们去除内存冗余的速度和方式不相同,因而不能相互替代,在内存紧张时,同步Zswap会先压缩内存,会导致UKSM无法扫描到被压缩的页面。这时需要一种协同工作机制能够协调这两种方法运行。文件系统的文件缓存存在于内存中,当前没有方法能够消除文件系统中文件缓存的冗余数据。主要原因是文件缓存存在于内存中,涉及与I/O交互的块设备,设计一种方法统一消除所有文件系统中文件缓存的冗余是个很困难的任务。但是如果可以消除内存中文件缓存的冗余数据,就可以有效提高系统内存利用率。本文对上述两个问题进行研究,针对第一个问题提出了内存压缩和内存去冗协同工作机制,协调两种方法的运行,具体设计了一种同步机制,在进行内存压缩前首先进行内存去冗余扫描,确保所有相同的页面都被合并。同时考虑了不对整个系统的性能造成过大影响。针对第二个问题,结合UKSM设计了种包含文件数据切片,页面合并,页面拆分的文件系统去冗余方法。本文的主要成果如下:1.同机制,考虑了内存压缩和内存去冗余这两种方法的特性,也考虑了协同机制对系统性能的影响,并且在Linux内核中实现了这种机制。2.设计对比实验测试了协同运行机制,丰富的实验结果证明了这个机制的有效性,并且在高CPU负荷和高内存需求时都表现良好。在给系统带来快速合并内存页面的性能优势时,对CPU占用的增加并不明显。3.针对特定的内存文件系统,本文设计了文件缓存的去冗余机制。结合UKSM的扫描设计,根据虚拟文件系统的设计(VFS),对文件(inode)切片,分割成适合采样、扫描的小块。设计了中断安全的页面比较合并机制和页面拆分的写时拷贝技术。在Linux内核中实现。4.根据内存文件系统文件缓存去冗余机制,设计对比实验,在实验中对文件缓存页面的去冗余速度高达2.28MB/s。