问题
分层内存是缓解内存需求的一种解决方案,它利用不同容量、延迟和成本特征的多种内存类型,在满足内存需求的同时降低服务器硬件成本。理想的分层存储系统应该(1)将数据放置在适当的存储器层,(2)降低地址转换成本,以最大限度地降低高容量分层存储的性能退化。
现有方法局限性
-
现有关于分层内存的工作会做出次优页面放置决策,因为它们依赖于各种启发式和静态阈值,而不考虑整体内存访问分布。理想的冷热划分应该综合考虑DRAM容量与真实的热集大小。一些工作在关键路径中迁移页面(例如,页面故障),增加了不可忽略的延迟。
-
为应用程序决定合适的页面大小是困难的。使用大页可以减少地址转换开销和增加TLB覆盖范围。但并不是大页中的所有子页面都同样热,如果一个大页由于其很少的热子页而被提升到快速层,那么冷子页的快速层内存空间就会被浪费。在这种情况下,拆分高度倾斜的大页并只将热子页提升到快速层会更有益。理想的内存管理应动态决策页面大小。
本文方法
我们提出了Memtis,一种分层存储系统,动态确定页面位置和页面大小。
-
提出内存访问分析器。使用Intel PEBS(Processor Event-Based Sampling)工具实现,对LLC load misses和store指令进行采样,直接获取物理地址,用于统计对应页的访问计数,将其表示在页面访问分布直方图中。
-
动态迁移冷热页面。根据页面访问分布直方图动态调整阈值,区分冷热页面,热页面常驻快速层,有额外空间容纳冷页面。将冷热变化页面计时迁入或迁出快速层。
-
动态确定页面大小。应用程序默认使用大页,根据访问频率评估大页的访问倾斜度和拆分收益,选取拆分收益大的大页进行拆分。
开源代码:https://github.com/cosmoss-jigu/memtis
评估显示,Memtis的性能优于最先进的分层系统高达169.0%,优于最佳的分层系统高达33.6%。
实验
实验环境:配备Intel Xeon Gold 5218R@2.1 GHz处理器(20核)的双插槽服务器,每个插槽具有6×16GB DDR4 DRAM和6×128GB Intel Optane DCPMM。使用两种不同的分层内存设置:(1)DRAM+NVM(Optane DCPMM,load:300ns),(2)DRAM+模拟CXL内存(crossNUMA DRAM,延迟增加,load:177ns)。
数据集:图处理、HPC、ML、内存数据库和索引查询、SPEC CPU 2017
实验对比:性能、操作数、快层命中率
实验参数:内存配置(快层:容量层)、数据集、内存大小、时间
总结
针对分层内存,现有方法对冷热页面划分不准确、不能动态调整页面大小。本文提出Memtis,可以动态确定页面位置和页面大小。(1)提出内存访问分析器。使用Intel PEBS(Processor Event-Based Sampling)工具实现,对LLC load misses和store指令进行采样,获取物理地址,统计页访问计数,将其表示在页面访问分布直方图中。(2)动态迁移冷热页面。根据页面访问分布直方图动态调整阈值,区分冷热页面,热页面常驻快速层,有额外空间容纳冷页面。将冷热变化页面计时迁入或迁出快速层。(3)动态确定页面大小。默认使用大页,根据访问频率评估大页的访问倾斜度和拆分收益,选取拆分收益大的大页进行拆分。