450 likes | 603 Views
中国科学院 计算技术研究所 ( 2009 硕 )毕业论文 答辩试讲. 面向科学计算 的 用户级检查点系统. 学生 :张福玺 导师 :赵晓芳 2012 年 3 月. 提纲. 研究背景 相关研究工作 关键 技术 DCR3 设计 与 实现 测试与评价 总结. 提纲. 研究背景 相关研究工作 关键 技术 DCR3 设计 与 实现 测试与评价 总结. 科学计算离不开 HPC. 利用超级计算机求解科学问题、进行科学模拟. 实例 1 Franklin ( 2010.11 Top500 Rank26 ) 32,000 processors 模拟 超新星.
E N D
中国科学院 计算技术研究所(2009硕)毕业论文答辩试讲 面向科学计算的用户级检查点系统 学生:张福玺 导师:赵晓芳 2012年3月
提纲 • 研究背景 • 相关研究工作 • 关键技术 • DCR3设计与实现 • 测试与评价 • 总结
提纲 • 研究背景 • 相关研究工作 • 关键技术 • DCR3设计与实现 • 测试与评价 • 总结
科学计算离不开HPC • 利用超级计算机求解科学问题、进行科学模拟 实例1 • Franklin(2010.11 Top500 Rank26) • 32,000 processors • 模拟超新星 实例2 • Jaguar(2010.11 Top500 Rank2 ) • 核聚变 • 模拟电波向里传播加热聚变等离子
高性能计算机系统规模迈入P级 • 科学计算迈入千万亿次计算时代 • MTBF随规模的增大而迅速降低
科学计算的容错需求 • P级系统,一次全系统检查点将耗时30分钟! • P级科学计算对检查点技术的需求 • 检查点设置低开销 • 检查点文件保存高可靠性与透明迁移 • 自动化的故障处理:自动故障检测与应用重启恢复
提纲 • 研究背景 • 相关研究工作 • 关键技术 • DCR3设计与实现 • 测试与评价 • 总结
进程检查点 • 系统级检查点 • 在核心层实现进程状态的保存和恢复 • 透明性好、移植性较差、开销大 • EPCKPT、CRAK、BLCR、TICK • 用户级检查点 • 目标进程的用户态上下文中进行保存和恢复 • 自定义要保存的进程状态和数据 • 有效降低检查点操作给存储系统带来的压力 • 减少协作式检查点的同步开销
用户级检查点实现 • Condor • 层次化架构、提供灵活的资源管理服务 • 检查点仅支持单进程任务,不支持使用fork及类似系统调用的任务 • CHK-LIB • 支持用户定义的检查点(user-defined checkpointing)的通信库 • 不保存系统变量,如进程栈、进程寄存器等信息 • 调用检查点时,应用必须处于一致的状态 • Libckpt • 增量检查点、写时复制检查点 • 用户定制的检查点 • 可定制要保存的检查点内容 • 程序指定可进行检查点的位置(同步检查点)
并行检查点 • 进程检查点 • 基于BLCR:LAM-MPI,MVAPICH2,MPICH2 • 通信通道检查点 • TCP/IP • 用户级,清空通信通道 • 内核级,修改协议栈:TCPCP2 • 增加中间层方法,ZAP容器:Cruz • InfiniBand • 用户级,清空通信通道:MVAPICH2 • 内核级:暂无 • 同步控制 • 非协同检查点,多米诺效应 • 协同检查点 • CoCheck,OpenMPI,AMPI
自动化故障处理 • 自我感知故障、自我修复、自我管理 • University of Wisconsin: • Condor • Lawrence Livermore National Laboratory: • Simple Linux Utility for Resource Management(SLURM) • Platform Computing: • Platform LSF • IBM: • Autonomic Computing
提纲 • 研究背景 • 相关研究工作 • 关键技术 • DCR3设计与实现 • 测试与评价 • 总结
降低检查点开销 • 内存排除 • 如何定位可以被排除的内存:如只读内存 • 每次检查点如何最大程度地排除内存 • 透明的内存排除技术 • 代码段:无需保存,恢复时从可执行文件中重新载入 • 利用栈指针:无需保存当前栈指针以下的内存区 • 增量式检查点:利用页式虚存管理 • 缺点:以页为单位识别,粒度较粗 • 程序员指导的内存排除 • 科学计算程序经常分配大量的内存作为临时数组等数据结构,可在进程状态恢复操作之后进行重建 • 通过应用程序辅助,向检查点库指出“不重要”的数据区域
降低检查点开销(续) • 无盘检查点 • 频繁的无盘检查点 • 相对较长间隔的稳定存储检查点 • 写时复制 • 隐藏检查点操作所消耗的时间 • 检查点操作与程序运行并行执行 • 无需立刻将所有数据复制到缓冲区中 • 利用页式虚拟存储器的功能,将程序空间内的所有页都置为“只读” • 程序修改某一页面时才将该页面复制到缓冲区
降低检查点开销(续) • 检查点在线压缩 • 要求压缩的时间小于因数据量减少而节约的时间 • 设定S为检查点数据大小,C为压缩速度,f为压缩率,D为磁盘写速度 • 压缩算法对比 • 选用Snappy算法
空闲结点 计算结点 进程 进程 检查点文件存储技术 1 磁盘 磁盘 3 • 本地存储: • 延迟小、减少网络竞争 • 节点失效导致状态不可恢复 • 全局共享存储: • 维护可靠性 • 延迟大、增加网络竞争 • 两级存储:本地存储+全局共享存储 4 2 全局共享存储
副本备份 • 副本放置(三副本): • 本地节点 • 本机架另外一个节点 • 不同机架的一个节点 • 当副本数小于3,找到新节点复制副本,保证总是3副本 • 读取优先级: • 本地节点副本 > 本机架副本 > 其他机架副本
流水线复制副本 结点j 客户端 结点i 结点k t0 建立管道 建立管道 t1 逻辑块0 逻辑块0 数据流 逻辑块2 逻辑块3 t2 关闭管道 结束 t3
GCTRL 故障检测 DCRD DCRD DCRD • 常用检测技术 • 系统定时巡检: • 每隔一定时间周期就对被检测对象进行一次检测 • 时间周期短,故障检测的精确度高 • 通信开销大 • 心跳检测: • 在一段时间间隔向外广播自身的状态 • 网络延迟易导致误判 • 结合定时巡检与心跳检测 • 应用进程端采用心跳检测,周期T2 • GCTRL定期巡检,周期T1( T1>T2 ) • 引入DCRD • GCTRL检测DCRD • DCRD检测本地应用进程 进程 进程 进程 进程 进程 进程 进程 进程 进程
提纲 • 研究背景 • 相关研究工作 • 关键技术 • DCR3设计与实现 • 测试与评价 • 总结
GCTRL DCR3系统组件关系 CT 网络 t DCRD APP libdcr3 PPS MPI 用户层 内核层
GCTRL 核心控制网络 DCRD集 • GCTRL将节点分组(同一机柜/刀片箱) • 每组一个中转节点 • 短连接、无通信时不保持连接 • GCTRL与各DCRD消息均由组内中转DCRD转发 • GCTRL统一管理DCRD分组信息
用户函数库 • 编程时调用接口,链接时链入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);
data_len 用户函数库(续) ckpt_data • 各参数关系 • int dcr3_ckpt(char **ckpt_data, int *data_len, int data_num) data_num
检查点文件格式 dcr3 标明为dcr3应用 /tmp/msFEM/0/ 0.2.0 dcr3版本号 0.info.ckpt.dcr3 msFEM 应用标识串 200 本次运行总进程数 0.0.ckpt.dcr3 检查点存储根目录:系统配置 0 第0次检查点 0.1.ckpt.dcr3 应用本次运行的检查点文件目录:dcr3_init()指定 0 第0次检查点 第N次检查点目录名 1 RANK号为1的进程 data_num 后续数据总条数 第M号进程检查点文件名 data_len[] 后续每条数据长度 ckpt_data[0] 第0条数据 ckpt_data[1] 第1条数据
PPS(Peta Particle Storage)子模块 • 为libdcr3提供文件操作相关接口 • 分布式文件系统采用HDFS,封装实现 • 文件系统的改变无需应用重编译/链接 • HDFS相关特性: • 副本备份 • 采用三副本存储 • 数据校验 • 流水线写 • Java虚拟机 • 可能会影响存储时间开销
自容错机制 • 初始部署:结点列表文件 • 运行时故障 • gctrl/dcrd异常崩溃 • watchdog监视运行,日志文件保存运行信息 • 重启进程,读取日志文件 • dcrd结点故障 • gctrl定期广播,故障结点被标记为坏结点 • 修复后,启动dcrd通知gctrl • gctrl结点故障 • 人工选择可用结点,重启gctrl • 故障时应用处于运行中 • 检查点时:检查点失败,应用异常退出 • gctrl触发自动重启 • 非检查点时:不影响应用运行
提纲 • 研究背景 • 相关研究工作 • 关键技术 • DCR3设计与实现 • 测试与评价 • 总结
测试环境 • 曙光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) • 三维、非线性、大变形多尺度材料模拟程序,基于塑性梯度理论,可以考虑温度-率相关性和材料损伤 • 有限单元数量从一百万到一千万
检查点总开销 • 检查点时间间隔300s • HDFS:Java虚拟机的参与,占用较多计算资源
单次检查点开销 • 与BLCR相比,开销减少85%以上 • 使用COW技术,隐藏检查点开销
检查点延迟 • 与BLCR相比,延迟减少大约75% • 检查点数据量小 • 同步开销小 • HDFS的sync只保证数据到达数据结点,并不保证数据已完全在磁盘上了
重启开销 • 纵轴为重启时间(秒)取基数为10的对数 • HDFS:Java虚拟机、数据迁移
GCTRL 扩展性模拟测试 DCRD • 同组节点的DCRD放到同一个节点上 • 本组中转结点与本组其他DCRD在不同节点上 • 确保所有消息均是节点间传输 • 模拟2000个节点 • GCTRL发送到收到所有回复消息时间小于0.2秒 • 定期巡检周期2秒,收到所有回复小于2.5秒 • 结论:没有因为自身规模的增加而导致网络延迟的增加 DCRD集合
提纲 • 研究背景 • 相关研究工作 • 关键技术 • DCR3设计与实现 • 测试与评价 • 总结
总结 • 本文主要的工作和贡献主要体现在以下三个方面: • 提出了以应用数据为中心的检查点,仅保存与应用指定的数据,与系统级实现相比大幅提升性能。 • 检查点开销减少85%以上 • 检查点延迟减少大约75% • 存储空间开销减少70%以上 • 设计并实现了一个自动化的检查点系统DCR3 • 映像文件管理、故障检测、故障恢复、节点替换 • 提高DCR3系统可扩展性,使得可以支持曙光6000机群系统上千节点规模
下一步工作 • 对曙光6000的全规模的压力测试与调优。 • 支持灵活多变的进程数可变重启。重启时根据系统可用计算核数调整重启的进程数,与应用合作完成检查点数据的重新分割。 • 检查点数据存储的负载平衡,动态调节各结点存储负载。
课程情况 • 本人已经按照研究生院课程要求修完全部课程,并获得毕业所要求的学分。
工程情况 • 参与PetaParticle项目中用户级检查点系统DCR3的设计、开发和调试工作。
GCTRL GCTRL 系统框架 CT 网络 DCRD集 t DCR3系统组件关系 DCR3分层拓扑结构 DCRD APP libdcr3 PPS MPI 用户层 内核层