etmem:更灵活,更强大的内存分级扩展技术

文摘   2024-10-10 19:50   广东  
随着CPU算力的发展,尤其是ARM核成本的降低,内存成本和内存容量成为约束业务成本和性能的核心痛点。
目前主流通用存储方案内存成本占比约30% [1],是服务器硬件成本中不可忽视的一部分。但当前DRAM工艺达到极限,短期突破难度大,DRAM成本下降空间小,导致内存成本挑战大。同时, 算力发展超前于内存容量发展(过去十年CPU核数增长7+倍,内存容量密度仅增长4倍),HPC等大内存诉求场景性能受限于内存容量约束。
因此如何节省内存成本,如何扩大内存容量成为存储迫切要解决的问题。
OpenAtom openEuler,简称“openEuler”提供etmem内存分级扩展技术,通过DRAM+内存压缩/高性能存储新介质形成多级内存存储,对内存数据进行分级,将分级后的内存冷数据从内存介质迁移到高性能存储介质,如持久内存(AEP)或闪存设备中,达到内存容量扩展的目的,从而实现内存成本下降 [2]。

内存扩展技术现状和需求

Linux内核在启动时会创建kswapd进程,其可以在内存紧张时将LRU队列中的冷内存页换出到交换分区。这种内存扩展方式存在配置灵活性差的问题,具体而言有以下几点:
1. 换出策略固定
kswapd进程通过系统级的LRU队列识别冷内存页并进行换出,这种方法难以针对特定进程换出,同时识别冷页的策略也无法进行自定义修改。
2. 换出时机固定
当内存中空闲页少于低水位线时,内核会唤醒kswapd进程并进行内存换出,此时机用户无法配置。
3. 不支持持久内存
kswapd无法将冷内存换出到持久内存节点上。
针对以上问题,对etmem的需求如下:
1. 定制化的换出策略支持
通过支持定制化的换出策略,etmem允许用户根据特定业务进程使用自定义的热度识别策略,达成更精细的冷页识别。
2. 更灵活的换出时机选择
etmem可以在配置文件中对换出时机进行设置,支持在系统空闲内存低于特定值,或进程内存占用大于特定值时进行扫描和换出。
3. 更多的存储后端支持
etmem的内存淘汰后端同时支持内存压缩(DRAM)、内存搬迁(AEP)、内存换出(闪存)。

etmem架构

etmem的整体架构如下图:

etmem包含客户端和服务端,两者通过socket通信机制进行交互。客户端下发创建/删除工程、启动/停止工程、查询工程的命令,服务端通过客户端下发的配置文件,读取project管理配置信息,以及engine配置信息,并执行客户端下发的操作。启动工程之后,服务端会对业务进程进行扫描,并根据扫描统计结果以及淘汰策略,对页面进行分级淘汰,实现节省内存的目标。
etmem提供了数个engine,包括slide和cslide,支持将扫描结果中低于热度阈值的冷页进行内存淘汰。cslide在slide的基础上支持了大页内存和将冷页淘汰到持久内存节点。除了自带的engine外,etmem还提供了配置接口,允许用户使用自定义的第三方engine对内存热度扫描结果进行处理,实现了定制化的内存冷热区分。
etmem的页面淘汰操作同时支持内存压缩、内存搬迁、内存换出,可以将冷页移动到不同的后备存储介质上。

主要特点

1. 透明化迁移
etmem可以在不干扰用户应用的前提下,自动将冷数据迁移至其他存储层。这种透明化的设计确保了系统在高效运行的同时,减少对前台业务造成影响。
2. 智能调度
通过对数据访问模式的动态监测,etmem能够判断哪些数据是“热数据”,并将其保留在DRAM中。相对不常访问的“冷数据”则被迁移至其他存储介质,降低了核心内存的使用负担。
3. 灵活性与扩展性
etmem支持多种内存层级组合,如DRAM、AEP和SSD。用户可以根据具体需求灵活配置内存策略,满足不同的业务场景。
4. 开源社区支持
作为 openEuler 生态的一部分,etmem的源码已在开源社区中公开,开发者可以通过Gitee访问其代码库 [2],进行定制化开发或贡献代码。

客户案例

中国电信发布了基于openEuler的天翼云操作系统CTyunOS,支持etmem内存分级扩展技术,可按照不同策略使用 DRAM和低速内存介质如SCM、AEP等不同内存,通过内存分级调度让热数据保留在DRAM高速内存区中,让冷数据交换到低速内存区,达到提升物理内存使用效率的效果。该特性适用于内存容量敏感型应用,典型如 mysql 数据库,spark等应用。与天翼云在虚拟机场景进行联合创新,拓展介质为AEP时,开启etmem相比于不开启etmem时业务性能提高了约30%,提升了物理内存性价比 [3]。

参考链接

[1] 2023年中国云计算行业发展成本分析 服务器成本占比约75%【组图】_行业研究报告 - 前瞻网 (qianzhan.com):https://www.qianzhan.com/analyst/detail/220/231205-f13beb41.html
[2] etmem源码仓库:https://gitee.com/openeuler/etmem
[3] 中国电信正式发布天翼云操作系统 CTyunOS:基于 openEuler 开源系统 - IT之家 (ithome.com):https://www.ithome.com/0/586/242.htm


OpenAtom openEuler
openEuler是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目。 openEuler 面向数字基础设施的操作系统。
 最新文章