论文部分内容阅读
在服务器虚拟化中,多个虚拟机共享同一机器的物理内存。由于内存的读写速度通常要比磁盘等外存设备高出1~2个数量级,因此将虚拟机的数据尽量放入内存可以提升系统性能。然而研究表明,服务器有限的内存容量正在成为限制虚拟机部署密度和系统性能提升的瓶颈。内存重删和动态内存调节是提高虚拟化系统内存利用率的两个重要技术。内存重删通过消除重复数据减少虚拟机的内存占用量。动态内存调节通过回收虚拟机空闲内存提高宿主机内存利用率。本文分析了现有方法的不足,提出了相应的优化方案,具体包括:(1)低开销的内存重删方法现有重删方案采用页面比较的方式发现重复页面,然而这一过程存在较多的无效比较。当页面数量增多时,无效比较的次数增加,CPU开销也随之增加。这会导致重删的效率随着服务器内存容量增加而逐渐降低。本文提出了一种低开销的重删方法CBF-KSM。CBF-KSM的基本思想是使用Counting Bloom Filter算法在页面比较之前进行过滤,将非重复的页面过滤掉,仅允许重复页面执行比较过程。由于系统中非重复页面的数量通常要比重复页面多,因此CBF-KSM可以大大减少页面的比较次数,降低重删进程的CPU开销。在系统内存紧张时,重删还可以减少数据在内存和磁盘之间换入换出的次数和数量,提升应用的性能。实验结果表明:一方面,在相同的重删速度下CBF-KSM和KSM的重删效果相同(节约的内存量相等),而CBF-KSM的CPU开销仅为KSM的一半以下。另一方面,在内存紧张时,二者以相同的CPU开销运行,CBF-KSM重删后应用的执行时间最高缩短46%,KSM重删后应用执行时间最高缩短30%。相比KSM,CBF-KSM可以进一步将性能提升16%。(2)性能感知的多虚拟机动态内存调节方法现有的动态内存调节方法无法准确识别虚拟机访存特征(如内存敏感程度)的差异,会导致多虚拟机之间性能不均衡,而且隔离性容易导致内存调节过度带来虚拟机性能下降。本文提出了 一种虚拟机性能感知的动态内存调节方法PBPF。该方法具有三个特征,第一,虚拟机内存状态评估模型,它能识别虚拟机的访存特征,并根据特征差异指导内存调节过程。本文的评估方法能体现不同虚拟机对内存敏感程度的差异,防止出现内存调节不准确导致虚拟机之间性能不均衡。第二,递进式内存调节策略,它是指内存调节前期以细粒度进行,之后若虚拟机性能无明显下降,则调节粒度逐渐增大。这既能避免因大粒度回收导致的虚拟机性能下降,又能保证内存调节的速度。第三,反馈式内存调节策略,它通过监测虚拟机性能变化及时调整内存策略,避免了因过度调节或突发内存请求影响虚拟机性能,保证了虚拟机性能稳定。实验结果表明,在内存紧张时,该方法能把多虚拟机之间最差性能与最优性能的差距由原方案的43%缩短到10%,且应用平均执行时间基本达到内存充足时的最优情况。