# donau-slurm-wrappers **Repository Path**: openeuler/donau-slurm-wrappers ## Basic Information - **Project Name**: donau-slurm-wrappers - **Description**: donau-slurm-wrappers provide some scripts for Slurm Users to submit and manage jobs in Donau cluster environment - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 6 - **Created**: 2022-10-11 - **Last Updated**: 2025-08-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: sig-HPC ## README # donau-slurm-wrappers #### 介绍 donau-slurm-wrappers提供了一些slurm命名风格的脚本,方便习惯使用slurm的用户快速上手donau的业务。 目前支持的命令有: 作业提交命令: srun, sbatch 作业查询命令: squeue, sacct 作业控制命令: scancel, scontrol 节点查询命令: sinfo #### 软件架构 python2/python3 #### 依赖 1. 集群已安装Donau Scheduler, 安装版本 >= HPC22.0.0 B015, 安装节点可正常提交Donau-Cli命令。 2. 脚本依赖python模块dateutil.relativedelta, 执行pip install python-dateutil安装。 #### 安装教程 1. 从网址 https://gitee.com/openeuler/donau-slurm-wrappers 下载压缩包, 解压至用户的家目录 2. 更改脚本的属主为DONAU的CLI用户, 修改权限为555, 例如当前用户为ccs_cli,则执行 $chown -R ccs_cli:ccs_cli donau-slurm-wrappers-master && chmod -R 555 donau-slurm-wrappers-master 3. 配置CLI用户的环境变量PATH, 将"donau-slurm-wrappers-master/cmd/"的绝对路径添加进PATH。(建议直接修改 用户的配置文件 ~/.bashrc 并source) #### 使用说明 1.srun命令 srun用于提交阻塞式作业。如果直接使用srun提交作业,会默认转成dsub –Kco提交阻塞式作业,如果srun 指定--pty,则转换成dsub -I提交交互式作业。对于交互式作业,需要提交到指定队列执行。用户需要参考HPC产品文档, 配置支持交互式作业的队列。用户通过sinfo查看当前partition,然后使用srun --pty –p指定partition提交交互式作业。 $srun --usage Usage: srun [-n ntasks] [-o out][-b "HH:MM MM/DD/YY"] [--open-mode={append|truncate}] [-e err] [-c ncpus] [-p partition] [--priority=value][--pty] [-t minutes] [-D path][-J jobname][--gid=group] [--dependency=type:jobid][--comment=name] [--nodelist=hosts][--exclude=hosts][--export=env_vars] [--prolog=fname] [--epilog=fname][--exclusive] [--gpus-per-task=n] executable [args...] 支持输入环境变量(优先级低于命令选项): SRUN_CPUS_PER_TASK 同 -c SLURM_DEPENDENCY 同 --dependency SLURM_WORKING_DIR 同 -D SLURM_EXPORT_ENV 同 --export SLURM_STDERRMODE 同 -e SLURM_EPILOG 同 --epilog SLURM_JOB_NAME 同 -J SLURM_NTASKS 同 -n SLURM_STDOUTMODE 同 -i SLURM_OPEN_MODE 同 --open-mode SLURM_PARTITION 同 -p SLURM_PROLOG 同 --prolog SLURM_TIMELIMIT 同 -t SLURM_GPUS_PER_TASK 同 --gpus-per-task 举例: srun -b "17:18 11/09/22" -c 2 -n 1 -J "job_name" -t 200 user_command 转换为donau命令 dsub –Kco -N 1 -S "2022/11/09 17:18:00" --name "job_name" -T "3h20m" -R "cpu=2" user_command 2.sbatch命令 sbatch用于提交脚本作业。最终会把命令转换为dsub -s , 建议把执行的脚本放到共享目录。如果是mpi作业, 需要用--mpi指定mpi类型(目前支持的类型为openmpi, mpich, hmpi, intelmpi), 然后在脚本中的用户命令中增加环境变量 $CCS_MPI_OPTIONS。 $sbatch --usage Usage: sbatch [-N nnodes] [-n ntasks] [-b "HH:MM MM/DD/YY"] [-c ncpus] [-p partition] [-e err] [--time=minutes] [-D path] [--mpi mpi_type] [--output file] [--open-mode={append|truncate}] [--error file] [--priority=value] [--chdir=directory] [-J jobname] [--gid=group] [--dependency=type:jobid] [--comment=name] [--ntasks-per-node=n] [--nodelist=hosts][--exclude=hosts] [--export[=names]] [--exclusive] [--gpus-per-task=n] executable [args...] 支持输入环境变量(优先级低于命令选项): SBATCH_EXPORT 同 --export SBATCH_ERROR 同 -e SBATCH_JOB_NAME 同 -J SBATCH_OUTPUT 同 -o SBATCH_OPEN_MODE 同 --open-mode SBATCH_PARTITION 同 -p SBATCH_TIMELIMIT 同 -t SBATCH_GPUS_PER_TASK 同 --gpus-per-task 普通作业举例: #脚本文件 $cat hello.sh #!/bin/sh #SBATCH --comment test_job #SBATCH -J test_job #SBATCH -n 2 #SBATCH -o /tmp/log.txt #SBATCH -p root.default #SBATCH --open-mode truncate sleep 2 执行 $sbatch -b "17:18 11/09/22" -c 2 -n 4 -J "job_name" -t 200 -p q3 hello.sh MPI作业举例: #脚本文件 $cat mpi_job.sh #! /bin/sh #SBATCH -o /tmp/%j.txt #重定向输出 #SBATCH --comment=script_job #指定comments #SBATCH -n4 #指定task个数 mpirun $CCS_MPI_OPTIONS user_application 执行 $sbatch --mpi openmpi mpi_job.sh 3.squeue命令 squeue支持查询未完成(RUNNING, PENDING, SUSPENDED)的作业信息,对应的DONAU作业的状态为RUNNING, PENDING/WAITING, STOPPED。显示结果中"NODELIST(REASON)"的未调度原因,直接使用DONAU中task的"MAIN_STATE_REASON_CODE", 具体原因参考《HPC产品文档》。 $squeue --usage Usage: squeue [--job jobid] [-n name] [-p partitions] [-t states] [-u user_name] [--usage] [-l] 支持输入环境变量(优先级低于命令选项): SQUEUE_NAMES 同 -n SQUEUE_STATES 同 -t SQUEUE_USERS 同 -u SQUEUE_PARTITION 同 -p 举例: $squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 520 root.q1 default test_st PD 0:00 - 20615 521 root.q1 default test_st PD 0:00 - 10101 522 root.q1 default test_st S 11:28:42 1 kwephicprd18119 $squeue -l Wed Oct 19 09:30:34 2022 JOBID PARTITION NAME USER STATE TIME TIME_LIMI NODES NODELIST(REASON) 520 root.q1 default test_st PENDING 0:00 UNLIMITED - 20615 521 root.q1 default test_st PENDING 0:00 UNLIMITED - 10101 522 root.q1 default test_st SUSPENDE 11:29:22 UNLIMITED 1 kwephicprd18119 4.scancel命令 scancel支持终止未完成的作业,对应的DONAU命令为djob -T, 执行scancel后的作业状态为CANCELLED。 $scancel --usage Usage: scancel [-n job_name] [-p partitions] [-t PENDING | RUNNING | SUSPENDED] [--usage] [-u user_name] [job_id] 支持输入环境变量(优先级低于命令选项): SCANCEL_NAME 同 -n SCANCEL_STATE 同 -t SCANCEL_USER 同 -u SCANCEL_PARTITION 同 -p 5.sinfo命令 sinfo用于查询当前集群的节点和分区信息(SLURM的PARTITION和DONAU的QUEUE是两种概念,为了用户对指定QUEUE 进行操作,将QUEUE和PARTITION对应)。 $sinfo --usage Usage: sinfo [-lN] [-p partition] [-n nodes] 举例: $sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST root up infinite 1 idle kwephispra23857 root.q1 up infinite 1 idle kwephispra23857 root.q2 up infinite 1 idle kwephispra23857 root.q3 up infinite 1 idle kwephispra23857 root up infinite 1 mix kwephicprd18119 root.q1 up infinite 1 mix kwephicprd18119 root.q2 up infinite 1 mix kwephicprd18119 root.q3 up infinite 1 mix kwephicprd18119 $sinfo -N NODELIST NODES PARTITION STATE kwephispra23857 1 all idle kwephicprd18119 1 all mix 6.scontrol命令 scontrol命令用于停止/恢复作业,对应DONAU的djob -S和djob -R。 $scontrol --usage scontrol [