Burst Buffer是什么技术,它跟HPC有什么关系?首先我们一起来了解一个美国超算中心NERSC(国家能源研究科学计算中心),然后通过NERSC超算系统和Burst Buffer应用来说说Burst Buffer技术。
NERSC一直与Cray(克雷)合作,为Cori (Cori 是 NERSC最新的大型计算系统) 的用户和应用提供Burst Buffer技术。 NERSC Burst Buffer是采用Cray DataWarp技术,其本质是使用闪存或SSD技术来显着提高Cori的I/O性能。
NERSC致力于通过高性能计算和数据分析加速美国能源部科学探索,并向科学办公室提供高性能计算服务。NERSC的使命是实现规模的计算科学,需要大量计算和广泛建模。包括光合作用建模,全球气候建模,燃烧建模,磁性融合,天体物理学,计算生物学等等,这些场景都存在浪涌型IO高性能诉求。
为什么需要Burst Buffer
NERSC为了满足用户对更好的I/O性能的要求,已经在多个计算系统采用了Burst Buffer技术。采用Burst Buffer,可以改进两个场景的I/O性能。
1.改善应用程序可用的总带宽。带宽越高,经过优化的应用程序可以在单位时间读取/写入大量数据越多,速度越快。
2.提升文件系统的OPS。HPC场景,有许多应用程序要执行大量的小型I/ O操作,在这种情况下OPS成为性能的限制因素。
另外,Burst Buffer技术通过更快的checkpoint restart提高应用程序可靠性;加快了小块传输和分析的I/O性能;为核心外部应用程序提供快速临时空间;为需要持久快速存储的大量文件输入或耦合模拟分析作业创建暂存区域。
Burst Buffer架构
下图说明了Burst Buffer的概念架构。Burst Buffer在物理位置上是处于计算和存储节点之间,本质是一层Flash层。在Cray DataWarp方案中,它承载在专门的XC40计算硬件节点上,它是I/O计算节点(采用Aries互联)和存储Fabric的桥梁。SSD安装在Burst Buffer节点中,通过Scheduler和DataWarp软件堆栈来调动和支持HPC计算作业。
Burst Buffer节点内部的SSD通过PCIe连接,插入到计算刀片XC40中,并通过Aries HPC互连连接。DataWarp支持Lustre、GPFS和PanFS并行文件系统,给FS提供一个全局的Flash缓存层,通过智能调度算法来从下层并行文件系统预取计算数据。
Cray DataWarp(BB)的闪存磁盘连接到XC40节点。每个Brust Buffer节点包含一个至强处理器64 GB DDR3内存,以及两个3.2 TB NAND闪存SSD模块,连接在两个PCIe gen3 x8接口上。 每个Burst Buffer节点通过PCIe Gen3 x16接口连接到Cray Aries网络互连。 每个Burst Buffer节点提供大约6.4 TB的可用容量和大约5.7 GB/s的顺序读写带宽的峰值。
DataWarp的软件堆栈包括:创建挂载点服务、LVM卷,XFS和DataWarp文件系统。DataWarp中的多个SSD设备通过LVM管理起来,然后在创建Brust Buffer时创建XFS组成Brust Buffer空间,DataWarp File System (DWFS)配合安装在计算节点的Client来协调数据在Brust Buffer上换入换出,并且向计算节点提供统一命名空间来进行数据访问。
这种架构提供了许多适合NERSC的科学Workload的特性。在技术上主要体现在以下几个方面。
调度程序集成。对Burst Buffer资源的访问与系统的调度程序集成。 调度程序提供了调配一组用户或作业共享的BurstBuffer资源的功能。它还可以处理自动数据迁移到BurstBuffer,或从BurstBuffer存储迁移到后端存储。
缓存模式。BurstBuffer还可以提供缓存模式,其中闪存资源用作大型Lustre文件系统的缓存层。这种模式对用户程序代码是透明的,无需修改代码便可提供高性能I / O。
过滤分析。允许在BurstBuffer节点上处理和过滤数据。
NERSC的Burst Buffer路标
Burst Buffer软件堆栈预计将分四个阶段交付(如下所示):Burst Buffer软件的第一阶段是在2015年秋季与Cori系统的第一阶段一起交付的。
第一阶段,Burst Buffer为每个计算任务分配持久存储预留;
在第二阶段才能实现Cache模式;
到了第三阶段,BurstBuffer才能真正实现基于算法的冷热数据自动换入换出加速。
在2015年8月完成了对Burst Buffer Early Access计划的建议征集。
DataWarp软件在第1阶段提供了使用Burst Buffer的API。用户通常通过批处理系统(即slurm)与此接口以定义突发缓冲区分配,例如大小和访问模式(条带化),并指定预留是否应该是持久的。Burst缓冲区可用于所有Cori用户,BurstBuffer在Cori系统上,可以提供大约1.7 TB/秒的峰值I/O性能,具有28M IOP和大约1.8PB的存储容量。
Cray的HPC方案