SmartMD

此论文是我们实验室的工作,发表在ATC’17上,今天特意总结一下,希望对读者会有所帮助。

相关资料

问题

大页可以带来系统性能的提升,但是内存去重效果较差;而Linux KSM为了去重效果好,拆分大页,牺牲了大页的优势。如何获取大页带来的性能优势,同时又保持较好的去重效果,这正是SmartMD所要解决的问题。

设计

SmartMD的主要思想是拆分高重复率的冷大页以节省内存空间,拆分完的大页在变热的时候,将小页重新合并为大页以提高系统的性能。

概要

SmartMD有三个单元构成:监视单元、选择单元、转换单元。

监视单元

监视单元使用线程定期扫描页面以测量页面访问频率和重复率,下图展示了监视单元的工作流程。

选择单元

为了提高内存访问性能,选择单元根据两个度量(即访问频率和重复率)选择候选大页进行拆分。

选择单元判定大页是冷的还是热的,判定大页的重复率,它的工作流程是:
扫描大页时,选择单元首先读取其访问频率, 如果此页面被指定为冷的,则选择单元将进一步确定其重复率是否大于设定的阈值, 如果是的话,就拆分该页面。 另一方面,当选择已拆分大页进行合并时,选择单元只选择热页作为候选对象。

转换单元

转换单元负责大页和小页之间的转换,包括大页的拆分和拆分页面的合并。

为了降低大页和小页之间的转换成本,我们提出了一种自适应转换方案,以根据内存空间利用率来提高SmartMD的性能。 这个想法是:如果系统有足够的可用内存空间,我们只使用大页来提高系统性能;如果内存空间不足,我们则将大页分解为小页,以提高重删效率。

总结

这项工作提出了SmartMD(一种自适应和高效的方案)来管理具有不同大小页面的内存。 SmartMD的主要思想是拆分高重复率的冷大页以节省内存空间,拆分完的大页在变热的时候,将小页重新合并为大页以提高系统的性能。因此SmartMD可以获得大页带来的系统性能提升,并同时获得较好的去重效果。