基于HPC场景的集群管理系统(slurm系统初相识)
1. 引言
随着现在深度学习越发的流行,超级计算工作站也逐渐流行了起来。曾经我们远程使用的服务器可能都是单机的,给一个ip地址,一个端口号,一个用户名和一个密码,我们就直接ssh上去了。
但是,这种只适合少量人的单机场景,现在一般的机构都会构建集群,动不动就是8*8卡的集群,如果再使用非常原始的用户登录,不仅出现大量的资源浪费,还会由于资源需要自己主动抢占而出现肢体冲突的情况,身边很多要好的朋友都会由于资源的恶性竞争而渐行渐远。
因此,再管理更大的资源的时,必须需要一套行之有效的管理系统,才能够保证一切的顺利进行。不过,但凡管理,都是有管理成本的。什么时候需要构建管理系统,取决于管理成本<优化收益。当我们原生的生态出现了矛盾和冲突,需要全局统筹的时候,这时候管理系统就必须落实了。
因此,我们逐渐接触到了看似更加复杂,但是更加有效和长远的基于HPC场景的集群管理系统。通过我实际搜索和调阅相关资料,目前主流的集群任务调度系统主要有4个:LSF,SGE,PBS和Slurm。
2. 背景(四大集群介绍)
LSF是一个比较主流的任务调度系统,包括深圳和苏州的超算中心都是使用的LSF系统,包括Spectrum LSF, PlatformLSF和OpenLava。我接触到的都是PlatformLSF。
SGE则包括UGE和SGE,本来是开源的,但是被Oracle收购后就变成了闭源了。
PBS则包括OpenPBS,PBS PRO 和Moab/TORQUE,可能由于比较老了吧,目前我没有见到了。
最后介绍我自己亲自使用的Slurm系统,熟悉了系统以后,上手的感觉确实还不错,当然也是唯一一个开源的系统,这意味着我们可以自己构建属于自己的集群(如果有这么多资源的话)。
下面是四个集群管理系统的比较。可以看到,由于目前GPU需求量越来越大,因此我们目前常见的主要是LSF(曙光)和Slurm(天河)。
3. slurm入门
3.1 slurm安装
尽管slurm是一个开源项目,我们每个人都可以试一把,不过考虑到我们每个人可支配资源的缘故,这里我们不讲述slurm的系统搭建,感兴趣的同学可以看看《ubuntu22.04安装slurm》,《ubuntu系统下SLURM集群》,《在ubuntu环境下搭建slurm(2022年9月)》,《2台搭建slurm系统》等。
这里主要是简要介绍如何快速使用slurm以及给出相关参考文献。
3.2 slurm简介
slurm既然也是系统,必然执行系统的一个重要功能,那就是资源的调度和管理,与普通的操作系统不同的是,它更多的是面向作业任务和硬件资源分配的。也就是说,它更适合针对科研工作而进行的管理。现实中,我们的很多高精尖的实验室也是实行类似的管理制度,毕竟僧多粥少的情况在我们这是存在的并将长期存在的。那么它的终极目标就来了:尽自己最大可能将手上的硬件资源分配到即将到来的作业上,使得由多台高性能计算机(HPC)能够充分发挥自己的能力的同时,还保证所有作业都能够以一种公平和谐的状态运行。
当然,这些都不重要了。我们想了解的是如何使用。
3.3 slurm的使用
好了,现在假设我们已经登录到了一个slurm上了,我们该做些什么呢?我觉得就三步:第一步观察周围环境,第二步采取行动,第三步,看看自己的行为如何。
下图的蓝色部分基本上就是我们用户关注的一些常用命令了。
3.3.1 观察周围环境(查阅目前集群状态)
命令1:sinfo
(查看集群运行状态)
就会出现如下的形式:
(base) [xiazh@login ~]$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
CPU-Large* up 20-00:00:0 3 mix cnode[220,231,236]
CPU-Large* up 20-00:00:0 5 alloc cnode[164-169]
CPU-Small up 15-00:00:0 2 mix cnode[220,231]
命令2:squeue
(查看任务运行状态)
如果上面sinfo
是一个集群概览,那么squeue
则是看作业队列的详情,例如:
(base)[xiazh@login]$ squeueJOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)55 cpu test xiazh PD 0:00 1 (PartitionTimeLimit)54 cpu test xiazh R 0:15 1 cnode220
如果需要看特定用户的话,只需要加上参数-u <name>即可。
命令3:sacct
(查看自己的历史作业)
上面的任务只能查看到运行的和待运行的任务,而sacct
则是能够看到自己之前执行的作业情况,包括完成的和失败的,例如:
[liuhy@admin playground]$ sacctJobID JobName Partition Account AllocCPUS State ExitCode
------------ ---------- ---------- ---------- ---------- ---------- --------
104 bash gpu root 1 COMPLETED 0:0
140 test cpu root 12 COMPLETED 0:0
141 test cpu root 12 CANCELLED+ 0:0
141.batch batch root 12 CANCELLED 0:15
141.extern extern root 12 COMPLETED 0:0
142 lllll cpu root 1 FAILED 2:0
142.extern extern root 1 COMPLETED 0:0
142.0 lllll root 1 FAILED 2:0
3.3.2 运行程序(提交作业方式)
运行程序有三种方式,交互式作业、批处理作业和实时分配作业(前两种的结合体),这里主要使用第一种和第二种方式。
批处理作业(sbatch
)
这种方式则是当任务需要长时间运行且自己已经调试成功了,只需要执行即可。这种执行方式其实比较古老,但是非常的严谨。
一个常用的slurm执行文件run.slurm内容如下:
#!/bin/bash
#SBATCH -J example
#SBATCH -p p-V100
#SBATCH -N 1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=6
#SBATCH --gres=gpu:1
time=$(date "+%m%d-%H%M")
python run.py
然后只需要sbatch run.slurm
即可,其中的参数和srun也比较像。
3.3.3 反思(纠错)
最后,给出slurm的中文指南,更加详细的部分可以在手册中查阅。
4. 参考文献
科研利器系列(一)、(二)、(三)、(四)、(五)。
基于HPC场景的集群管理系统(slurm系统初相识)相关推荐
- linux集群管理平台,基于Linux平台的高可用集群管理系统的研究与实现
摘要: 集群管理系统的高可用性是指其能够连续地对外提供服务,本文针对集群系统的高可用性,以开源的集群搭建和管理软件KUSU为基础,以集群管理节点的双机热备份技术理论为支撑,以实现集群系统的帮障检测与业 ...
- 备战双 11!蚂蚁金服万级规模 K8s 集群管理系统如何设计?
戳蓝字"CSDN云计算"关注我们哦! 作者 | 沧漠 责编 | 阿秃 导读:Kubernetes 的出现使得广大开发同学也能运维复杂的分布式系统,它大幅降低了容器化应用部署的门 ...
- 备战双 11!96秒,100亿,支付宝万级规模 K8s 集群管理系统如何设计?
2019年双11来了.1分36秒100亿,5分25秒超过300亿,12分49秒超500亿--全球最大流量洪峰54.4万笔,阿里巴巴核心系统全部上云... 背后的技术支撑到底是怎么样的呢? 导读:Kub ...
- 基于Kubernetes构建Docker集群管理详解
from: 基于Kubernetes构建Docker集群管理详解 Kubernetes是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动 ...
- Golang 在阿里集团调度集群管理系统 Sigma 中的实践
阿里巴巴 9 年双 11 经历下来,交易额增长了 280 倍.交易峰值增长 800 多倍.系统数呈现爆发式增长.系统在支撑双 11 过程中的复杂度和支撑难度以指数级形式上升.双 11 峰值的本质是用有 ...
- 浅谈分布式集群管理系统
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是分布式专题的第11篇文章,我们一起来聊聊分布式集群资源管理. 在开始文章之前,我们先来问一个问题,为什么是国际上是亚马逊,国内是阿里这 ...
- Kubernetes容器集群管理系统调研与对比
Kubernetes简介 1.1 什么是Kubernetes 首先,Kubernetes是一个全新的基于容器技术的分布式架构领先方案.Kubernetes是Google开源的容器集群管理系统,其提供应 ...
- 深度译文|Google的大规模集群管理系统Borg
编者按:本文是对Google在分布式底层架构的经典文章的翻译,原文可以查看这里,由于原文较长,建议先收藏本文,再下载英文原文,对照译文仔细阅读,可事半功倍. 摘要:Google的Borg系统是一个运行 ...
- Google的大规模集群管理系统Borg
编者按:本文是对Google在分布式底层架构的经典文章的翻译,原文可以查看这里,由于原文较长,建议先收藏本文,再下载英文原文,对照译文仔细阅读,可事半功倍. 摘要:Google的Borg系统是一个运行 ...
- Docker学习总结(19)——Google开源的容器集群管理系统Kubernetes介绍
Kubernetes是Google开源的容器集群管理系统.它构建Ddocker技术之上,为容器化的应用提供资源调度.部署运行.服务发现.扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-Pa ...
最新文章
- 大比拼:用24种可视化工具完成同一项任务的心得体会
- 在ListCtrl控件中插入图标
- C#总结项目《影院售票系统》编写总结二
- eclipse_中的注释_快捷键
- 【ABAP系列】SAP 面试 ABAPer的一些感想
- camelcase_在Python中将字符串转换为camelCase
- 百度 图片文字识别 Python版本
- 怎么做应力应变曲线_做了这么多年材料,这些力学性能测试你做对了吗?
- easydarwin 安装_在Linux平台上搭建EasyDarwin,编译代码并简单部署
- L298N电机驱动模块详解
- Python爬虫实例(六)多进程下载金庸网小说
- 【M-PARTNER】魔窗携手心意点点,共创App增长新生态!
- 项目(百万并发网络通信架构)10.3---send()函数的极限测试
- pyhon3爬取百度搜索结果
- HILDON手册(转载自CSDN)
- 用于Excel 2017的CData ODBC驱动程序 Linux DSN配置
- 编程路上的重要概念记录
- 2021-06-03 【论文笔记】Cross-domain Correspondence Learning for Exemplar-based Image Translation
- 【翻译】Adventuring to Spur Creativity at Work【通过探险激发工作中的创造力】
- 看完嵌入式培训视频的一些感受