CXL 内存池:一台服务器用不完的内存,能否分给另一台?

TL;DR

CXL 内存池化让数据中心有机会按需分配扩展内存。本文区分 pooling 与 sharing,说明资源复用的价值,也提醒远端内存并不等同于本机 DRAM,收益取决于延迟、拓扑和管理软件。

CXL 内存池化让数据中心有机会按需分配扩展内存。本文区分 pooling 与 sharing,说明资源复用的价值,也提醒远端内存并不等同于本机 DRAM,收益取决于延迟、拓扑和管理软件。

CXL 内存池:一台服务器用不完的内存,能否分给另一台?

一台服务器的内存暂时富余,另一台却正在为内存不足发愁。能否像调度网络带宽那样,把内存资源按需分配给不同主机?CXL(Compute Express Link)是一套面向处理器、加速器与内存设备的互连标准,其中的内存池化设想,就是让多台机器更灵活地使用一组可分配的内存资源。

先区分两个经常混在一起的词:pooling(池化)与 sharing(共享)。池化通常意味着系统把某些内存容量分配给一台主机,之后也可能撤回并重新分配;在某个时刻,这块容量主要归一个主机使用。共享则强调多个主机能够同时访问同一资源,并需要处理一致性与协调问题。两者的目标和系统复杂度并不相同。

CXL 提供主机与设备之间的高速互连及内存语义,使扩展内存不必只是传统意义上挂在远处的一块“磁盘”。在支持的系统架构里,内存设备可以通过 CXL 接入,资源管理软件再根据负载和策略进行分配。数据中心可据此把内存容量从闲置主机转给需求更高的工作负载,减少每台服务器为了应付峰值而永久多配内存的压力。

但“连得上”不等于“和本机 DRAM 完全一样”。扩展内存的访问延迟、带宽、拓扑位置、设备容量以及错误恢复方式都可能不同。操作系统和应用是否把它当作普通内存使用,还是把它视作分层内存,也取决于平台软件栈。调度若没有考虑数据冷热,把频繁访问的数据放在更远的内存上,反而会拉低性能。

内存池还需要一整套基础设施:支持 CXL 的处理器、交换设备与内存模块,固件和操作系统支持,以及负责分配、隔离与回收的管理软件。池化并非魔法式的“多机自动合并成一台超大电脑”。主机之间的安全边界、故障域、带宽争用和资源回收时机,都必须纳入设计。

可以把它想成办公楼里的共享物料仓:各团队不必各自囤够全年峰值库存,而可以按需领用;但物料仓更远,领用需要规则,而且不能把别人正在使用的东西突然收走。CXL 内存池化的价值在于提高资源利用率,而不是消除本地与远端内存的差别。评估收益时,要看真实工作负载的延迟敏感程度、容量峰谷和整个系统的协调成本。

来源:Compute Express Link:CXL 3.0 White Paper

KEEP READING