XLH

此论文是ATC’13上的一篇文章,今天特意总结一下,希望对读者会有所帮助。

相关资料

论文详解

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可以在虚拟之内或者不同虚拟之间挖掘出更多的分享机会。