传统 OS 假设 CPU、内存、存储在同一台机器上。CXL 和 RDMA 打破了这个假设——内存可以在别的机器上。
一、先看图
flowchart TD
CPU[CPU 节点] -->|CXL| MEM[内存池<br/>共享/远程]
CPU -->|RDMA| STORAGE[存储节点]
CPU -->|网络| GPU[GPU 节点]
OS[传统 OS<br/>假设本地资源] --> QUESTION[如何管理<br/>远程资源?]
classDef local fill:#388bfd22,stroke:#388bfd,color:#adbac7;
classDef remote fill:#f0883e22,stroke:#f0883e,color:#adbac7;
class CPU local
class MEM,STORAGE,GPU remote
class OS,QUESTION remote
二、资源解耦
传统服务器:
CPU + 内存 + 存储 + 网卡 = 一台机器
解耦后:
CPU 池 + 内存池 + 存储池 = 按需组合
好处:资源利用率高 → 内存空闲的机器把内存”借”给别人。
三、CXL(Compute Express Link)
3.1 CXL 1.0/2.0
CXL.mem → CPU 直接访问远程内存(load/store)
CXL.cache → 设备可以缓存主机内存
CXL.io → 类似 PCIe
3.2 CXL 3.0
- 内存池化(Memory Pooling)
- 多主机共享内存
- 硬件一致性
- 热插拔
3.3 对 OS 的影响
// 新的内存层次
DRAM(本地)→ CXL 近端 → CXL 远端 → 持久内存OS 需要感知延迟差异 → 智能放置页面。
四、LegoOS
OSDI 2018 论文:
传统 OS → 拆分为:
pComponent(处理器管理)
mComponent(内存管理)
sComponent(存储管理)
每个组件独立运行在不同的硬件上 → 通过网络通信。
4.1 远程页面错误
CPU 访问远程内存 → 页面错误 → 通过网络从 mComponent 获取页面
延迟:~1-10μs(RDMA)vs ~100ns(本地内存)。
五、Far Memory
5.1 软件方案
zswap → 本地压缩
远程 swap → 通过 RDMA 到远程内存
Google 的 Far Memory 论文:用远程内存作为 swap → 比 SSD 快 10 倍。
5.2 硬件方案
CXL 内存 → OS 感知的第二层内存 → 自动迁移热页面。
六、Linux 的适配
6.1 NUMA 扩展
# CXL 内存作为新 NUMA 节点
numactl --membind=2 ./my_app # 绑定到 CXL 内存6.2 内存分层
CONFIG_MEMORY_TIER=y
内核自动将冷页面迁移到慢内存层 → 热页面保留在快内存。
6.3 DAX
mount -o dax /dev/pmem0 /mntCXL 持久内存直接 mmap → 绕过页缓存。
七、挑战
| 挑战 | 说明 |
|---|---|
| 延迟 | 远程内存 ~300ns vs 本地 ~100ns |
| 一致性 | 多主机共享内存的一致性协议 |
| 故障 | 远程内存节点故障 → 页面丢失 |
| 安全 | 共享内存的隔离和加密 |
八、应用场景
- 数据库:冷数据放 CXL 内存 → 热数据放本地 DRAM
- 机器学习:模型参数放共享内存池
- 虚拟化:VM 内存超卖 + CXL 后备
- 缓存:Memcached/Redis 使用远程内存
九、未来方向
- CXL 3.0 内存池 → 数据中心级内存管理
- OS 需要新的内存放置策略
- 可能需要分布式 VMM
- 与机密计算结合 → CXL 加密内存
十、小结
- 资源解耦打破了 OS 对本地资源的假设
- CXL 让远程内存可以 load/store 访问
- LegoOS 是分离式 OS 的学术原型
- Linux 通过 NUMA 扩展和内存分层适配
- 延迟、一致性、故障是核心挑战
参考文献
- Shan et al., “LegoOS: A Disseminated, Distributed OS for Hardware Resource Disaggregation.” OSDI 2018
- CXL Consortium specification
- Google, “Software-Defined Far Memory in Warehouse-Scale Computers.” ASPLOS 2019
Documentation/mm/memory-tiers.rst
工具
numactlcxl-clidaxctl
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【操作系统百科】OS 的下一个十年
下一代 OS 应为 AI workload、异构计算、CXL、内核旁路做什么?加速器主导的调度、sched_ext + ML、分离执行、OS 与 runtime 的重新分工——以工程案例收束全系列。
【操作系统百科】NUMA 内存
多路服务器里内存不再平等——本地访问和远程访问延迟差 2-3 倍。本文讲 NUMA 拓扑、mempolicy、AutoNUMA、NUMA balancing、CXL 带来的分级内存层次,以及 NUMA 感知的生产调优。
【操作系统百科】内存回收
Linux 内存回收是 VM 最复杂的子系统之一。本文讲 active/inactive LRU、kswapd 与 direct reclaim、watermark 三线、swappiness 的真实含义、MGLRU 改造、memcg 回收与 PSI。
【操作系统百科】交换
swap 还值得开吗?本文讲 swap area 基础、swap cache、zram 压缩内存、zswap 前端压缩池、swappiness 的真实含义、容器里的 swap 策略,以及为什么现代 Android 全靠 zram 不靠磁盘。