篇一 · 灵衢软件深度分析系列
灵衢(UnifiedBus)超节点的内核软件栈要回答一个硬问题:8192 张卡、128 个机柜、跨越上百米的光互联,在 Linux 内核眼里到底是"一台机器"还是"128 台机器"?
如果超节点是一台机器,Linux 需要全新总线类型、跨节点地址翻译硬件驱动、超越 NUMA 的内存管理——现有内核子系统都不够用。如果是 128 台机器,只需要更快的网络,软件用标准 RDMA 就行。
灵衢选了前者。它必须在 Linux 内核里植入选题级的改动:ub_bus_type 总线、UMMU 地址翻译驱动、跨节点内存借用/共享、URMA 通信原语。能做这件事的前提是全栈自研互联硬件——物理层(112G/224G SerDes)、协议栈(10 部分规范)、芯片(UB Switch、UMMU、UDMA)全部自研。2026 年的数据中心互联版图里,物理层到软件全栈覆盖的只有两家:NVIDIA(NVLink+NVSwitch+IB)和华为(灵衢 UB)。
NVIDIA 走"多层协议拼接"——NVLink 管机内、PCIe 管设备、IB 管节点间、GPUDirect 管存储,四套驱动拼出完整路径,CUDA 统一上层 API。灵衢走"单一协议归一"——所有互联走 UB 协议,一套驱动覆盖全程。拼接的代价是复杂,归一的代价是封闭。
本文聚焦内核层:部署设计 → UB OS Component 逐模块解剖 → NVIDIA 对比 → 能力边界推敲。后续两篇分析服务层和云化层。
一、部署设计:两条路径,一个 ISO
1.1 通算超节点(鲲鹏 950 SuperPoD)
硬件安装。 UB Switch、光模块物理连接。
OS 安装。 openEuler 标准 ISO。设计决策:通用服务器和超节点共用同一个 ISO。 通用服务器装完就结束。超节点额外 patch UB OS Component——UBMM 驱动、7 种 UBPU 驱动(NPU/DPU/SSU/UDMA/UMMU/UNIC)、用户态工具链 ubctl、灵衢网络配置(拓扑发现、路由表初始化)、UBM 启动。
按需部署服务。 UBS Engine(控制面核心),按需 UBS Mem/Comm/IO/Virt。
共用 ISO 的工程意图明确:通用服务器和超节点可以混跑在同一个数据中心,运维不维护两套 OS 镜像。但"额外 patch"掩盖了实际体量——UB OS Component 是对内核总线模型、内存管理子系统、通信栈的系统性扩展,不是装几个 .ko。一次内核大版本升级(openEuler 24.03 → 下一个 LTS),UB OS Component 的适配回归测试范围远大于普通驱动更新。共用 ISO 降低了初始部署风险,但没有降低长期维护复杂度。
1.2 智算超节点(Atlas 950 SuperPoD)
硬件预装程度更高:UBM 和 PodManager 出厂内置在独立芯片,Atlas 850/850E 出厂内置灵衢总线设备。用户不自己装 UB Switch 和光模块。
OS 同样 openEuler ISO,额外部署灵衢业务面和开发面组件 + UBS Engine。
DeviceOS 固件-OS 分离。 NPU 固件(DeviceOS)自带灵衢驱动,HostOS 只装用户态服务和开发工具链。NPU 固件升级不等于 HostOS 升级。
代价是三层版本矩阵:
| 层 | 内容 | 升级频率 | 透明度 |
|---|---|---|---|
| DeviceOS 固件 | NPU 内的 UB OS Component | 跟 NPU 驱动版本走 | 最不透明 |
| UBM 固件 | 独立芯片上的拓扑管理器 | 跟硬件固件周期走 | 升级/回滚未公开 |
| HostOS 软件 | 用户态服务 + 开发工具链 | 跟 openEuler 版本走 | 最透明 |
三个版本能不能独立升级?跨版本兼容性谁测?DeviceOS 升级引入新 UB 协议特性,UBM 固件不支持怎么办?HostOS 的 UBS Engine 版本不匹配怎么办?灵衢把 128 个机柜变成"一台机器"的代价是:这台"机器"有三个独立演进的固件/软件层,版本兼容性矩阵的复杂度是 O(n³)。
1.3 部署的隐性成本
- 拓扑规划。 160 个机柜、柜间全光互联。拓扑结构直接影响通信性能。8192 卡 AllReduce 的通信模式决定最优拓扑——胖树有利于 all-to-all,Mesh 有利于 neighbor communication。灵衢 UB Switch 支持哪些拓扑?是否可编程路由?没有细节。
- UBM 收敛规模。 8192 个 UBPU 的拓扑发现和路由收敛速度——零公开数据。
- 选主延迟。 UBS Engine N-1 容错,选主耗时多少?对运维 SLA 有直接影响。
- 故障隔离粒度。 一个 UBPU 故障,UBM 隔离单设备还是整个机柜?单设备隔离→路由表更新波及多少条目?机柜级隔离→损失多少算力?
二、UB OS Component:在 Linux 内核中植入超节点
| 模块 | 扩展的内核子系统 | 核心能力 |
|---|---|---|
| Device Mgmt | bus/device/driver 模型 | ub_bus_type,UBPU 设备发现与热插拔 |
| Memory Mgmt | NUMA/DMA/SVA | 跨节点内存借用与共享,UMMU 地址翻译 |
| Communication | —(新增中间件) | URMA 通信原语(load/store/dma/rpc) |
| Virtualization | KVM/vfio | UB 设备直通虚机,超级 VM |
| UBM(固件) | —(独立芯片) | 拓扑发现、路由、故障隔离 |
2.1 Device Mgmt:ub_bus_type
Linux 设备驱动模型是 bus_type → device → driver 三层。PCIe 有 pci_bus_type,USB 有 usb_bus_type。CXL 没有独立总线类型——它在 PCIe 枚举上叠加 CXL.mem/CXL.cache。灵衢直接新增 ub_bus_type。
两种设计哲学:CXL 走增量路线(物理层是 PCIe,复用 PCIe 枚举,叠加内存语义),好处是 Linux 上游能接受——内核从 5.12 逐步 merge CXL 子系统,到 6.13 已相当完整。灵衢走重构路线(物理层不是 PCIe,直接定义独立总线),架构干净,代价是永远进不了 Linux 上游。
上游化不可能。 内核合并标准:多厂商、多产品、通用价值。drivers/accel/ 被接受因为 Intel、AMD、Apple 都有硬件。ub_bus_type 只有华为硬件,灵衢硬件不对外零售(只随 Atlas 整机出货),第三方无法测试和贡献。
后果:
- 内核组件永远在 openEuler fork,华为独力维护
- 内核大版本升级时 fork 的 merge 冲突由华为独自解决
- CVE 发布到 openEuler fork 修复之间的窗口期取决于华为响应速度
- CXL 子系统更新会不会和
ub_bus_type内存管理代码冲突?
openEuler fork 是灵衢内核层的隐性税。 NVIDIA 闭源驱动也有维护成本,但跑在标准内核上,不需要 fork。灵衢选了 fork。
UBPU 对等模型。 所有灵衢总线上的设备叫 UBPU——CPU、NPU、DPU、SSU 地位平等,任何 UBPU 都可以主动发起通信、访问其他 UBPU 内存、借用资源。对等模型没有单点瓶颈(不像 PCIe 的 root complex),但路由表规模 O(n²)——8192 个 UBPU 全互联路由表超过 6700 万条。灵衢用交换拓扑而非全互联,路由表按目的 NodeID 聚合到 8192 条目量级,但多路径路由(ECMP)成倍增加。
内核态驱动:
| 驱动 | 管理对象 |
|---|---|
| UBMM driver | UB Memory Manager 配置 |
| NPU driver | NPU 加速器 |
| DPU driver | 数据处理单元 |
| SSU driver | 存储服务单元 |
| UDMA driver | UB DMA 引擎(跨节点搬运) |
| UMMU driver | UB MMU(地址翻译) |
| UNIC driver | UB 网络接口 |
用户态 ubctl 对标 lspci——设备发现、热插拔、拓扑查询、配置管理。
2.2 Memory Mgmt:跨节点统一编址
内核层技术密度最高的模块。标准 Linux struct page 对应本机物理内存,NUMA 扩展到多 socket 但止步于一个机箱。灵衢要让远端 NPU 的 HBM 成为本地 NUMA 拓扑的一部分。
UMMU:跨节点地址翻译
UMMU 硬件单元翻译跨节点地址。工作流:
- CPU load/store 访问虚拟地址
- 本地 MMU 翻译为物理地址
- 物理地址落在灵衢地址空间 → UMMU 接管
- 翻译为
{NodeID, UASID, VA} - 总线路由到目标节点
- 目标节点执行操作,返回数据
全程无 OS 介入。应用感知不到远端和本地的区别——只有延迟差异。
{NodeID, UASID, VA} 三层结构天然支持多地址空间隔离。UASID 类似 x86 PCID 但扩展到跨节点。8192 UBPU × N 并发 UASID 的地址翻译表规模——UMMU 的 TLB 容量和 miss penalty 是关键性能参数,未公开。
延迟标尺与能力边界。
| 操作 | 延迟 | 备注 |
|---|---|---|
| 本地 DDR(同 NUMA) | 100-150ns | 基线 |
| 跨 NUMA(同机箱) | 200-300ns | x86 QPI/UPI |
| 灵衢跨机柜 | ~400ns | OBMM 实测 |
| RDMA Read(同 DC) | 2-5μs | RoCEv2/IB |
| NVLink(同机箱) | <100ns | NVLink 5.0 |
能力边界推演。 400ns 的位置:比跨 NUMA 慢一倍,比 RDMA 快 5-10 倍,比 NVLink 慢 4 倍。
推一个具体场景:8192 卡 AllReduce reduce-scatter,每张卡从其他 8191 张卡各取一块数据。同步 load:400ns × 8191 = 3.3ms。NVLink 同机箱等价操作:<100ns × 8191 = 0.8ms。差距 4 倍。
灵衢的应对:UDMA 批量搬运 + URMA 异步 DMA——多次小 load 合并为一次大块传输,摊薄 400ns 启动延迟。对大块数据有效(1MB KV Cache,400ns 被 128 GB/s 带宽摊薄到可忽略),对小粒度随机访问无效。
结论:灵衢的"单机语义"是编程模型的简化,不是物理性能的等价。 硬件给你单机 API,但 400ns 告诉你它不是真的单机。性能敏感路径仍需感知数据位置——热数据本地 NUMA,温数据跨机柜 UB,冷数据远端存储。
内存借用(Memory Borrow)
节点 A 内存不够,临时借用节点 B 空闲 HBM/DRAM。借用内存通过 UMMU 映射为本地 NUMA.remote。对应用和内存分配器完全透明。
OBMM 管理策略:触发阈值、借用比例、回收时机。实测:最佳借用比例约 25%,性能损耗 <5%。
为什么是 25%? 推演:借来的远端内存 400ns,本地 DDR 100-150ns。均匀分布假设下(大部分应用不是,但作上界),借入 25% 意味着 25% 访问命中 400ns,75% 命中 100-150ns。加权平均 ≈ 0.25 × 400 + 0.75 × 125 = 194ns,比纯本地 125ns 慢 55%。但实际应用有局部性(热数据倾向留在本地),所以实际损耗 <5%。25% 不是硬限制,是局部性假设下的经验最优值。 局部性差的应用(大规模图计算 random walk)应该更低。
借用独占——借入方拥有完整数据所有权。没有多写者 → 不需要 CC → cacheable。CC 问题被限制在共享场景,借用完全回避。 硬件简单(不需要跨机柜 cache coherence 电路),但借用只适合独占使用。
内存共享(Memory Share)
多节点访问同一块数据(共享权重、分布式推理 KV Cache),set_ownership 控制写入权:任意时刻只有一个 owner 可写,其他只读。写入权转移通过软件协议。
灵衢没有跨节点硬件缓存一致性。 刻意选择。跨 128 个机柜的硬件 CC:
- Snoop filter 规模:128 节点 × 数十 TB 内存的 snoop 状态追踪,存储和查询延迟不可控
- Coherence traffic:每次写入广播 invalidation 到所有可能缓存该行的节点,带宽随节点数平方增长
- 延迟不可预测:invalidation ack 取决于最慢节点
灵衢选了软件一致性 + 硬件透明访问。代价:owner 切换不是原子操作。两个节点高频交替写入同一块内存(训练的 gradient accumulation),set_ownership 来回切换成为瓶颈。
能力边界:灵衢共享内存适合低频写入-高频读取(推理:一个节点写 KV Cache,多个节点读),不适合高频写入-高频读取(训练:多节点交替写梯度)。 推理是灵衢超节点首要目标,这个权衡是合理的。
与 CXL Type 3:问题域不同
| 维度 | CXL Type 3 | 灵衢 UBM |
|---|---|---|
| 物理范围 | PCIe 链路(1-2m) | 灵衢总线(跨机柜,>100m) |
| 设备类型 | CXL 内存扩展器(同类) | CPU/NPU/DPU/SSU(异构) |
| 一致性 | CXL.cache(硬件 CC) | 软件所有权管理 |
| 编程模型 | 需感知 CXL 内存类型 | 统一 NUMA 节点,透明 |
| 生态 | PCI-SIG 标准,多厂商 | 华为专属 |
CXL 硬件 CC 在 PCIe 链路内可行。灵衢放弃硬件 CC 是因为物理范围差了两个数量级。
HMM / ZONE_DEVICE 的上限
Linux HMM 通过 ZONE_DEVICE + DEVICE_PRIVATE 给设备内存提供 struct page,hmm_range_fault() 处理 CPU 访问设备内存缺页。NVIDIA/AMD 实现 Unified Memory 的基础。
HMM 范围是单机。跨节点扩展需要:新页表项类型、新迁移路径、新一致性模型。技术上可行,需多家厂商联合推动——3-5 年,目前没有厂商在推。HMM 是灵衢 UBM 最接近的开源对应物,单机天花板是它跨不过的墙。
2.3 Communication:URMA 通信底座
UMDK 提供三种原语:URMA(RDMA 类比)、RPC(gRPC 类比)、Message(MPI 类比)。
URMA 三种模式:同步 load/store(指针操作)、异步 DMA(UDMA 引擎)、消息传递。
URMA vs RDMA 的物理路径:RDMA 走 NIC→交换机→NIC,过 IP/UDP 封装。URMA 走 UDMA→UB Switch→UDMA,无网络协议栈。少了 IP/UDP 封装和网卡协议栈,延迟从微秒级降到百纳秒级。
兼容层。 URMA 只跑灵衢硬件。RoUB 封装为 libibverbs 兼容接口。Socket over UB 封装为标准 socket。
三级适配路径的假设推敲。
| 适配程度 | 收益 | 来源 | 隐含假设 |
|---|---|---|---|
| 零修改 | ~10% | 底层传输更快 | 瓶颈在数据传输非计算 |
| SDK 适配 | ~30% | 去掉 verbs 层 | 值得改代码换 30% |
| 深度改造 | 50%+ | 显式传输→指针操作 | 架构适合指针操作 |
10% 零修改:走 RoUB 仍然过 verbs API,verbs 层开销没消失,只是底层传输从 IB 变成灵衢。如果应用瓶颈在计算非通信,收益趋近零。
30% SDK 适配:xcopy(gva) 替代 ibv_post_send + ibv_reg_mr + ibv_poll_cq,省掉 MR 注册、CQ 轮询、工作请求构造。收益取决于通信占比。
50%+ 深度改造:统一编址下显式 send/receive 改成直接指针操作。架构级改动,收益上限高但成本也最高。
冷启动。 10% 零修改不够驱动迁移——现有 IB 够用的用户没动力。URMA API 比 verbs 简洁得多,但"简洁"到"值得重写"之间距离很大。
2.4 Virtualization:vfio + UMMU 的协同
KVM + vfio 扩展。UB 设备直通虚机:NPU 直通、虚机内存横跨多物理节点("超级 VM")、容器热迁移 100ms → 50ms。
vfio + UMMU 协同的难点。 标准 vfio 通过 IOMMU 将设备 DMA 地址映射到 Guest 物理地址。灵衢设备的 DMA 地址是 UB 地址空间 {NodeID, UASID, VA}——不是标准物理地址。vfio 的 iommu 映射需要扩展到 UMMU 格式:要么增加 vfio_iommu_ub 类型修改 vfio 核心代码,要么通过 vfio platform 包装。
核心问题:Guest 物理地址空间包含远端节点内存。 标准 vfio 只处理本地 IOMMU。灵衢的 vfio 扩展需要同时处理本地 IOMMU 和跨节点 UMMU。VM live migration 时不仅要迁移本地内存页,还要迁移 UMMU 映射关系。这些实现细节未公开。
2.5 UBM:独立芯片上的总线管理器
UBM 固件部署在独立芯片内:拓扑发现维护、路由配置更新、故障检测物理隔离、运维监控。HostOS 崩溃不影响总线拓扑。
UBM 规模上限推敲。 8192 个 UBPU 的拓扑管理:
- 路由表规模。 全互联 8192 × 8191 / 2 ≈ 3350 万条。交换拓扑按目的 NodeID 聚合到 ~8192 条,多路径 ECMP 成倍增加。
- 故障检测。 8192 个 UBPU 心跳探测,单次 ~50μs(UB 总线往返),单轮 ~409ms,加处理开销秒级合理。
- 故障隔离粒度。 单设备隔离→路由表更新;机柜级隔离→损失 64 卡(假设单柜 64 卡)。
推论:千卡级拓扑收敛秒级,8192 卡可能十秒级。 初始化和故障恢复不在毫秒级 SLA 范围内。训练任务(可容忍短暂停顿)可能 OK,在线推理(亚秒级故障切换)需要看 UBS Engine failover 设计。
三、内核路线对比:灵衢 vs NVIDIA
互联架构
NVIDIA:多层协议拼接。NVLink(GPU-GPU 闭源)+ PCIe/Grace C2C + IB/Spectrum-X + GPUDirect Storage。四套驱动,CUDA 统一上层。
灵衢:单协议归一。所有互联走 UB,ub_bus_type + UMMU + URMA 一套驱动。
内存语义
NVIDIA ICMSP(CES 2026):三级 KV cache。HBM(~100ns, ~$20/GB)→ DRAM(~150ns, ~$3/GB)→ NVMe SSD(~10μs, ~$0.3/GB)。BlueField-4 DPU 做层级间搬运和预取。存储语义——runtime 管理数据在哪一级。
灵衢 MemFabric:全局虚拟地址空间。内存语义——load 指令直达远端 NPU HBM,硬件/OS 决定数据位置。
| 维度 | ICMSP(存储语义) | MemFabric(内存语义) |
|---|---|---|
| 数据位置管理 | runtime 显式 | 硬件/OS 隐式 |
| 热度匹配 | 天然分层 | 依赖 page migration |
| 编程复杂度 | 高 | 低 |
| 适用场景 | 热度可预测(推理) | 热度不可预测(通用) |
边界。 推理中 KV Cache 热度可预测——prefill token 热、历史 token 温度递减。存储语义可精确匹配每级成本/延迟。内存语义交给 page migration——如果迁移粒度太粗(4KB 页面)或触发延迟太高,热数据可能落在慢存储上。灵衢的 UCM(下一篇分析)是否在内存语义上加了类存储语义的显式管理层,值得跟踪。
四、能力边界总判断
无替代:UB 总线驱动 + UBM 内存管理。 直接依赖灵衢硬件。最接近的开源对应物是 Linux CXL 子系统,但物理范围和语义范围不在一个层级。等价方案 150-200 人月,前提是有自己的互联硬件。
可近似:URMA → UCX。 等价编程接口,但走网络(微秒级)vs 走总线(百纳秒级)。不需要百纳秒级延迟时 UCX 完全可用。
成熟替代:虚拟化 → KVM/vfio/CRIU。 灵衢加速来自 UB 共享内存(100ms→50ms),标准 100ms 对大多数业务够用。
核心判断:灵衢内核层的不可替代性不在软件,在硬件。 UB 驱动和 UBM 的价值来自灵衢物理互联的独有能力——跨机柜统一编址、百纳秒延迟、异构设备对等访问。开源了代码但没有开放硬件生态,等于公布了蓝图但没有卖建材。
开源程度本身也值得推敲。灵衢内核层开源在 openEuler,显著高于 NVIDIA 闭源驱动。但 UBS Core 仓库只有 24 个 commit,全来自华为。没有第三方灵衢硬件,没有人能测试和贡献。开源了代码,没有建立社区。
五、值得跟踪的信号
1. UBS Core 社区活跃度。 24 个 commit 全来自华为。拐点是第三方芯片厂商提交 UBPU 驱动——哪怕只是一个 DPU 的驱动。
2. 灵衢 2.0.1 规范采纳。 2026 年 5 月精修版(基于 3 万+企业反馈)细化了 112G/224G SerDes 参数。有没有第三方基于它做芯片?
3. Linux 内核异构内存上游进展。 CXL Type 3 持续推进(6.13 重要更新),HMM 在 GPU 厂商推动下成熟。如果上游解决跨节点异构内存——目前看不到方向——灵衢护城河被削弱。
4. 8192 卡生产验证数据。 UMMU 延迟分布、内存借用稳定性、UBM 拓扑收敛速度——零公开。没有生产数据的架构蓝图,说服力有限。
5. openFuyao K8s 化封装的边界。 内核层价值最终通过 K8s 暴露。openFuyao 的 UB 内存池化插件只能跑灵衢硬件,影响力被限制在华为生态圈。能不能在标准 K8s 上提供降级但可用的体验,决定了灵衢内核能力的影响边界。
六、从推演反推:内核层的功能规格应该长什么样
前五章分析了灵衢内核层做了什么、能力边界在哪。现在反过来:如果我们从零开始写一份"超节点内核软件功能规格书",根据前面的推演,应该列出哪些功能需求?哪些灵衢已经做了,哪些是推演揭示的缺口?
这不是灵衢的实际规划,是本文分析得出的功能规格视图。用 FR(Functional Requirement)编号,按模块组织。
6.1 总线与设备管理
| ID | 功能需求 | 来源 | 灵衢现状 |
|---|---|---|---|
| FR-1 | 独立总线类型(ub_bus_type),支持异构 UBPU 对等发现与热插拔 |
单协议归一设计要求 | ✅ 已实现 |
| FR-2 | 路由表可编程:支持胖树 / Mesh / 自定义拓扑,按通信模式动态调优 | §1.3 拓扑规划推演——160 机柜的拓扑结构直接影响 AllReduce 性能 | ❓ 未公开是否可编程 |
| FR-3 | 路由表规模上限:8192 UBPU 的聚合路由表 + ECMP 多路径,总条目数可管理 | §2.1 路由表 O(n²) 推算——全互联 6700 万条不可行,交换拓扑聚合是必需 | ❓ 无数据 |
| FR-4 | ubctl 拓扑可视化:显示 8192 UBPU 的完整拓扑图、路由路径、瓶颈链路 |
§1.3 运维需要感知拓扑——160 机柜的故障定位不能靠猜 | ✅ 基础功能有,可视化程度未知 |
| FR-5 | 内核模块独立版本号,与 openEuler 内核版本解耦 | §2.1 fork 维护——UB OS Component 的回归测试不应绑定每次 openEuler 小版本升级 | ❌ 目前是 openEuler fork 的一部分 |
FR-2 是关键缺口。 静态拓扑意味着部署时就要确定最优结构,后续不能根据业务负载调优。8192 卡的集群不是单一负载——训练和推理的通信模式完全不同。如果灵衢超节点要同时服务训练和推理(分时复用),可编程路由是刚需。
6.2 跨节点内存管理
| ID | 功能需求 | 来源 | 灵衢现状 |
|---|---|---|---|
| FR-6 | UMMU 地址翻译:虚拟地址 → {NodeID, UASID, VA},硬件完成 |
超节点=一台机器的核心能力 | ✅ 已实现 |
| FR-7 | UMMU TLB 容量可配置,miss penalty 可观测 | §2.2 8192 UBPU × N UASID 的翻译表规模——TLB miss 可能成为延迟尖刺来源 | ❓ 未公开 |
| FR-8 | 内存借用策略可调:触发阈值、借用比例上限、回收超时、局部性检测 | §2.2 25% 是经验值——局部性差的应用需要更低比例 | ✅ OBMM 框架存在,策略可调程度未知 |
| FR-9 | 借用内存的 NUMA distance 精确标注(反映实际延迟,不是固定值) | §2.2 远端 HBM vs 远端 DRAM 延迟不同——NUMA distance 应区分 | ❓ 未公开 |
| FR-10 | 共享内存 owner 切换延迟可测量,提供切换计数和等待时间指标 | §2.3 set_ownership 的软件开销是训练场景的瓶颈——需要可观测才能调优 |
❓ 未公开 |
| FR-11 | 共享内存的批量 owner 转移:一次调用转移多个区域的写入权 | §2.3 训练中 gradient accumulation 涉及大量区域交替写入——逐个 set_ownership 开销叠加 |
❓ 未公开 |
| FR-12 | 数据位置感知 API:应用可查询某个虚拟地址的物理位置(本地/跨节点/远端存储),并可主动触发迁移 | §2.2 "单机语义是编程简化不是性能等价"——性能敏感路径需要感知位置 | ❓ 未公开 |
| FR-13 | 跨节点内存 cgroup 限额:限制单个容器/进程可借用的远端内存总量 | §2.2 多租户场景下,一个租户不能无限借用其他节点的内存 | ❓ 未公开 |
FR-7 和 FR-12 是最重要的缺口。 FR-7 决定了 UMMU 的可调试性——如果 TLB miss 导致延迟尖刺,运维需要知道。FR-12 决定了应用能不能做到"热数据本地、温数据远端"的分层策略——没有这个 API,应用的性能优化全靠猜。
FR-11 值得单独说。灵衢共享内存的 set_ownership 是单次操作。训练中一个 gradient accumulation 步骤可能涉及数百个内存区域的 owner 切换。如果每次切换都走一次软件协议(请求→确认→生效),数百次串行切换的延迟不可忽视。批量转移接口(一次调用转移 N 个区域)可以把 N 次协议开销压缩为一次。这不是优化,是训练场景的刚需。
6.3 通信与兼容
| ID | 功能需求 | 来源 | 灵衢现状 |
|---|---|---|---|
| FR-14 | URMA 三种模式(同步 load/store、异步 DMA、消息传递) | 通信基础 | ✅ 已实现 |
| FR-15 | RoUB 兼容层:libibverbs 接口兼容 | §2.3 零修改迁移路径 | ✅ 已实现 |
| FR-16 | Socket over UB 兼容层 | §2.3 TCP 应用无感加速 | ✅ 已实现 |
| FR-17 | 通信性能可观测:每次 URMA 操作的延迟分布、带宽利用率、UDMA 队列深度 | §2.3 三级适配路径的收益需要实测验证——没有可观测性就无法证明 10%/30%/50% 的假设 | ❓ 未公开 |
| FR-18 | RDMA 应用兼容性认证矩阵:哪些主流 RDMA 应用(NCCL/oneCCL/MPI)在 RoUB 上验证过 | §2.3 冷启动问题——用户需要知道现有应用能不能直接跑 | ❓ 未公开 |
| FR-19 | URMA → UCX 适配层:让 UCX 应用跑在灵衢硬件上 | §4 开源替代分析——UCX 是最接近的跨平台通信框架 | ❓ 未公开 |
FR-17 和 FR-18 是冷启动的命门。 灵衢生态冷启动依赖用户迁移。用户迁移的前提是:知道现有应用能不能跑(FR-18)、跑了能快多少(FR-17)。没有这两个数据,10% 零修改收益只是纸面数字。
6.4 虚拟化
| ID | 功能需求 | 来源 | 灵衢现状 |
|---|---|---|---|
| FR-20 | UB 设备 vfio 直通,支持 NPU/DPU 直通虚机 | §2.4 合规场景 | ✅ 已实现 |
| FR-21 | 虚机内存跨节点映射 + live migration | §2.4 "超级 VM" | ✅ 100ms→50ms |
| FR-22 | vfio UMMU 映射的独立类型(vfio_iommu_ub),不修改 vfio 核心代码 |
§2.4 vfio+UMMU 协同——修改 vfio 核心会增加上游兼容风险 | ❓ 实现方式未公开 |
| FR-23 | 超级 VM 的内存限额:限制单个 VM 可使用的跨节点内存总量 | §6.2 多租户——一个 VM 不能吃掉整个超节点的内存 | ❓ 未公开 |
6.5 总线管理(UBM)
| ID | 功能需求 | 来源 | 灵衢现状 |
|---|---|---|---|
| FR-24 | 拓扑发现与路由配置 | 基础能力 | ✅ 已实现 |
| FR-25 | 故障检测周期可配置,收敛时间可测量 | §2.5 千卡秒级→8192 卡可能十秒级——运维需要知道实际的收敛时间 | ❓ 未公开 |
| FR-26 | 故障隔离粒度可选:单设备隔离 vs 机柜级隔离,可按 SLA 需求配置 | §1.3 隔离粒度影响损失算力——训练可接受单设备隔离(更精确但收敛慢),推理可能需要机柜级隔离(损失更多但恢复快) | ❓ 未公开 |
| FR-27 | UBM 固件独立升级/回滚,不影响 HostOS 和 DeviceOS | §1.2 三层版本矩阵——三层必须可独立升级 | ❓ 未公开 |
| FR-28 | UBM 拓扑变更事件通知:路由变更时通知 HostOS,触发应用层重路由 | §2.5 拓扑收敛期间,应用需要知道哪些路径不可用 | ❓ 未公开 |
FR-25 是判断灵衢超节点规模上限的关键参数。 8192 卡的拓扑收敛时间如果是十秒级,意味着:初始化 >10 秒,单设备故障恢复 >10 秒,大规模拓扑重计算可能 >30 秒。这些数字直接影响运维 SLA 和业务可用性设计。
6.6 版本与运维
| ID | 功能需求 | 来源 | 灵衢现状 |
|---|---|---|---|
| FR-29 | 三层版本(DeviceOS / UBM / HostOS)兼容性矩阵自动检查 | §1.2 O(n³) 兼容性——人工检查不可行 | ❓ 未公开 |
| FR-30 | 固件热升级:UBM 和 DeviceOS 固件升级不中断业务 | §1.2 三层版本——冷升级意味着业务中断 | ❓ 未公开 |
| FR-31 | 版本回滚:任意层升级失败可回滚到上一版本,回滚时间 <SLA | §1.2 生产环境必需 | ❓ 未公开 |
| FR-32 | 内核模块 ABI 稳定性:UB OS Component 的用户态-内核态 ABI 跨版本稳定 | §2.1 fork 维护——如果 ABI 每个版本都变,用户态工具链要跟着改 | ❓ 未公开 |
6.7 规格总结:已实现、缺口、未知
统计上面的 FR:
| 状态 | 数量 | 占比 |
|---|---|---|
| ✅ 已实现 | 11(FR 1/6/8/14/15/16/20/21/24) | 34% |
| ❓ 未公开/未实现 | 21(FR 2-5, 7, 9-13, 17-19, 22-23, 25-32) | 66% |
| ❌ 明确缺失 | 0 | 0% |
34% 已实现,66% 未知。这个比例本身就是一个信号:灵衢公开了架构蓝图,但没有公开工程细节。 架构蓝图告诉你系统长什么样,工程细节告诉你它能不能用。
66% 的未知中,优先级最高的五个:
- FR-25(UBM 收敛时间)——决定超节点规模上限
- FR-12(数据位置感知 API)——决定应用能不能做性能优化
- FR-7(UMMU TLB 可观测)——决定延迟问题能不能诊断
- FR-18(RDMA 兼容性矩阵)——决定冷启动能不能发生
- FR-29(版本兼容性自动检查)——决定 128 机柜的运维是不是噩梦
这五个功能不会出现在架构图上,但会出现在运维工单里。
下一篇分析灵衢服务层——UBS Engine 控制面、MemFabric 128 TB + 48 TB 混合池、UCM TTFT -90% 和 throughput 22x、NPU Direct Storage 绕过 CPU 直连存储,以及训练链路到推理链路的应用对接全貌。
素材来源:灵衢系统软件架构&部署公开课(牛涛)、openEuler UB Service Core 白皮书 2.0、APNet'21 "Huawei UB: Towards Compute-Native Networking"(Bojie Li)、华为全联接大会 2025 徐直军主题演讲、灵衢互联社区规范文档、openEuler SIG-Long 异构融合 SIG 资料、KADC 2026 openFuyao 分论坛、CLK 2025 技术演讲、Linux 内核 CXL/HMM/ZONE_DEVICE 文档、UCX 项目文档、comentropy 超节点产业链分析、ubs-core 仓库(atomgit.com)
