现有的新服务器上运行程序一定要进行任务投递,将程序交由任务管理系统统一调度
现有的新服务器上运行程序一定要进行任务投递,将程序交由任务管理系统统一调度
现有的新服务器上运行程序一定要进行任务投递,将程序交由任务管理系统统一调度
切不可在登录节点下运行大程序
Sun网格引擎(Sun Grid ,SGE)是一种来自于SUN Microsystem的分布式资源管理和调度系统,它用来在基于UNIX的计算环境中优化软件和硬件资源的使用。
SGE怎样工作:
- 接受用户投放的任务
- 在任务运行以前,将任务放到一个存储区域
- 发送任务到一个执行设备,并监控任务的运行
- 运行结束写回结果并记录运行日志
1.投递任务
Step1:
编写要投递的任务脚本(XXX.sh)
因为SGE默认使用的是tcsh,而XXX.sh使用的是bash,所以应该在投递的时候指明命令解释器,最好在XXX.sh开头加上#!/bin/bash #$-S /bin/bash这两行,如下方任务脚本(do_fastqc.sh)
#!/bin/bash
#$ -S /bin/bash
samples=(191027-11_FDHG192029915-1a 191027-3_FDHG192029912-1a 191027-6_FDHG192029913-1a 191027-7_FDHG192029914-1a)
for sample in ${samples[@]}
do
/XXX/FastQC/fastqc -t 20 -o /XXX/fastqc_wd2 /XXX/cleanData/${sample}/${sample}_1.clean.fq.gz
/XXX/FastQC/fastqc -t 20 -o /XXX/fastqc_wd2 /XXX/cleanData/${sample}/${sample}_2.clean.fq.gz
done
保存脚本文件
Step2:
编写投递任务脚本(XXX_qsub.sh)
使用qsub命令进行投递
- 投递任务到指定队列all.q
qsub -cwd -S /bin/bash -l vf=*G -q all.q .sh
-cwd 表示在当前路径下投递,sge的日志会输出到当前路径。
-l vf=G 任务的预估内存,内存估计的值应稍微大于真实的内存,内存预估偏小可能会导致节点跑挂。
-q 指定要投递到的队列,如果不指定的话,SGE会在用户可使用的队列中选择一个满足要求的队列。
一般使用的投递命令
qsub -cwd -S /bin/bash -l vf=30g -V do_fastqc.sh
do_fastqc.sh为上述的任务脚本
这里举个例子
qsub –cwd -l h=compute-1-1, h_vmem=5G,p=4 -q all.q work.sh
其中:
-cwd 在当前工作目录;
-l 资源申请/限制,用逗号隔开
-q 申请队列
关于资源限制域,可以通过如下指令查看:qconf -sc
下面列举一些常见的关键字:
2.查询任务
qstat -u username 查看某个用户的任务
qstat -u * 查看所有用户的任务
qstat -j jobID 查看某个任务的详细信息
qstat -f 查看用户自己在每个节点的任务情况
qstat -q all.q -u * 查看某个队列下所有任务
qstat -q all.q@node1 -u * 查看某个队列的某一节点下所有任务
一般使用qstat就可以了,查询结果如下:
这里的job-ID就是sge给你的任务分配的ID
state是当前任务的状态,有如下的分类:
qw 表示等待状态
Eqw 投递任务出错
r 表示任务正在运行
dr 节点挂了之后,删除任务就会出现这个状态,只有节点重启之后,任务才会消失
3.删除任务(终止任务)
qdel job-ID 删除job,如删除上述任务:qdel 22
qdel -u usrname 删除用户的所有任务
4.查看任务运行过程中日志
在任务提交后运行后,任务脚本文件夹下回生成XXX.sh.eX和XXX.sh.oX 分别是任务的日志和终端显现的信息,可通过cat XXX.sh.eX 来查看任务运行错误信息(调试)