跳到主要内容
AIInfra学习路线

分离式事务的动态锁所有权 学习路线

围绕 AURA 论文系统化拆解 DM 事务的 atomic IOPS 物理瓶颈、动态锁所有权设计、在线学习与迁移协议、闭环控制与端到端复现的完整学习路线

Disaggregated Memory RDMA OCC Lock Ownership AURA AdaptX LOTUS CREST 分离式事务

模块十三的第 4 章已经把 FORD / Motor / LOTUS / AdaptX 的 design space 横向串了一遍。但当一个研究生真的要在这个方向上做工作时,光知道”有这些系统”远远不够——他需要知道为什么要走动态锁所有权这条路、cohort 怎么定义、迁移协议怎么不丢一致性、实验怎么设计才说服得了审稿人。本路线把 AURA 这一篇论文当作主轴,把所需的 RDMA / OCC / 控制系统 / 实验方法论基础全部沉淀进来,串联 9 章内容,从立题、设计、协议、控制、实验到端到端复现,全程对齐”看完能自己实现并辩护”的标准。

作者将根据该路线编写系列文章,把 AURA 这条研究链路从问题到落地讲到工程级深度。

📑 目录


🌟 全景概览:为什么动态锁所有权是 DM 事务的下一步

DM(Disaggregated Memory)事务系统过去十年的演化主轴是**“把状态搬到远端、把动作压到 RDMA 单边原语”。FaRM、FORD、Motor 把读写、版本、commit 路径都做到 one-sided,唯独锁的获取**仍然依赖 MN(Memory Node)RNIC 的 atomic(CAS / FAA)原语。这条路径在 ConnectX-3 上被压在 ~1 Mpps,在 ConnectX-6 Dx 上 5–10 Mpps——这是物理上限,不可水平扩。一旦工作负载的写锁热点 IOPS 超过这个数字,新增 CN 不再带来吞吐增长,反而引发 retry storm 让系统反向退步。

LOTUS 第一次把锁从 MN 提到 CN,但它假设应用提供稳定的 critical field,且不支持运行时漂移。AURA 在 LOTUS 之后回答两个 LOTUS 留下的问题:

  1. 如果 critical field 未知或随时间漂移,怎么办?
  2. 锁所有权一旦放到 CN,怎么在不丢一致性的前提下迁移?

AURA 的回答是把”哪些锁该归哪个 CN”做成一个在线学习 + 闭环控制的物理设计问题:

                MN(数据 + Fallback Lock)
                ──────────────────────────
                ↑ RDMA READ/WRITE/CAS(数据通路不变)

   ┌────────────┼────────────┐
   │            │            │
 ┌─▼─┐        ┌─▼─┐        ┌─▼─┐
 │CN₁│        │CN₂│        │CN₃│
 │   │ ◄────► │   │ ◄────► │   │   OwnerRpc(迁移 + 跨锁簇协调)
 │ ┌─┴──────┐ │ ┌─┴──────┐ │ ┌─┴──┐
 │ │OwnerLock│ │ │OwnerLock│ │ │…  │
 │ │  Table  │ │ │  Table  │ │ │   │
 │ └────────┘ │ └────────┘ │ └────┘
 │            │            │
 │  Trace → AccessGraph → CohortPlanner → MigrationCtrl
 └─────────── Affinity-aware Routing ──────────────────┘

🧠 核心洞察atomic IOPS 是固定预算,不能水平扩;唯一出路是把锁请求从 MN 路径搬走。静态搬走解决一半,动态搬走保证搬走的那部分始终对得上当前 workload。

🍎 直觉比喻:把 MN 想象成只有一个收银台的银行。LOTUS 的做法是预先把 VIP 客户分到各个支行(CN)单独服务;AURA 的做法是在线观察客流,谁多就把柜台动态搬到哪个支行——而且支行之间还能互相协作处理跨支行业务。

四个待解的核心权衡,贯穿后续 9 章:

权衡选择空间影响
锁权威位置MN 集中 / CN 单一所有 / CN 多副本atomic IOPS 压力 vs 协议复杂度
Cohort 粒度单 record / key_group / 大簇命中率 vs 迁移成本
决策频率离线 / 100ms / 5ms 闭环漂移适应性 vs 抖动风险
一致性策略等待迁移完成 / fallback to MN / 双权威可用性 vs 实现复杂度

🌟 一句话主旨AURA 把”锁放哪、谁说了算”从静态部署决策升级成在线物理设计问题——这是 DM 事务在 LOTUS 之后的下一步。


📖 章节导览

整个模块分为 14 章,从立题到复现,到工程实测拐点,再到 router-centric 重构:

主题核心问题关键产出
1DM 事务的 atomic IOPS 物理墙撞墙在哪、撞墙之后会发生什么atomic IOPS 实测数据 + retry storm 微观图
2RDMA / OCC / 分离式架构必要前置看 AURA 论文之前要打牢的概念ConnectX 代际差异表 + OCC 三阶段图
3设计空间地图:DM 锁热点的 N 种解法LOTUS / FORD / Motor / CREST 怎么分类设计空间矩阵 + Δ 表
4AURA 骨架:cohort、ownership、状态机、不变式12 个模块、I1–I4、3 状态机怎么协同模块架构图 + 不变式速记
5在线学习与 cohort 划分AccessGraph 怎么建、cohort 边界怎么决定merge/split 决策伪代码
6迁移协议:freeze-drain-handoff-publish4 阶段时序、epoch 单调、fallback corner case时序图 + 不变式证明草图
7闭环控制:AdaptX 折叠进 AURALoop A 反压、Loop B NIC counter、5ms 为什么是 5ms控制环 ASCII 图 + 抖动分析
8实验方法论:把故事讲圆的工程套路baseline 设计、bootstrap CI、negative regimes实验脚手架清单
9端到端实战:CloudLab/APT 复现 AURAreservation → bootstrap → run → CI 计算一键脚本 + 故障速查
10从 §3.3 到 W13:访问图的工程实操与采样队列踩坑typed edges C_ww/C_wr/C_rr 为什么必须区分、EWMA decay 半衰期推导、thread_local batch 为何丢尾、α=0.3 的物理含义访问图代码 walkthrough + 钩点对比表 + 硬件 α 估算表
11W14 Cohort merge 的稳定性陷阱:union-find、Jaccard 与倒排索引cohort_id 漂移、朴素 Jaccard 把控制线程冲飞(1500×250)、W14.h 倒排索引砍到 ~50;“1229 cohort + 100% inheritance + LOCAL hit 0.3%” 反直觉streak 迟滞 + 倒排索引代码 + 反直觉分析
12W15 / W16 / W18:跨 CN 一致性的两条独立路径事务级路由 vs 跨 CN owner 共识两条线、为什么 W15 走 TCP 不走 RDMA(slot 256B 装不下 NewOrder ~450B)、bootstrap bias 修复TransactionRouter::Resolve + ProxyTxnQueue cv 握手 + access summary heartbeat
13从 +3.76% 到 +1.06%:OwnerMap 广播的工程教训+3.76% headline 怎么挣的、W8.7 -1.42pp 折损分账、W8.11 砍 RPC 33× 只补 0.11pp、真瓶颈是 per-Apply 本地 Publish完整 ablation 表 + 真瓶颈识别方法论 + 可推广教训
14Router-centric 重构与 9216 cohort 全表展开per-CN 控制环留下的 2 个结构性问题、AURA-router-centric 在 H-Store/VoltDB/Calvin/TiDB 谱系里的位置、9216 cohort 全表展开的算账、OwnerLockTable::InstallCohort 幂等性陷阱(LOCAL 命中 17% 但 atomic 没降的真因)8-phase R0-R7 重构地图 + 5 系统谱系对比表 + EvictCohort+InstallCohort 修复 + 下一步 lever(W9 REMOTE_OWNER takeover / client-side dispatch)

🍎 学习顺序建议:第 1-2 章必读,建立”为什么要做”和”做之前需要懂什么”的基础;第 3 章看完你应该能默写 LOTUS 与 AURA 的 Δ;第 4-7 章是 AURA 设计的核心,按顺序啃;第 8-9 章在你已经准备发起实验时再读。第 10-13 章是工程实测进阶层——已经跑通第 9 章的端到端实战之后,对照 ablation 拐点 + 反直觉收益再读,里面的工程教训才咬得住。第 14 章是架构重构层——当 per-CN 控制平面被 ablation 链推到性能/一致性边界时,把控制平面拎到 router 进程是 OLTP 谱系(H-Store/VoltDB/Calvin/TiDB)的标准答案,本章把 AURA Phase R-big 8-phase 重构和暴露出的 InstallCohort 幂等性陷阱一并讲透。如果只是想理解 AURA 设计可以跳过 10-14;如果要真正改 AURA 代码或在其上做研究,10-14 章必读,14 章对应论文 §3 d1cde1e 的最新重写


⏳ 里程碑论文时间线

2014 ──── FaRM (Dragojević et al., NSDI'14)         首篇系统性 RDMA OCC,奠基 DM 事务范式
2018 ──── LegoOS (Shan et al., OSDI'18)             Disaggregated OS 概念奠基
2018 ──── DrTM+H (Wei et al., OSDI'18)              hybrid verbs 调度
2022 ──── FORD (Zhang et al., FAST'22)              单版本 DM 事务,cache-line 对齐锁
2024 ──── Motor (Wu et al., OSDI'24)                MVCC + 一致版本表
2025 ──── LOTUS (Liu et al., arXiv'25)              首次把锁提到 CN,应用提供 critical field
2025 ──── CREST(开源 DM 事务系统)              开源实验框架,多层抽象
2026 ──── AURA (this guide, 2026)                   ★ 在线学习 + 闭环控制 + 动态锁所有权迁移

🍎 阅读顺序建议

  1. 打底:LegoOS(理解 disaggregation 哲学)→ FaRM(RDMA OCC 鼻祖)
  2. DM 事务谱系:FORD(单版本)→ Motor(MVCC)→ LOTUS(锁分离)→ AURA(动态锁所有权,本路线主轴)
  3. 横向工具:CREST 源码(实验载体)+ ConnectX-3/5/6 atomic 行为差异

🛠️ 设计空间速查表

锁热点应对策略

策略代表系统假设局限
MN-only(基线)FORD / Motor网络快、atomic IOPS 够用工作负载一热就触顶
细粒度 OCC + MVCCCRESTcell-level CC + masked-CAS 减少 false conflict锁仍在 MN,atomic IOPS 仍是上限
数据迁移MorphoSys / Lion 类数据可被搬移DM 架构下违反 disaggregation 原则
Routing-onlyCREST 之上的路由扩展把热点请求集中到同一 CN不减 atomic 总量
Static owner partitionLOTUScritical field 已知且稳定漂移工作负载退化
Dynamic owner placement(per-CN 控制环)AURA W7.4-B → W8.11无需先验、在线学习4 CN race-publish + per-Apply Publish 是隐性瓶颈(第 13 章)
Dynamic owner placement(router-centric)AURA Phase R-big(本路线第 14 章)控制平面单一发布者、CN 仅作执行体9216 cohort 全表展开 + InstallCohort 适用范围漂(第 14 章)

AURA 关键模块

模块职责章节
TraceCollector收集事务访问轨迹第 5 章
AccessGraphProfiler在线建权重图第 5 章
LockCohortGenerator决定 cohort 边界(merge/split)第 5 章
OwnershipPlanner决定每个 cohort 的 owner CN第 5 章
TransferController执行迁移 4 阶段协议第 6 章
OwnerMapPublisher发布 epoch + OwnerMap 快照第 6 章
AffinityRouter客户端按 OwnerMap 路由事务第 4 章
TxnExecutor在 owner CN 上执行事务第 4 章
OwnerLockTableCN 本地锁表第 4 章
OwnerRpcCN 间锁请求 / 跨 cohort 协调 + CN→router 反向 access summary 上报第 4 / 14 章
FallbackLock回退到 MN atomic CAS第 6 章
AuraStats监控指标(NIC 计数、abort 率)第 7 章
RouterControlLoop ⭐router 进程 100 ms tick 聚合 + 发布 manifest第 14 章
AggregatedAccessGraph ⭐router 端聚合 CN 上报的 access summary第 14 章
OwnerMapSubscriber ⭐CN 端拉 memcached manifest + 安装 9216 per-bucket cohort第 14 章

三种状态与不变式

状态含义进入条件退出条件
OWNED某 CN 唯一持有该 cohort迁移成功触发 split / merge / migrate
TRANSFERRING正在迁移中,请求被 drain迁移开始迁移完成 / 超时
FALLBACK退回 MN atomic 路径owner 失败 / 冷数据工作负载再次变热
不变式内容
I1任一时刻同一 cohort 的权威只在一处
I2epoch 单调递增
I3迁移期间所有未完事务必须 drain 或 abort
I4数据 commit 路径不依赖锁所有权位置

🧭 新人破局指南

学习路径(推荐 4-6 周)

第 1 周:立题与基础

  • 读完第 1 章 + 第 2 章
  • 在 APT 集群跑 ib_atomic_bw 实测 ConnectX-3 atomic 上限
  • 在 CloudLab c6525 跑同样测试,对比 ConnectX-6 数字
  • 目标:能用一句话说清”为什么 DM 事务必须改”

第 2 周:相关工作 + AURA 骨架

  • 读 FORD / Motor / LOTUS 三篇 paper(精读 commit 路径与锁路径)
  • 读完第 3 章和第 4 章
  • 默画 AURA 12 模块协同图
  • 目标:能徒手画出 AURA 与 LOTUS 的 Δ 表

第 3-4 周:AURA 核心设计

  • 读完第 5 / 6 / 7 章
  • 在草稿上把 freeze-drain-handoff-publish 的 4 阶段时序写出来
  • 推演两个 corner case:(a) 迁移中 owner CN 挂;(b) 跨 cohort 事务遇上 split
  • 目标:能向人复现 AURA 论文 §3 的所有图

第 5 周:实验方法论

  • 读第 8 章
  • 把模块十三第 4 章的 baseline 拿出来对照 AURA paper 实验设计
  • 自己写一个 bootstrap CI 脚本(参考 PROGRESS.md 的工程笔记)
  • 目标:能独立设计一组对 AURA 不利的实验(critic 视角)

第 6 周:动手复现

  • 第 9 章实战
  • 在 CloudLab d6515 / Utah c6525 上跑通一组数据点
  • 把数据填进 paper 的 §6 模板
  • 目标:拿到一个可写进 paper 的 figure

第 7-8 周:工程实测拐点(进阶,可选)

  • 读完第 10 / 11 / 12 / 13 章
  • 对照自己第 6 周跑出来的数据,画一张 W7.4 → W8.5 → W8.7 → W8.10 → W8.11 折损链
  • 用第 13 章的”真瓶颈分账法”逐行解释为什么每加一层一致性吞吐就掉一点
  • 思考 W8.12(per-tick local Publish)这条未来 lever 的实现细节
  • 目标:能在 PC 上给审稿人 / 同行徒手解释”+3.76% headline 为什么落到 +1.06%“,并指出 next lever 在哪

第 9 周:架构重构层(进阶,可选)

  • 读完第 14 章
  • 在自己的笔记里默画一张 Phase R-big 数据流(CN → router → memcached → CN OwnerMapSubscriber → OwnerLockTable → TxnIO route),标注 8 个 LOG_INFO 探针位置
  • 把第 14 章 §2 的 H-Store / VoltDB / Calvin / TiDB / AURA-router-centric 谱系表自己补完,加一列”如果让你重做 AURA,你会借哪一家最多”
  • 推演一遍 §6 的 InstallCohort 幂等性陷阱:能用三句话说清”代码没错、适用范围变了、可观测性 SLO 在 atomic counter 而不在 LOG_INFO”
  • 目标:能说清 router-centric 是不是 AURA 的”必经一步”,并预测 W9 REMOTE_OWNER takeover + client-side cohort-aware dispatch 谁先做谁后做

三个高频踩坑

  1. 把”锁提到 CN”等同于 LOTUS:LOTUS 是静态 + 应用先验,AURA 是动态 + 在线学习。两者方法论上是代差,不是性能增量。看到 paper 里有人混淆,第一时间纠正。
  2. 以为 cohort 必须连续:cohort 是 key_group 的任意子集,不要求 key 在物理空间相邻。这是 AURA 在 TPC-C 里能 cross-table 聚簇的前提(NewOrder 跨 7 张表但都共享 wid)。第 4 章会展开。
  3. 把闭环窗口当成”越短越好”:5ms 是抖动 / 反应速度 / NIC counter 噪声 / 迁移成本平衡的结果,不是越短越好。第 7 章会用频谱分析说清楚。

核心思维:动态锁所有权 = 在线物理设计

优化牺牲换取
静态 owner(LOTUS)应用先验、漂移退化实现简单、单次部署
动态 cohort 划分(AURA)实现复杂度工作负载漂移自适应
闭环 5ms 窗口决策抖动风险跟随热点漂移
epoch + drain 迁移短暂 stall不丢一致性
Fallback to MN局部低效故障安全 + 渐进部署

🌟 理解了这张表,就掌握了本模块核心思维:没有”零代价的动态”,只有 trade-off 选择。AURA 的贡献不是”更快”,而是”在更弱假设下仍然可行”。


📚 参考资料

综述与背景

  • The Datacenter as a Computer (Barroso et al., 3rd ed., 2018) —— Warehouse-scale computing 奠基书
  • A Survey on Disaggregated Memory (Wang et al., 2023) —— 分离式内存早期综述

关键论文(DM 事务谱系)

  • FaRM (Dragojević et al., NSDI’14) —— 首篇系统性 RDMA OCC:USENIX 链接
  • FORD (Zhang et al., FAST’22) —— 单版本 DM 事务:USENIX 链接
  • Motor (Wu et al., OSDI’24) —— MVCC + 一致版本表:USENIX 链接
  • LOTUS (Liu et al., arXiv’25) —— 静态锁分离 + 100ms 反应再均衡(首次把锁提到 CN)
  • CREST(开源 DM 事务系统) —— 针对高冲突倾斜负载的 DM 事务系统:cell-level OCC + MVCC + masked-CAS commit,自实现 from scratch,仓库内置 FORD / MOTOR 对比 baseline。本路线第 8/9 章实战载体
  • AURA (本路线主轴, 2026) —— 动态锁所有权 + 闭环控制 + 在线 cohort 学习

关键论文(参照与对比)

  • MorphoSys (Lemur et al., VLDB’21) —— 数据物理设计在线学习的代表
  • Lion (Yan et al., 2024) —— 访问图驱动 partition 重排
  • DrTM+H (Wei et al., OSDI’18) —— Hybrid verbs 调度
  • Pond (Li et al., ASPLOS’23) —— Microsoft 云端 CXL 1.1 实测

工业系统与代码

  • CREST:本路线第 8/9 章实战载体(开源 RDMA 事务框架)
  • Mellanox OFED 4.9:ConnectX-3 兼容最后一版(APT 集群必装)
  • rdma-core:Ubuntu 22.04 inbox 驱动(ConnectX-5+ 可用)

实战环境

  • CloudLabcloudlab.us —— c6525-25g(ConnectX-6 Dx)/ d6515 是主战场
  • APT cluster (Utah):c6220 + ConnectX-3 56Gb IB —— LOTUS 同硬件复现 + 跨硬件对照
  • perftestib_atomic_bw / ib_read_bw 是测 atomic IOPS 物理上限的标准工具