XLH: More effective memory deduplication scanners through cross-layer hints
XLH
此论文是ATC’13上的一篇文章,今天特意总结一下,希望对读者会有所帮助。
相关资料
XLH: More Effective Memory Deduplication Scanners Through Cross-layer Hints
这里可以下载到paper,同时还有视频观看。KSM++
该工作在RESoLVE’12发表过。Efficient Main Memory Deduplication Through Cross Layer Integration
XLH作者的phd毕业论文,里面内容更加详细。友情链接
论文详解
Cross Layer I/O-based Hints (XLH)
以前工作的缺点
内存扫描器只能用于重删相对静态的内存页。当前的扫描仪需要相当多的时间来检测新的共享机会(例如5分钟),因此不会充分发挥共享潜力。
贡献点
- 本文的主要贡献是观察主机中的客户机I/O,并将其用作内存扫描器的触发器,以加快识别新的共享机会。
- 每当客户机访问他们的后台存储时,XLH会在主机的虚拟文件系统(VFS)层中生成页面提示。然后,XLH在其内容建立后不久就对这些提示的页面进行索引,从而将它们提前进入合并阶段。
实现
生成重删提示
当虚拟机从虚拟磁盘映像(VDI)读取数据时,主机中的虚拟DMA控制器处理请求并代表客户机读取物理磁盘。我们的假设是,DMA事务的目标是客户机page cache中的一个页面,因此是一个很好的共享候选。
存储提示和应对突发增长
有界循环提示栈被证明是一种适当的数据结构,以低开销存储提示。提示栈保留最后一个未处理的堆栈大小磁盘访问的历史记录。
由于有限循环堆栈的性质,XLH始终处理最新的提示,而当堆栈已满时,旧的提示被覆盖——自动修剪和老化机制证明是快速和健壮的。 不需要定期维护。
处理重删提示
我们的提示处理循环(下图所示)与KSM已经实现的完整系统扫描喷射(唤醒)交错运行。XLH共享了为KSM设置的全局速率限制,在相同的设置下,产生与未修改的KSM大致相同的CPU负载。
交错比是可配置的; hint_runs
提示处理喷射与scan_runs
扫描喷射交错。0:1的比例对应于原始的KSM实现。我们的默认比例是1:1。使用这个策略,XLH可以保证在有大量提示的情况下,依然可以执行非I/O共享机会的线性扫描。
结论
当通知扫描仪最近修改的存储器页面时,可以显着改善存储器重删扫描仪。通过告诉KSM关于I/O操作,XLH实现了这个想法。KSM然后优先处理这些页面,与线性扫描相比,XLH可以获得更好的性能。
基于I/O的提示可以显着提高内存扫描器的有效性,而不会增加扫描仪所带来的开销。 XLH发现比KSM更多的共享机会,并且可以在几分钟之前检测它们。 因此,与之前的线性扫描相比,XLH可以在虚拟之内或者不同虚拟之间挖掘出更多的分享机会。