议程与分类法
研报首先介绍了内存分层的意义,并按分类法将易失性内存分层分为用户模式、内核模式、HBMDRAM、PMEM和CXL等类型,呼吁采取行动优化内存管理。
采用内存分层的原因
内存分层可以使具有共享内存设备的单个主机和群集受益。CXL将带来内存池化机会,CSP报告显示计算主机中20%至40%的内存搁浅,50%的租用内存很少被触及,主机耗尽CPU内核以在内存耗尽前租用,租用内存未充分利用。
内存分层分类法
内存分层涉及不同类型的内存协同工作以满足内存分配需求,可能涉及动态页面移动。分类法包括:
- 主内存:硬件向操作系统内核提供的可管理的总地址空间,与CPU/插槽相关。
- 特殊用途内存:不与CPU关联且仅表现为独立NUMA节点的内存空间。
- 永久内存:具有永久行为的内存设备。
- 可寻址内存:可以映射以满足分配请求的所有内存空间。
内存配置文件
每个内存将具有将放置在NUMA域中的属性,每个NUMA内存域将包含相同类型的内存。媒体、Bus、延迟、带宽等属性将填充ACPI SLIT / SRAT表以显示拓扑。
内存拓扑如NUMA
主内存、特殊用途内存以及PMEM将显示为NUMA节点,但SPM和PMEM不会像传统NUMA节点一样直接分配给CPU,而是仅作为内存域存在。NUMA域和相对距离主机与常规NUMA节点(CPU + 内存在每个node)具有异构的主机内存拓扑,NUMA仅具有内存的节点无CPU。
分层类型
根据实现页面放置逻辑的位置对分层方法的类型进行分类,类型不是独占的,可以在高级用例中进行组合。内存拓扑理解将确定是否实现应用程序透明度或修改级别,可以是基于软件或硬件的。
- 类型 I - 基于硬件的分层:内存拓扑是从内核和用户模式的上层抽象出来的,无需更改代码或内核模块即可使用,单片配置和完全透明的所有层。
- 类型 II - 基于内核的分层:存储器拓扑是从用户空间中抽象出来的,在内核级别控制存储器页的放置,无需更改用户空间应用程序,安装内存分层内核模块。
- 类型 III - 内存即服务:存储器拓扑在用户空间中呈现给Mem作为服务,应用程序可以使用内存服务作为内存分配的“代理”,内存放置由内存服务控制。
- 类型 IV - 开明的应用程序:应用程序可以看到内存拓扑,应用使用内存API来访问和管理内存,内存放置由应用程序控制。
- 混合模式 - 多种类型:在系统中组合两种或更多类型的内存分层,例如类型II和类型IV - 基于内核加上CXL内存设备。
呼吁采取行动
创建更好的内存分析和热页面检测,创建更好的预测模型以最大程度地减少页面升级/降级的影响,延迟敏感度模型,业务流程集成。