UniMem: Redesigning Disaggregated Memory within A Unified Local-Remote Memory Hierarchy
START Basic
# UniMem: Redesigning Disaggregated Memory within A Unified Local-Remote Memory HierarchyTL;DR:基于缓存一致性的DM,做了消除中间层、优化缓存、页面提升的优化
1 Introduction
分离式内存系统,基于RDMA或者CXL
现存的三种分离式内存系统
- 基于对象的分离式内存系统
- 基于页的分离式内存系统
- 缓存一致性分离式内存系统
基于缓存一致性的分离式内存系统面临的问题
- 地址转换开销
- 缓存颠簸和污染
我们建议UniMem重新设计远程内存机制,将远程内存池直接暴露给CN的物理内存空间,从而消除间接层
我们扩展了操作系统的内存热插拔功能[11]来实现灵活的远程内存管理
考虑到 CN 上远程内存的本地缓存必须承受缓存抖动和污染,我们提出了一种本地缓存机制,为频繁访问的页面保留大部分缓存空间,并及时驱逐很少或没有重用的页面
它根据页面热度和热度碎片确定设备连接内存中的哪个页面应迁移到主机内存
本文中提到的基于缓存一致性的DM系统代表了通过网络扩展远程内存的工作
2.2 Motivation
1.间接层的开销
基于缓存一致性的DM引入了额外的步骤,不仅需要将虚拟内存地址转换为伪造的物理内存地址,还要将该伪造的物理内存地址转换为远程内存地址。
做了一个实验验证地址转换开销有多大,用perf记录LLCmiss和总运行时间,假设每次地址转换开销128ns,运行一系列应用PR GC(反正都是局部性差的),得到地址转换开销占18.7%到58.7%
2.缓存污染和抖动
DM通常用CN的DRAM做缓存,作者设计实验证明缓存污染和抖动严重,并且4KB的缓存粒度会导致数据放大。
3 UniMem Design
3.1 Shadow-Region and Remote-Balloon
UniMem 引入了 Shadow-Region,通过将远程内存映射到 CN 的系统物理空间,将整个远程内存池呈现给每个 CN。随后,UniMem提出了资源管理机制Remote-Balloon,负责动态内存分配、释放和同步。一旦CN通过Remote-Balloon向远程内存池请求内存资源,特定的远程内存范围就会被CN热插拔。 CN的操作系统可以识别这种热插拔的物理内存,并将其直接分配给应用程序。
Shadow-Region:在UniMem中,我们还使用缓存一致性加速器的PCIe BAR来为Shadow-Region分配物理内存空间区域。因此,CN 启动时需要远程内存池的容量。
图7显示Shadow-Region在每个CN中占用与远程内存池大小相同的物理内存空间。属于Shadow-Region的页面作为普通的物理内存资源,由操作系统的页面分配器按需分配给应用程序。
就是说通过PCIE的Shadow-Region避免了中间层,这块Shadow-Region是提前申请好一块内存池,用到再分配。(这点东西写这么多,前面还用实验来铺垫,太会讲故事了)
Remote-Balloon:提出Remote-Balloon借助内存热插拔功能有效地实现动态灵活的内存管理[11]。内存热插拔功能支持运行时物理内存上线和下线,可实现动态远程内存分配和释放
说白了就Shadow-Region可以建立设备内存到主机物理内存的映射,但是没法保证独占性,就用图7中的数据结构管理每个host的设备内存,并通过热插拔的方式添加删除。
内存热插拔粒度取决于架构,例如 x86_64 中为 128 MB,ppc64 中为 16 MB。这种远程内存分配机制可以集中式或分布式方式实现
真鸡儿水
3.2 Filter-Cache
一种高效缓存方法
将缓存空间划分为活动列表和非活动列表。活动列表用于保留流行的数据块,以吸收尽可能多的远程数据访问。非活动列表充当守卫,包含首先访问的块,以保护活动列表免受颠簸和污染。
Filter-Cache中的缓存块大小设置为sub-page,以减轻数据放大。此外,Filter-Cache将缓存空间划分为相等的部分,以构造多对活动列表和非活动列表,这类似于组相联缓存以实现并行缓存操作。
和S3FIFO很像
- Filter-Cache 首先搜索refault队列以验证该块之前是否已从活动列表或非活动列表中逐出
- 第一次访问的块插入inactive,如果是在refault队列中就直接插入active
- 如果inactive中的数据再次被访问就放入active
- 当该块被逐出,加入refault队列中,如果修改就写回
UniMem规定活动列表的大小最多可以增长到缓存空间的90%,非活动列表至少占据缓存的10%。活动列表和非活动列表分别组织为 LRU 和 FIFO 列表。
3.3 Fully-used Page Promotion Scheme
充分利用页面提升方案,充分利用的页面被定义为频繁使用且碎片热度较低的页面。为了减少缓存一致性互连的开销,将这些页面提升到主机内存被认为更合适。
4 Evaluation
对照试验设置:KONA,自己的消融实验
模拟设置
我们使用 Intel Pin [15] 收集工作负载的内存访问操作、内存地址和访问数据大小,并在模拟的 CPU 缓存上重放这些操作,以获得工作负载的 CPU 缓存未命中事件
UniMem/tool/source/pinatrace.cpp at main · yijieZ/UniMem (github.com)
6 Conclusion
在本文中,我们介绍了 UniMem,它通过统一的本地-远程内存层次结构重新设计了基于缓存一致性的 DM 系统。 UniMem 仔细利用主机内存和设备附加内存为远程内存构建分层本地缓存。实验表明 UniMem 是一种有效的解决方案,可为各种工作负载带来显着的性能改进。
Back: you have read it ! Tags: cxl END