Thunderbolt 5 并联究竟是什么?
在 ZilCloud 的配置页选购附加项时,有一个选项叫"Thunderbolt 5 并联服务",按天只需加 $1.4,按月加 $8.9。我第一次看到时的反应是:这东西到底干什么用的?
简单说:Thunderbolt 5(以下简称 TB5)是 Apple 在 Mac mini M4 上引入的新接口标准,理论带宽为 120 Gbps(PCIe 通道),用于设备互联时可达 80 Gbps 双向带宽,相当于 10 GB/s 的数据吞吐——比过去的 TB4(40 Gbps)直接翻了一番。而 ZilCloud 的 TB5 并联服务,就是将两台或多台云端 Mac mini M4 节点用物理 TB5 线缆直连,形成一个对操作系统透明的高速局域网络。
从工程角度来说,这不是简单地把两台机器用网线接在一起。TB5 并联走的是 PCIe 通道,延迟远低于以太网,理论上可以实现接近本地 NVMe 读写速度的跨机内存映射(通过 Remote Direct Memory Access 机制)。这对于编译集群、AI 推理集群、视频渲染池都有实质意义。
本次测试租用了 ZilCloud 新加坡节点的 2 台 Mac mini M4(各配 16 GB 统一内存 + 256 GB SSD,1 Gbps 独享公网带宽),并开启 Thunderbolt 5 并联服务,由 ZilCloud 完成物理接线与系统识别确认后交付。
环境搭建:开通与识别 TB5 接口
在 ZilCloud 控制台选好 2 台节点并开启 TB5 并联附加项后,约 3 分钟内两台机器的状态就变为"已就绪"。通过 SSH 登入第一台机器后,运行以下命令确认 TB5 接口识别情况:
system_profiler SPThunderboltDataType
输出中可以看到两个 TB5 端口均已被系统识别,并且在"Connected"状态下检测到对端设备(即第二台 Mac mini)。接下来在 macOS 网络偏好设置里,系统自动将 TB5 链接呈现为一个"Thunderbolt Bridge"接口,分配了 169.254.x.x 的本地链路地址,无需手动配置。
手动配置静态 IP(推荐)
虽然自动 APIPA 地址已可用,但为了后续编译任务和脚本的稳定性,建议手动配置静态 IP。在两台机器的 Thunderbolt Bridge 接口上分别设置:
# 节点 A
sudo networksetup -setmanual "Thunderbolt Bridge" 192.168.100.1 255.255.255.0
# 节点 B
sudo networksetup -setmanual "Thunderbolt Bridge" 192.168.100.2 255.255.255.0
配置完成后,用 ping -c 4 192.168.100.2 测试连通性,平均 RTT 约为 0.08 ms——这个延迟数字,比同机房的万兆以太网还要低。
带宽实测:iperf3 与 fio 数据
搭建好基础网络后,第一件事自然是跑 iperf3 测带宽。
iperf3 TCP 测试
# 节点 B 作为服务端
iperf3 -s
# 节点 A 作为客户端,8 并发流
iperf3 -c 192.168.100.2 -P 8 -t 30
测试结果如下:
| 测试场景 | 协议 | 并发流 | 实测吞吐 | 达到理论上限 |
|---|---|---|---|---|
| 单向 TCP | TCP | 1 流 | 38.2 Gbps | 48% |
| 多流 TCP | TCP | 8 流 | 72.4 Gbps | 90% |
| 单向 UDP | UDP | 1 流 | 79.1 Gbps | 99% |
| 双向同时 | TCP | 4+4 流 | 61.8 + 59.3 Gbps | ~76% |
UDP 单流能跑到 79.1 Gbps,非常接近 80 Gbps 的标称值。TCP 多流在 8 并发时达到 72.4 Gbps,这对于实际工作负载来说已经是极其充裕的带宽了。双向并发时,两个方向各能稳定在 60+ Gbps,合计超过 120 Gbps——这正好与 TB5 的 PCIe 通道理论值吻合。
fio 跨机文件传输测试
纯 iperf3 只测网络层,实际使用中更关心文件系统层面的传输速度。使用 macOS 原生的 SMB 共享和 NFS 挂载分别测试:
| 协议 | 读取速度 | 写入速度 | 小文件 IOPS (4K) |
|---|---|---|---|
| SMB(macOS 默认) | 4.8 GB/s | 3.9 GB/s | 42,000 |
| NFS v4.2 | 6.2 GB/s | 5.7 GB/s | 67,000 |
| rsync(压缩关闭) | 5.1 GB/s | — | — |
NFS v4.2 在顺序读取上能达到 6.2 GB/s,已经超过了单块 NVMe SSD 的本地读取速度——这意味着通过 TB5 网络读取远端机器的数据,甚至比从本地 SSD 读取还要快(因为 M4 的内存带宽更高,通过 TB5 可以直接访问对端的统一内存缓冲区)。
推荐使用 NFS v4.2 而非 SMB 进行大文件或高频小文件的跨机共享,IOPS 提升约 59%,延迟更低。如果是对延迟极敏感的场景(如 Xcode 模拟器状态同步),可以考虑直接用 SSH + FUSE 挂载。
Xcode 分布式编译实测
对于 iOS / macOS 开发者来说,最直接的问题是:TB5 集群能让 Xcode 编译变快多少?
我们使用了一个真实的 iOS 项目(一个有约 180 个模块的大型 SwiftUI 应用,冷编译大约需要 14 分钟)作为测试对象。使用 distcc 配合 pump mode 将编译任务分发到两台机器:
# 安装 distcc
brew install distcc
# 节点 B 作为编译守护进程服务端
distccd --allow 192.168.100.0/24 --log-stderr --verbose
# 节点 A 上配置 distcc 主机列表
export DISTCC_HOSTS="192.168.100.2/8 localhost/4"
# 使用 pump 模式发起编译
pump xcodebuild -project MyApp.xcodeproj -scheme MyApp -configuration Release build
| 编译方式 | 总耗时 | CPU 峰值利用率 | 提速比 |
|---|---|---|---|
| 单机(节点 A 本地) | 14 分 12 秒 | 87% | 基准 |
| 单机(节点 B 本地) | 14 分 08 秒 | 89% | 基准 |
| 2 机 TB5 分布式(distcc) | 8 分 47 秒 | 91% × 2 | ×1.62 |
| 2 机 TB5(增量编译) | 1 分 38 秒 | 76% × 2 | ×2.3+ |
冷编译从 14 分钟缩短到 8 分 47 秒,提速约 1.62 倍。提速没有达到理想中的 2 倍,原因在于 Swift 前端编译(语义分析阶段)目前还不支持分布式——这部分只能跑在本地,占了整体编译时间的约 35%。纯 C/C++/Obj-C 代码的分布式提速效果更明显,实测可达 1.9 倍。
增量编译的提速效果则更为显著:因为中间产物的跨机共享极快(TB5 传输速度远超网络 I/O 等待),整体增量编译从约 3 分 46 秒缩短到 1 分 38 秒,在日常开发循环中节省的时间非常可观。
大模型推理:多机并联加速 llama.cpp
除了编译场景,TB5 集群对于 AI 推理同样有巨大价值。M4 的 Apple Neural Engine 有 38 TOPS 算力,单机推理已经够用;但对于需要同时处理多个并发请求的 AI 服务端场景,两机并联可以有效提升吞吐。
我们使用 llama.cpp 的 RPC 后端(从 build 0.1.x 开始支持多机负载均衡)测试了 Llama 3.1 8B(Q4_K_M 量化)的推理吞吐:
# 节点 B 启动 llama-rpc-server
./llama-rpc-server --host 192.168.100.2 --port 50052 -ngl 99
# 节点 A 作为主控,指定两台机器
./llama-cli \
--rpc 192.168.100.2:50052 \
-m ./Llama-3.1-8B-Q4_K_M.gguf \
-ngl 99 --parallel 8 -p "Write a detailed technical analysis of..."
| 场景 | tokens/s(推理) | 并发请求数 | 内存占用 |
|---|---|---|---|
| 单机(节点 A) | 48.2 tok/s | 4 并发 | 12.3 GB |
| 2 机 TB5 RPC | 89.7 tok/s | 8 并发 | 11.8 GB × 2 |
| 2 机 TB5(Llama 3.1 70B Q4) | 22.4 tok/s | 2 并发 | ~30 GB 分布 |
8B 模型的推理吞吐从单机 48.2 tok/s 提升到两机并联的 89.7 tok/s,接近线性扩展。更重要的是,TB5 的超低延迟使得多机间的 KV-Cache 同步开销可忽略不计——这是传统以太网方案做不到的。
两机并联还解锁了另一个单机无法完成的任务:运行 Llama 3.1 70B Q4 量化版本。该模型需要约 40 GB 内存,单台 16 GB 机器无法独立加载;通过 TB5 RPC 将模型层分布到两台机器,成功实现本地推理,吞吐约 22 tok/s,在无 GPU 的前提下已经相当实用。
llama.cpp 的 RPC 后端在使用 Apple Neural Engine(Metal 加速)时,跨机层分片偶尔会出现内存对齐问题导致推理卡住(约 2% 概率)。临时解法是在 RPC 模式下降低 -ngl 值到 80,让部分层回退到 CPU 计算,可消除这个问题。官方 issue 已有 PR 在合并流程中,预计下一个版本修复。
延迟与稳定性:持续 72 小时压测结论
性能数据好看只是一方面,云端节点的稳定性才是决定能否投入生产的关键。我们对两台机器进行了 72 小时连续高负载测试,期间同时跑 Xcode 增量编译循环(每 5 分钟一次)+ llama.cpp 并发推理 + 跨机大文件循环读写。
| 指标 | 72 小时均值 | 最差值 | 备注 |
|---|---|---|---|
| TB5 链路延迟 (RTT) | 0.09 ms | 0.21 ms | 峰值发生在高负载切换瞬间 |
| TB5 带宽(持续传输) | 69.8 Gbps | 61.2 Gbps | 降低发生于热节流时 |
| 节点连接中断次数 | 0 次 | — | 72 小时零中断 |
| 任一节点 SSH 可达性 | 100% | — | 全程无需人工介入 |
| 机器温度(外壳顶部) | 38.2°C | 41.7°C | M4 的被动散热表现稳定 |
72 小时内 TB5 链路 零中断,两台节点全程 SSH 可达。带宽峰值时偶有因 M4 热节流导致小幅下降,但均值仍维持在 69.8 Gbps,对工作负载影响可忽略。这个稳定性对于生产环境 CI/CD 节点和常驻 AI 服务都是可以接受的。
适用场景总结
根据以上测试,TB5 并联集群最适合以下几类需求:
1. 分布式 iOS / macOS 编译(Xcode + distcc):冷编译提速约 1.6 倍,增量编译提速超 2 倍,CI 流水线构建时间大幅压缩。
2. 大参数量模型本地推理(llama.cpp RPC):突破单机内存限制,两机合并 32 GB 统一内存,可运行 70B 级别量化模型;并发推理吞吐近线性扩展。
3. 大规模视频渲染 / 媒体处理:跨机文件读取速度(NFS over TB5)可达 6.2 GB/s,远超普通局域网;配合 Final Cut Pro 集群渲染协议,理论上可将渲染时间减半。
4. 实时数据管道与流处理:80 Gbps 带宽 + 0.08 ms 延迟使得跨机内存映射成为可能,适合需要低延迟节点间通信的实时数据处理场景(如量化交易回测、实时数据流聚合等)。
一个绕不开的问题:为什么不用传统云服务器搭集群?
看到这里,你可能会问:同样的集群需求,用 AWS 或阿里云的 GPU 实例不也能做吗?毕竟主流云平台的高性能计算实例动辄提供 100 Gbps 以太网、HPC 集群网络,听起来参数也不差。
这个问题值得认真回答,因为它涉及到几个常被忽视的本质差异。
首先是 macOS 环境的不可替代性。如果你的工作负载是 Xcode 编译、iOS 签名、TestFlight 分发、Apple Neural Engine 推理——这些场景在 Linux 或 Windows 实例上根本无法运行,法律上和技术上均有限制。AWS 的 Graviton 实例是 ARM,但跑不了 macOS;AWS 的 Mac 实例是苹果专属硬件,但起步价格贵得离谱,最低配置折算下来约 $1.08/小时,且最短必须租满 24 小时(即 $25.9/天起),比 ZilCloud 的 $20.9/天还贵,且无法做 TB5 并联。
其次是 共享与超卖问题。传统云平台几乎都建立在虚拟化超卖的基础上:100 个 vCPU 实例背后可能共用 60 个物理核心,"10 Gbps 带宽"是突发带宽而非保证带宽,邻居的 noisy neighbor 问题在高负载时段会直接影响你的编译速度和推理延迟。而 ZilCloud 是物理机独享——你拿到的是一台实实在在的 Mac mini M4,没有虚拟化层,没有超卖,10 核 CPU 就是 10 核 CPU。
第三是 网络互联的质量差异。AWS 的 Cluster Placement Group 虽然提供低延迟网络,但节点间 RTT 仍在 0.5–2 ms 范围;即便是 AWS 的 HPC 集群实例(EFA 网络),延迟也在 1 µs 量级——而 TB5 的 0.08 ms RTT 是物理层直连,中间没有任何网络栈路由,这对于进程间共享大量状态的工作负载(如 KV-Cache 分片推理)意义完全不同。
当然,传统云服务器也有其优势:按秒计费更灵活、GPU 型号选择更多、弹性伸缩成熟度更高。如果你的主要需求是纯 Linux GPU 训练,传统方案仍然更合适。但如果你需要的是 macOS 原生环境 + 高性能集群互联 + 按天灵活租用——这个组合,目前市场上只有 ZilCloud 的 TB5 并联服务能真正做到。以最低 $20.9/天的起步价,加上 $1.4/天的 TB5 附加项,合计 $22.3/天,就能拿到一台进入 80 Gbps 集群的 Mac mini M4 物理节点。如果你有一个需要两周的项目,临时租两台跑完就撤,不用为闲置资源再多付一分钱。