高性能计算服务
>
命令行专区
>
Slurm基础知识
Slurm(Simple Linux Utility for Resource Management)是一个开源的分布式资源管理和作业调度软件,用于超级计算机和大中小型计算节点集群的管理,具有高度的扩展性和容错性。Slurm调度系统使用简单、功能强大、应用广泛,是HPC调度领域事实上的标准。
Slurm 利用分区(partition)对 CPU、内存、网络等资源进行分类,以便将不同需求的任务运行到不同规格的计算节点上。用户需利用 Slurm 命令将该任务及所需资源请求等提交到特定的分区中,等任务申请的资源得到满足后,任务才开始运行。任务运行受分区、账户、服务质量 (QOS)等限制。
Slurm 官方网站:Slurm Workload Manager - Documentation
更多详细命令请查看在此网页查看 Slurm Workload Manager - Man Pages
user
:用户名,一般为系统登录名。account
:账户,记账账户,多个用户可以在同一个账户下,一般为用户所在的组,如task1。core
:CPU核,单颗CPU可以具有多颗CPU核。job
:作业。job step
:作业步,单个作业(job)可以有多个作业步。partition
:分区(可理解为LSF、PBS等作业调度系统中的队列)。作业需在特定分区中运行,一般不同分区允许的资源不一样,比如单作业核数等。qos
:服务质量(Quality of Service),可以理解为用户可使用的CPU、内存等资源限制。rank
:秩,如MPI进程号。tasks
:任务数,单个作业或作业步可有多个任务,一般一个任务需一个CPU核,可理解为所需的CPU核数。socket
:CPU插槽,可以简单理解为CPU。stdin
:标准输入文件,一般指可以通过屏幕输入或采用<文件名方式传递给程序的文件,对应C程序中的文件描述符0。stdout
:标准输出文件,程序运行正常时输出信息到的文件,一般指输出到屏幕的,并可采用文件名定向到的文件,对应C程序中的文件描述符1。stderr
:标准出错文件,程序运行出错时输出信息到的文件,一般指也输出到屏幕,并可采用2>定向到的文件(注意这里的2),对应C程序中的文件描述符2。<ENTITY>
:实体<SPECS>
:明细、规格命令 | 功能介绍 | 常用命令例子 |
---|---|---|
sinfo | 显示分区和节点的状态 | sinfo |
squeue | 显示作业状态 | squeue |
srun | 用于交互式作业提交 | srun -n 2 -p p1-c1-2 hostname |
sbatch | 用于批处理作业提交 | sbatch -n 2 job.sh |
salloc | 用于分配模式作业提交 | salloc -p p1-c1-2 |
scancel | 用于取消已提交的作业 | scancel JOBID |
scontrol | 用于查看和修改slurm配置和状态,包括查询节点信息或正在运行的作业信息 | scontrol show job JOBID |
sinfo 查看当前账号可使用的分区信息,如下图所示:
其中PARTITION表示分区,NODES表示节点数,NODELIST为节点列表,STATE表示节点运行状态。常见节点状态:
alloc | idle | mix | down | drain |
---|---|---|---|---|
节点被分配给了job | 节点没有被分配给job,可用 | 部分占用 | 节点不可用 | 节点不接受新job |
sinfo的常用命令选项:
sinfo -N | 按每个节点一行的格式查看节点状态 |
---|---|
sinfo -p partition_name | 显示指定分区的信息 |
sinfo -n node_name | 查看指定节点状态 |
sinfo -V | 显示版本信息 |
sinfo --help | 查看帮助说明 |
使用squeue 可以查看当前用户当前任务的运行状态 JOBID
:作业号 ST
:状态 (R:运行中;CF:配置中;PD:排队中) 如果 squeue 没有任务信息,说明任务已退出并且退出的时间已经超出清理时间。
squeue的常用命令选项:
squeue -j job_id | 根据指定的作业号查询作业信息 |
---|---|
squeue -p partition_name | 按分区查询作业 |
squeue -t state | 指定要查看的作业的状态 |
squeue -w nodelist | 指定要显示的作业的节点列表 |
squeue --start | 以启动时间升序显示等待的作业的预期开始时间和分配的资源 |
查看所有作业详细信息 scontrol show jobs
查看指定ID作业详情 scontrol show job [JOB_ID]
查看历史作业实际使用的CPU、内存等资源以及实际运行时长。 用户可以根据历史作业资源信息指定新作业的时间和内存,准确的时间可能让用户的作业得到回填调度,从而得以提前运行。
取消作业号为47433887的作业