5. 节点本地计算
节点本地计算(Node Local Compute)是一种针对高I/O数据密集型应用的计算优化技术,通过将计算数据移动到计算节点本地存储,避免共享存储系统瓶颈,从而大幅提升计算效率。
5.1 技术背景与需求
5.1.1 高I/O应用的挑战
传统HPC(高性能计算)框架难以应对高I/O应用的需求,这些应用包括:
天文计算:大规模天文图像处理、射电望远镜数据处理,数据规模在PB/EB级
生物信息数据处理:基因组测序分析、蛋白质结构预测
数字视频处理:高清视频编解码、视频内容分析
医疗图像分析:医学影像处理(CT、MRI、X光)
AI训练场景:生物信息AI、医疗AI的大规模训练数据加载
这些应用的共同特点是I/O带宽需求远超现有计算框架下共享存储系统的数据加载能力。当计算节点需要通过并行文件系统访问数据时,共享存储的物理带宽限制成为整个计算流程的瓶颈。
5.1.2 存算比失衡问题
存算比的定义
存算比 = 存取带宽 / 计算能力,反映了计算过程中存储和计算之间的效率配比。
存取带宽(存力):从存储硬件(如内存、硬盘)存取数据的能力,通常以GB/s或MB/s为单位。
计算能力(算力):
通常以每秒浮点运算次数(FLOPs)计
针对数据处理类应用,可用数据处理带宽(GB/s或MB/s)计
存算比的均衡性
存算比失衡,会导致整体计算效率低下
存储瓶颈:存储带宽不足,导致计算资源闲置。
计算瓶颈:计算能力不足,不能及时处理数据。
存算硬件的成本
通常,单位存力成本远低于单位算力成本;算力成本是影响总计算成本的最重要因素
高于算力的存力,增加了存储成本,但对整体计算效率帮助不大
5.2 存储分层与性能分析
5.2.1 HPC系统的存储分层
现代计算系统的存储层次从快到慢包括:
本机CPU cache:纳秒级访问延迟,容量KB~MB级
本机内存缓存及内存文件系统tmpfs:百纳秒级延迟,容量GB级
本地外部存储:HDD/SATA SSD/NVMe SSD,微秒~毫秒级延迟
集群存储(并行文件系统):毫秒级延迟,容量TB~PB级
5.2.2 数据访问路径对比
传统HPC应用访问路径
数据访问路径基于共享的并行文件系统
总带宽为所有应用共享:典型HPC存储系统的读写带宽约100GB/s(数十GB/s~数百GB/s)
随着节点数增加,每个节点可用的有效带宽迅速下降
基于节点本地存储的访问路径
节点本地存储的聚合带宽会远超并行文件系统带宽,并且更加稳定
每个节点独立访问自己的本地存储,不存在共享竞争
5.2.3 存储介质性能对比
SATA SSD:500MB/s(单个设备)
NVMe SSD:5GB/s(单个设备)
内存tmpfs:6GB/s(内存带宽)
5.2.4 聚合带宽优势分析
计算集群节点本地带宽估算表(单线程/单组件)
| 节点数 | SATA SSD | NVMe SSD | tmpfs |
|---|---|---|---|
| 10 | 5 GB/s | 50 GB/s | 60 GB/s |
| 30 | 15 GB/s | 150 GB/s | 180 GB/s |
| 100 | 50 GB/s | 500 GB/s | 600 GB/s |
| 300 | 150 GB/s | 1,500 GB/s | 1,800 GB/s |
| 1,000 | 500 GB/s | 5,000 GB/s | 6,000 GB/s |
| 3,000 | 1,500 GB/s | 15,000 GB/s | 18,000 GB/s |
| 10,000 | 5,000 GB/s | 50,000 GB/s | 60,000 GB/s |
关键观察:在大规模集群中,节点本地存储的聚合带宽可以达到共享存储的数十倍甚至数百倍。而典型计算集群的共享存储带宽通常不超过100GB/s
5.3 节点本地计算核心原理
5.3.1 基本思想
节点本地计算的核心思想是将计算数据移动到计算节点本地,避免共享存储瓶颈。通过利用每个计算节点自有的存储资源(内存、SSD等),构建一个分布式的、高带宽的数据访问环境。
5.3.2 三阶段处理模型
数据加载阶段:从并行文件系统读取数据到节点本地存储
本地计算阶段:从节点本地存储上读写数据,完成算法功能
结果回写阶段:将计算结果从本地存储写回并行文件系统
以上步骤支持流水线并行操作,即不同数据块在不同阶段同时处理,最大化系统吞吐量。
5.3.3 关键技术优化
数据打包:将多个小文件打包成大文件,减少文件系统元数据开销
数据压缩:减少传输和存储的数据量,提升I/O效率
流水线并行:隐藏数据加载和回写的延迟,使计算阶段持续进行
5.4 关键技术挑战
5.4.1 准入控制机制
前后module间的准入控制
运行速度匹配,避免本地硬盘/内存爆满
信号量是实现准入控制的重要技术手段
本地磁盘分区的容量检测
定制脚本实现灵活的准入控制
同一module在多节点间同步准入控制
针对多节点并行同步场景下,统一整体进度
不同通道的处理/不同节点的数据下载
待处理数据的计算量、节点处理能力都可能差异,会导致计算进度不同,进而影响中间数据累积、内存爆满等
5.4.2 容错处理
自动容错处理
出错影响部分数据的处理
准入控制会导致整个流水线停止
自动容错对准入控制的影响
5.4.3 资源管理与调度
关键module的task处理排序:确保关键路径任务优先执行
非关键模块分解
细分会增加准入控制负担
增加流水线并行提升性能,会增加中间存储的内存使用,影响流水线运行的稳定性
5.5 Scalebox中的设计思路
5.5.1 任务分发模式
Scalebox通过任务分发模式支持节点本地计算:
HOST-BOUND:任务绑定到特定主机,通过
headers->>'to_host'指定目标主机SLOT-BOUND:任务绑定到执行槽,通过
headers->>'to_slot'指定目标执行槽,可作为vtask头节点的任务分发GROUP-BOUND:任务绑定到组,通过执行槽slot的
parameters->>'group_prefix'指定任务task的headers->>'to_host'
5.5.2 位置感知调度
pod_id机制:标识模块属于pod管理,若任务来源的pod也有相同的pod_id,则所有task标识为采用本地计算(task_dist_mode为HOST_BOUND)
任务头中的位置信息:支持前后模块间的本地级联处理
5.5.3 vtask支持框架
vtask作为节点本地计算模型的基本运行单元
通过参数设计,简化本地计算在应用程序中的准入控制、容错等的实现
在跨模块的vtask层级上实现幂等性,保证最终一致性
5.5.4 信号量机制
集中管理全系统的运行状态,使计算模块无状态
通常仅在main-router中被读写,避免并发问题
在普通算法模块中可以读取相应值,用于准入控制决策
5.6 硬件与平台要求
5.6.1 硬件基础设施
需要真正的本地存储支持:云上的虚拟机通常不适合节点本地计算,因为其存储往往是网络附加的
自建服务器集群(不带虚拟化):物理服务器直接访问本地存储
HPC计算节点:传统HPC环境中的计算节点
5.6.2 适用场景总结
节点本地计算特别适用于以下场景:
数据密集型科学计算:天文、生物信息、气候模拟等
大规模媒体处理:视频编解码、图像分析
AI训练与推理:需要快速加载训练数据集的场景
任何I/O带宽需求超过共享存储能力的应用
5.6.3 性能预期
小规模集群(10-100节点):I/O性能提升5-50倍
中规模集群(100-1000节点):I/O性能提升50-500倍
大规模集群(1000+节点):I/O性能提升500倍以上
5.7 总结
节点本地计算技术通过重新设计数据访问路径,充分利用计算节点本地存储的高带宽特性,解决了传统HPC框架中共享存储系统的瓶颈问题。该技术不仅适用于天文计算,也广泛适用于生物信息处理、医疗图像分析、数字视频处理以及AI训练等多种高I/O应用场景。
Scalebox平台通过任务分发模式、位置感知调度、vtask支持和信号量机制等技术手段,为节点本地计算提供了完整的实现框架。在实际部署中,需要确保硬件基础设施提供真正的本地存储支持,才能充分发挥节点本地计算的技术优势。