44
面面面面面面面 面面面面面面面面面 面面面 面面 面面面 2012 面 3 面 面面面面面 面面面面面面面 2009 面 面面面面面面面面

面向科学计算 的 用户级检查点系统

  • Upload
    awena

  • View
    129

  • Download
    0

Embed Size (px)

DESCRIPTION

中国科学院 计算技术研究所 ( 2009 硕 )毕业论文 答辩试讲. 面向科学计算 的 用户级检查点系统. 学生 :张福玺 导师 :赵晓芳 2012 年 3 月. 提纲. 研究背景 相关研究工作 关键 技术 DCR3 设计 与 实现 测试与评价 总结. 提纲. 研究背景 相关研究工作 关键 技术 DCR3 设计 与 实现 测试与评价 总结. 科学计算离不开 HPC. 利用超级计算机求解科学问题、进行科学模拟. 实例 1 Franklin ( 2010.11 Top500 Rank26 ) 32,000 processors 模拟 超新星. - PowerPoint PPT Presentation

Citation preview

Page 1: 面向科学计算 的 用户级检查点系统

面向科学计算的用户级检查点系统学生:张福玺导师:赵晓芳2012 年 3 月

中国科学院 计算技术研究所( 2009 硕)毕业论文答辩试讲

Page 2: 面向科学计算 的 用户级检查点系统

提纲• 研究背景• 相关研究工作• 关键技术• DCR3 设计与实现• 测试与评价• 总结

Page 3: 面向科学计算 的 用户级检查点系统

提纲• 研究背景• 相关研究工作• 关键技术• DCR3 设计与实现• 测试与评价• 总结

Page 4: 面向科学计算 的 用户级检查点系统

科学计算离不开 HPC

• 利用超级计算机求解科学问题、进行科学模拟实例 1• Franklin ( 2010.11 Top500 Rank26 )• 32,000 processors• 模拟超新星

实例 2• Jaguar ( 2010.11 Top500 Rank2 )• 核聚变• 模拟电波向里传播加热聚变等离子

Page 5: 面向科学计算 的 用户级检查点系统

Systems 2009 2011 2015 2018

System peak 2Peta 20Peta 100-200P 1ESystem memory 0.3PB 1.6PB 5PB 10PBNode performance 125GF 200GF 200-400GF 1-10TFNode memory BW 25GB/s 40GB/s 100GB/s 200-400GB/sNode concurrency 12 32 O(100) O(1000)Interconnect BW 1.5GB/s 22GB/s 25GB/s 50GB/sSystem size(nodes) 18,700 100,000 500,000 O(million)Total concurrency 225,000 3,200,000 O(50,000,000) O(billion)Storage 15PB 30PB 150PB 300PBIO 0.2TB/s 2TB/s 10TB/s 20TB/sMTBF 4days 19h4min 3h52min 1h56min

高性能计算机系统规模迈入 P 级• 科学计算迈入千万亿次计算时代• MTBF 随规模的增大而迅速降低

Page 6: 面向科学计算 的 用户级检查点系统

科学计算的容错需求• P 级系统,一次全系统检查点将耗时 30 分钟!

• P 级科学计算对检查点技术的需求– 检查点设置低开销– 检查点文件保存高可靠性与透明迁移– 自动化的故障处理:自动故障检测与应用重启恢复

Systems Perf. Ckpt time SourceRoadRunner 1PF ~20 min. PanasasLLNL BG/L 500 TF >20 min. LLNLArgonne BG/P 500 TF ~30 min. LLNLTotal SGI Altix 100 TF ~40 min. estimationIDRIS BG/P 100 TF 30 min. IDRIS

Page 7: 面向科学计算 的 用户级检查点系统

提纲• 研究背景• 相关研究工作• 关键技术• DCR3 设计与实现• 测试与评价• 总结

Page 8: 面向科学计算 的 用户级检查点系统

进程检查点• 系统级检查点

– 在核心层实现进程状态的保存和恢复– 透明性好、移植性较差、开销大– EPCKPT 、 CRAK 、 BLCR 、 TICK

• 用户级检查点– 目标进程的用户态上下文中进行保存和恢复– 自定义要保存的进程状态和数据– 有效降低检查点操作给存储系统带来的压力– 减少协作式检查点的同步开销

Page 9: 面向科学计算 的 用户级检查点系统

用户级检查点实现• Condor

– 层次化架构、提供灵活的资源管理服务– 检查点仅支持单进程任务,不支持使用 fork 及类似系统调用的任务

• CHK-LIB– 支持用户定义的检查点 (user-defined checkpointing) 的通信库– 不保存系统变量,如进程栈、进程寄存器等信息– 调用检查点时,应用必须处于一致的状态

• Libckpt– 增量检查点、写时复制检查点– 用户定制的检查点

• 可定制要保存的检查点内容• 程序指定可进行检查点的位置(同步检查点)

Page 10: 面向科学计算 的 用户级检查点系统

并行检查点• 进程检查点

– 基于 BLCR : LAM-MPI , MVAPICH2 , MPICH2• 通信通道检查点

– TCP/IP• 用户级,清空通信通道• 内核级,修改协议栈: TCPCP2• 增加中间层方法, ZAP 容器: Cruz

– InfiniBand• 用户级,清空通信通道: MVAPICH2• 内核级:暂无

• 同步控制– 非协同检查点,多米诺效应 – 协同检查点

• CoCheck , OpenMPI , AMPI

Page 11: 面向科学计算 的 用户级检查点系统

自动化故障处理• 自我感知故障、自我修复、自我管理

– University of Wisconsin :• Condor

– Lawrence Livermore National Laboratory :• Simple Linux Utility for Resource Management(SLURM)

– Platform Computing :• Platform LSF

– IBM :• Autonomic Computing

Page 12: 面向科学计算 的 用户级检查点系统

提纲• 研究背景• 相关研究工作• 关键技术• DCR3 设计与实现• 测试与评价• 总结

Page 13: 面向科学计算 的 用户级检查点系统

降低检查点开销• 内存排除

– 如何定位可以被排除的内存:如只读内存– 每次检查点如何最大程度地排除内存– 透明的内存排除技术

• 代码段:无需保存,恢复时从可执行文件中重新载入• 利用栈指针:无需保存当前栈指针以下的内存区• 增量式检查点:利用页式虚存管理• 缺点:以页为单位识别,粒度较粗

– 程序员指导的内存排除• 科学计算程序经常分配大量的内存作为临时数组等数据结构,可在进程状态恢复操作之后进行重建• 通过应用程序辅助,向检查点库指出“不重要”的数据区域

Page 14: 面向科学计算 的 用户级检查点系统

降低检查点开销(续)• 无盘检查点

– 频繁的无盘检查点– 相对较长间隔的稳定存储检查点

• 写时复制– 隐藏检查点操作所消耗的时间

• 检查点操作与程序运行并行执行– 无需立刻将所有数据复制到缓冲区中– 利用页式虚拟存储器的功能,将程序空间内的所有页都置为“只读”– 程序修改某一页面时才将该页面复制到缓冲区

Page 15: 面向科学计算 的 用户级检查点系统

降低检查点开销(续)• 检查点在线压缩

– 要求压缩的时间小于因数据量减少而节约的时间– 设定 S为检查点数据大小, C为压缩速度, f为压缩率,

D为磁盘写速度

– 压缩算法对比• 选用 Snappy 算法

CDf

DS

DSf

CS

)1(

算法 压缩后文件大小 压缩率 IO性能 IO性能提升无压缩 670 8.41 Snappy 403 40% 6.37 25%LZF 400 40% 6.63 21%LZO 398 41% 8.1 5%ZLIB 346 48% 9.73 -16%

Page 16: 面向科学计算 的 用户级检查点系统

检查点文件存储技术• 本地存储:

–延迟小、减少网络竞争–节点失效导致状态不可恢复

• 全局共享存储:–维护可靠性–延迟大、增加网络竞争

• 两级存储:本地存储 + 全局共享存储4

3

1

计算结点进程

磁盘 

空闲结点进程

磁盘

全局共享存储2

Page 17: 面向科学计算 的 用户级检查点系统

副本备份• 副本放置(三副本):

–本地节点–本机架另外一个节点– 不同机架的一个节点–当副本数小于 3 ,找到新节点复制副本,保证总是 3副本

• 读取优先级:–本地节点副本 > 本机架副本 > 其他机架副本

Page 18: 面向科学计算 的 用户级检查点系统

流水线复制副本建立管道

数据流

结束

客户端 结点 i 结点 j 结点 k

建立管道

逻辑块 0

逻辑块 2

逻辑块 3

关闭管道

t0

t1

t2

t3

逻辑块 0

Page 19: 面向科学计算 的 用户级检查点系统

故障检测• 常用检测技术

– 系统定时巡检:• 每隔一定时间周期就对被检测对象进行一次检测• 时间周期短,故障检测的精确度高• 通信开销大

– 心跳检测:• 在一段时间间隔向外广播自身的状态• 网络延迟易导致误判

• 结合定时巡检与心跳检测– 应用进程端采用心跳检测,周期 T2– GCTRL 定期巡检,周期 T1 ( T1>T2 )– 引入 DCRD

• GCTRL 检测 DCRD• DCRD 检测本地应用进程

GCTRL

DCRD

进程 进程 进程

DCRD

进程 进程 进程

DCRD

进程 进程 进程

Page 20: 面向科学计算 的 用户级检查点系统

自动化重启恢复开始

原节点可用

Restart

自动检测与自动检查点循环

备用节点足够

重启崩溃节点

YES

NO

任务失败

清理资源

资源准备

崩溃节点足够

加入备用节点列表

加入坏节点列表重启成功

YES

YES

YES

NO

NO

NO

Page 21: 面向科学计算 的 用户级检查点系统

提纲• 研究背景• 相关研究工作• 关键技术• DCR3设计与实现• 测试与评价• 总结

Page 22: 面向科学计算 的 用户级检查点系统

DCR3 系统组件关系

 

DCRDAPP

   

MPI

libdcr3

GCTRL

PPS

内核层 

用户层 

网络t

 

CT

Page 23: 面向科学计算 的 用户级检查点系统

核心控制网络• GCTRL 将节点分组(同一机柜 /刀片箱)• 每组一个中转节点• 短连接、无通信时不保持连接• GCTRL 与各 DCRD消息均由组内中转 DCRD转发• GCTRL 统一管理 DCRD 分组信息

       

     

DCRD集

GCTRL

Page 24: 面向科学计算 的 用户级检查点系统

用户函数库• 编程时调用接口,链接时链入 libdcr3• 关键的函数:

/* 注册应用与 MPI 进程, * app_string 用于标识应用本次运行字符串。 */int dcr3_init(const char *app_string);

/* 注销应用。类似 MPI_Finalize()函数。 */int dcr3_finalize(void);

/* 检查点请求。 */int dcr3_ckpt(char **ckpt_data, int *data_len, int data_num);

/* 重启请求。 */int dcr3_rstr(int round, char ***rstr_data, int **data_len, int *data_num);

Page 25: 面向科学计算 的 用户级检查点系统

用户函数库(续)• 各参数关系

– int dcr3_ckpt(char **ckpt_data, int *data_len, int data_num)

data_num

ckpt_datadata_len

  

 

 

Page 26: 面向科学计算 的 用户级检查点系统

检查点文件格式

第 0 次检查点RANK号为 1 的进程

 后续数据总条数

第 0条数据第 1条数据

标明为 dcr3 应用dcr3版本号

 应用标识串

 本次运行总进程数第 0 次检查点

 

/tmp/msFEM/0/

0.info.ckpt.dcr3

0.0.ckpt.dcr3

0.1.ckpt.dcr3

dcr3

0.2.0 

msFEM 

200

data_num 

ckpt_data[0] 

ckpt_data[1] 

data_len[] 

后续每条数据长度

检查点存储根目录:系统配置应用本次运行的检查点文件目录: dcr3_init() 指定第 N 次检查点目录名第M号进程检查点文件名

Page 27: 面向科学计算 的 用户级检查点系统

PPS(Peta Particle Storage) 子模块• 为 libdcr3 提供文件操作相关接口• 分布式文件系统采用 HDFS ,封装实现

– 文件系统的改变无需应用重编译 /链接• HDFS 相关特性:

– 副本备份• 采用三副本存储

– 数据校验– 流水线写– Java虚拟机

• 可能会影响存储时间开销

Page 28: 面向科学计算 的 用户级检查点系统

自容错机制• 初始部署:结点列表文件• 运行时故障

– gctrl/dcrd异常崩溃• watchdog监视运行,日志文件保存运行信息• 重启进程,读取日志文件

– dcrd 结点故障• gctrl 定期广播,故障结点被标记为坏结点• 修复后,启动 dcrd 通知 gctrl

– gctrl 结点故障• 人工选择可用结点,重启 gctrl

• 故障时应用处于运行中– 检查点时:检查点失败,应用异常退出

• gctrl触发自动重启– 非检查点时:不影响应用运行

Page 29: 面向科学计算 的 用户级检查点系统

提纲• 研究背景• 相关研究工作• 关键技术• DCR3 设计与实现• 测试与评价• 总结

Page 30: 面向科学计算 的 用户级检查点系统

测试环境• 曙光 6000刀片机• 两颗 Intel(R) Xeon(R) X5675六核 CPU• 内存 48 GB 、千兆以太网与 InfiniBand• SUSE Linux Enterprise Server 10 • linux- 2.6.16.60-0.21-smp• MPI 实现: MPICH2 • 测试应用: msFEM ( 18节点、 NP=216 )

– 三维、非线性、大变形多尺度材料模拟程序,基于塑性梯度理论,可以考虑温度 -率相关性和材料损伤– 有限单元数量从一百万到一千万

Page 31: 面向科学计算 的 用户级检查点系统

检查点总开销• 检查点时间间隔 300s

• HDFS : Java虚拟机的参与,占用较多计算资源1,000,000

2,000,000

3,000,000

4,000,000

5,000,000

6,000,000

7,000,000

8,000,000

9,000,000

10,000,000 0

20

40

60

80

100

120

140

160

180

200

BLCRDCR3-LOCALDCR3-HDFSnockpt

有限单元数量

应用运行时间(分)

Page 32: 面向科学计算 的 用户级检查点系统

单次检查点开销

• 与 BLCR 相比,开销减少 85% 以上– 使用 COW 技术,隐藏检查点开销

1,000,000

2,000,000

3,000,000

4,000,000

5,000,000

6,000,000

7,000,000

8,000,000

9,000,000

10,000,000 0.00

20.00

40.00

60.00

80.00

100.00

120.00

140.00

BLCR

DCR3-LOCAL

DCR3-HDFS

有限单元数量

单次检查点开销(秒)

Page 33: 面向科学计算 的 用户级检查点系统

• 与 BLCR 相比,延迟减少大约 75%– 检查点数据量小– 同步开销小

• HDFS 的 sync 只保证数据到达数据结点,并不保证数据已完全在磁盘上了

检查点延迟

1,000,000

2,000,000

3,000,000

4,000,000

5,000,000

6,000,000

7,000,000

8,000,000

9,000,000

10,000,0000.0

20.0

40.0

60.0

80.0

100.0

120.0

BLCRDCR3-LOCALDCR3-HDFS

有限单元数量

检查点延迟(秒)

Page 34: 面向科学计算 的 用户级检查点系统

检查点文件空间开销有限单元数量 BLCR( GB

)DCR3( GB

)空间开销减少百分比

1,000,000 13.4 2.8 79.17%2,000,000 25.2 5.6 77.71%3,000,000 34.2 8.4 75.37%4,000,000 43.2 11.0 74.50%5,000,000 52.2 13.3 74.34%6,000,000 63.0 16.2 74.29%7,000,000 72.9 19.6 72.70%8,000,000 81.4 22.4 72.27%9,000,000 90.3 25.2 71.92%

10,000,000 100.8 28.0 72.14%

Page 35: 面向科学计算 的 用户级检查点系统

重启开销

• 纵轴为重启时间(秒)取基数为 10 的对数• HDFS : Java虚拟机、数据迁移

1,000,000

2,000,000

3,000,000

4,000,000

5,000,000

6,000,000

7,000,000

8,000,000

9,000,000

10,000,00010

100

1000

10000

100000

BLCR

DCR3-LOCAL

DCR3-HDFS

Page 36: 面向科学计算 的 用户级检查点系统

扩展性模拟测试• 同组节点的 DCRD放到同一个节点上• 本组中转结点与本组其他 DCRD 在不同节点上

– 确保所有消息均是节点间传输• 模拟 2000个节点• GCTRL发送到收到所有回复消息时间小于 0.2秒• 定期巡检周期 2秒,收到所有回复小于 2.5秒• 结论:没有因为自身规模的增加而导致网络延迟的增加

   GCTRL

DCRD

DCRD集合

Page 37: 面向科学计算 的 用户级检查点系统

提纲• 研究背景• 相关研究工作• 关键技术• DCR3 设计与实现• 测试与评价• 总结

Page 38: 面向科学计算 的 用户级检查点系统

总结• 本文主要的工作和贡献主要体现在以下三个方面:

– 提出了以应用数据为中心的检查点,仅保存与应用指定的数据,与系统级实现相比大幅提升性能。• 检查点开销减少 85% 以上• 检查点延迟减少大约 75%• 存储空间开销减少 70% 以上

– 设计并实现了一个自动化的检查点系统 DCR3• 映像文件管理、故障检测、故障恢复、节点替换

– 提高 DCR3 系统可扩展性,使得可以支持曙光 6000机群系统上千节点规模

Page 39: 面向科学计算 的 用户级检查点系统

下一步工作• 对曙光 6000 的全规模的压力测试与调优。• 支持灵活多变的进程数可变重启。重启时根据系统可用计算核数调整重启的进程数,与应用合作完成检查点数据的重新分割。• 检查点数据存储的负载平衡,动态调节各结点存储负载。

Page 40: 面向科学计算 的 用户级检查点系统

课程情况• 本人已经按照研究生院课程要求修完全部课程,并获得毕业所要求的学分。

Page 41: 面向科学计算 的 用户级检查点系统

工程情况• 参与 PetaParticle项目中用户级检查点系统

DCR3 的设计、开发和调试工作。

Page 42: 面向科学计算 的 用户级检查点系统

谢谢 !

Page 43: 面向科学计算 的 用户级检查点系统
Page 44: 面向科学计算 的 用户级检查点系统

系统框架DCR3系统组件关系 DCR3分层拓扑结构

 DCRD

APP   

MPI

libdcr3

GCTRL

PPS

内核层 

用户层 

网络

t

 

CT

       

     

DCRD集

GCTRL