高性能集群(High Performance Computing,简称HPC)是一组松散或紧密连接在一起工作的计算机。这些计算机协同工作,可以利用多个计算机进行并行计算从而获得很高的计算速度,而且任何一个机器坏了整个系统还是能正常运行。节点是集群中的控制器,是管理数据和执行维护任务的计算单元。计算机集群将每个节点设置为执行相同的任务,是由软件控制和调度的,常见的资源管理和调度系统为SGE、PBS。其中SGE系统常用命令如下:
- 提交任务qsub
使用示例:
qsub -cwd -l vf=2g,p=1 -q queuename.q -P projectname test.sh # 提交test.sh脚本
qsub -cwd -l vf=2g -l p=1 -q queuename.g@compute-1 -P projectname test.sh #任务投递到指定计算节点
用qsub -help可以看完整的参数,参数说明如下:
参数 |
说明 |
-q xxx |
指定要投递到的队列,如果不指定的话,SGE会在用户可使用的队列中选择一个满足要求的队列 |
-V |
将当前的环境变量传递到执行命令的节点中 |
-cwd |
在当前目录下执行任务,sge的日志会输出到当前路径。不增加该指令,所有投递的任务都会在/home/目录下执行。 |
-I resource=value |
请求资源数,例如 -vf=25G-h=node1 就是任务的预估内存要25G(内存估计的值应稍微大于真实的内存,内存预估偏小可能会导致节点跑挂),申请在node1上运行。 |
-S /bin/bash |
表示在bash环境下执行命令。默认tcsh。 |
-pe openmpi 4 |
表示使用openmpi进行并行运算,且申请的线程是4 |
-N 任务名 |
手动执行任务的名字。 |
-j y|n |
是否将标准输入和标准输入合并成一个文件 |
-sync y|n |
是否等待任务结束,返回退出码 |
-o path |
指定标准输出的文件夹 |
-p |
定义工作的相对优先级,-1023 到1024,默认值0 |
-P projectname |
定义项目名称,前提是存在该项目 |
- 查看任务qstat
使用示例:
qstat -j jobid #查看某个任务详细信息
qstat -u username #查询某用户的任务
qstat -u username -s r #查询某用户在运行的任务
qstat -u \* #查询所有用户任务
qstat -u \* -s r #查询哪些用户在运行任务
qstat -q all.q -u \* #查看all.q队列下所有任务
qstat -q all.q@node1 -u \* #查看all.q队列节点1下所有任务
qstat -explain a|c|A|E -j jobID #查看某个任务并给出解释
qatat -f #查看用户在每个节点的任务情况
qstat -F vf,p -q bc.q #查看实时资源申请剩余情况
任务状态:
- qw #表示等待状态
- R #任务正在运行
- hqw #任务挂起等待中,待依赖的任务完成后执行
- Eqw #投递任务出错
- s #暂时挂起
- dr #节点挂了之后,删除任务就会出现这个状态,只有节点重启之后,任务才会消失
- 删除任务 qdel
qdel jobid #可同时删除多个,如qdel jobid1 jodid2
qdel -u username #删除莫用户所有任务
qstat -u username | grep “username” l cut -d “.” -f1 | xargs qdel #删除所有任务
qstat -u username | grep “R” l cut -d “.” -f1 | xargs qdel #删除所有正在运行的任务
qstat -u username | grep “Q” l cut -d “.” -f1 | xargs qdel #删除所有正在等待的任务
- 挂起/恢复任务
- qhold挂起qw的任务,状态变为 hqw,待依赖的任务完成后执行,示例如下:
qhold jobid # 挂起某个qw任务
qhold -u \* # 挂起所有qw任务
qrls jobid #恢复任务
- qmod 挂起running中的任务,示例如下:
qmod -s jobID #挂起某个running任务
qmod -us jobID #恢复运行某个挂起的任务
qmod -cj jobid #当遇到任务状态Eqw时,可以清除错误状态,qmod修改队列和任务属性
5、更改任务属性 qalter
qalter命令修改已提交但正处于暂挂状态的作业的属性,参数和qsub一样。
6、集群资源查询
- qhost显示SGE执行主机(即各个计算节点)的状态信息。其中ARCH表示CPU架构,NCPU表示CPU核数,LOAD表示负载情况,使用示例如下:
qhost -j #按照节点显示任务
qhost -F #展示每个节点的资源
- qconf 提供集群配置和队列配置的用户界面。
qconf -se1 #显示“执行主机”列表
qconf -sh #显示“管理土机”列表
qconf -ss #显示“提交任务主机”列表
qconf -sql #显示“集群队列”列表
qconf -spl #显示“集群并行环境”列表
qconf -shgrpl #查看队列
qconf -shgrp @bc_hosts #查看特定队列下的具体计算节点
qconf -srqs max_user_running_jobs #查看任务投递数
- qselect
qselect -u #查看指定用户的可用队列节点
qselect -q all.q #查看指定队列有哪些可用节点