作业提交

当前位置: 首页 > 使用指南 > 上机流程 > 作业提交 > 正文

集群二:LSF 基本使用

LSF(Load Sharing Facility)是IBM旗下的一款分布式集群管理系统软件,负责计算资源的管理和批处理作业的调度。它给用户提供统一的集群资源访问接口,让用户透明地访问整个集群资源。同时提供了丰富的功能和可定制的策略。LSF 具有良好的可伸缩性和高可用性,支持几乎所有的主流操作系统。它通常是高性能计算环境中不可或缺的基础软件。

LSF的功能和命令非常多,这里主要介绍普通用户常用命令,更详细的命令文档参见 IBM Spectrum LSF command reference。


提交作业

LSF命令行提交作业

与PBS不同,大部分情况下,可以不需要写作业脚本,直接一行命令就可以提交作业

 bsub -J blast -n 10 -R span[hosts=1] -o %J.out -e %J.err -q normal "blastn -query ./ZS97_cds.fa -out ZS97 _cds -db ./MH63_cds -outfmt 6 -evalue 1e-5 -num_threads \$LSB_DJOB_NUMPROC"

LSF脚本1-串行作业(单节点)

LSF中用户运行作业的主要方式为,编写LSF作业脚本,使用bsub命令提交作业脚本。如下所示为使用LSF脚本blastn.lsf

   1     #BSUB -J blast

   2     #BSUB -n 10

   3     #BSUB -R span[hosts=1]

   4     #BSUB -o %J.out

   5     #BSUB -e %J.err

   6     #BSUB -q normal

   7     # 注意-num_threads是blastn的线程设置参数,不同软件参数不同

   8     # 如果软件没有明确有设置线程数的参数,则不设置,默认使用单线程,作业也只需申请一个CPU核心

   9     blastn -query ./ZS97_cds.fa -out ZS97_cds -db ./MH63_cds -outfmt 6 -evalue 1e-5 -num_threads $LSB_DJOB_NUMPROC

提交作业blastn.lsf

bsub < blastn.lsf

脚本中每行内容解释

-J 指定作业名称

-n 作业使用核心数,LSF中一般称之为slot

-R span[hosts=1] 指定作业只能在单个节点运行,不能跨节点(跨节点作业需要MPI支持,生物中比较少)。-R 可以使得作业在需要满足某种条件的节点上运行,常用的有 -R "rusage[mem=20GB]",表示作业预计消耗的内存为20G,节点需要为作业预留20G内存,消耗内存较大的作业需要合理设置该选项,以避免多个作业挤在一个节点而导致节点因内存耗尽而挂掉,内存也不可写得太大,否则会导致大量节点因为要预留很多内存,而不能接收新的作业,造成资源浪费;-R "select[maxmem>224800]",表示选择节点物理内存大于224800MB的节点来运行当前作业,需要使用大内存节点时,可以使用此选项。多个-R 选项可以组合,如-R "span[hosts=1] rusage[mem=20GB] select[maxmem>224800]"

-o 作业标准输出,%J为作业ID,即此处的作业输出文件为 jobid.out

-e 作业错误输出,%J为作业ID,即此处的作业输出文件为 jobid.err

-q 作业提交的作业队列

另外还有一些常用选项

-M 内存控制参数,作业占用的内存超过其指定值时,作业会被系统杀掉。如 -M 20GB -R "rusage[mem=20GB]" 申请20GB的内存,且其内存使用量不能超过20G

-m 指定作业运行节点,如 -m c01n01

-W hh:mm 设置作业运行时间

-w 作业依赖,方便写流程,如-w "done(JobA)",作业名为JobA的作业完成之后,该作业才开始运行

-K 提交作业并等待作业结束,在写流程时会用得上,可以见后面的例子

-P 指定project name,如果我们需要统计某个项目消耗的计算资源,如CPU时等,可以将相关的作业都指定为同一个project name,然后根据project name统计资源消耗

-r rerun选项,即作业失败后自动重新运行,提交大量作业时此选项比较有用


LSF脚本2-并行作业(多节点)

   1      #BSUB -J MPIJob ### set the job Name

   2      #BSUB -q normal ### specify queue

   3      #BSUB -n 400 ### ask for number of cores (default: 1)

   4      #BSUB -R "span[ptile=20]" ### ask for 20 cores per node

   5      #BSUB -W 10:00 ### set walltime limit: hh:mm

   6      #BSUB -o stdout_%J.out ### Specify the output and error file. %J is the job-id

   7      #BSUB -e stderr_%J.err ### -o and -e mean append, -oo and -eo mean overwrite

   8      # here follow the commands you want to execute

   9      # load the necessary modules

  10     # NOTE: this is just an example, check with the available modules

  11     module load intel/2018.4

  12     module load mpi/intel/2018.4

  13     ### This uses the LSB_DJOB_NUMPROC to assign all the cores reserved

  14     ### This is a very basic syntax. For more complex examples, see the documentation

  15     mpirun -np $LSB_DJOB_NUMPROC ./MPI_program

此脚本申请400核,每个节点20个核。

多节点并行作业需要程序本身支持,使用mpirun等MPI命令运行,绝大部分生物软件不支持多节点并行。强行使用,会出现作业申请了并占用了多个节点,但程序实际只使用了一个节点,其它节点无程序运行,造成资源的极大浪费 。如不确定程序是否支持多节点并行,请勿使用,避免资源浪费。

使用系统范围的intelmpi / openmpi时,可以省略-np $ LSB_DJOB_NUMPROC命令,因为程序会自动获取有关核心总数的信息。如果使用不同的MPI库,可能需要明确指定MPI的数量 以这种方式在命令行上进行处理。


LSF批量提交作业

批量提交简单作业

需要处理的数据样本较多时,手工提交非常繁琐,且容易出错,我们可以编写简单的shell脚本来实现大批量自动提交多个作业(可同时提交上万个作业)。

以跑多样本的STAR为例,将下面的脚本保存为run_STAR.sh,运行该脚本,即可同时提交一批作业,而不用一个个手动提交。

   1      for sample in /public/home/username/work/lsf_bwait/raw_data/*trim_1.fq.gz;do

   2      index=$(basename $sample |sed 's/_trim_1.fq.gz//')

   3      prefix=$(dirname $sample)

   4      star_index=/public/home/username/work/lsf_bwait/star/

   5      gtf=/public/home/username/work/lsf_bwait/MH63.gtf

   6      bsub -J ${index} -n 8 -o %J.${index}.out -e %J.${index}.err -R span[hosts=1] \

   7      "STAR --runThreadN 8 --genomeDir ${star_index} --readFilesIn ${prefix}/${index}_trim_1.fq.gz ${prefix}/${index}_trim_2.fq.gz --outFileNamePrefix ${index}. --sjdbGTFfile $gtf"

   8      sleep 10

   9      done

批量提交分析流程

生信中经常会遇到需要跑大量作业以及复杂流程的情况,特别是当流程中使用的软件为多线程和单线程混杂时,如果把所有流程步骤写到同一个shell脚本,并按多线程需要的线程数来申请CPU 核心数,无疑会造成比较大的浪费。

在此建议将流程中的主要运行步骤直接用bsub提交,按需要申请核心数、内存等,需要用上文中提到的bsub的 -K 参数。这里写了一个跑RNA-Seq流程的example,主要是2个脚本,RNA.sh 为具体处理每个样本的流程脚本,在batch_run.sh 对每个样本都提交运行RNA.sh脚本。

使用时,提交batch_run.lsf脚本即可, bsub < batch_run.lsf 。

RNA.sh

   1      #!/bin/sh

   2      sample=$1

   3      index=$(basename $sample |sed 's/_trim_1.fq.gz//')

   4      prefix=$(dirname $sample)

   5      star_index=/public/home/username/work/lsf_bwait/star/

   6      gtf=/public/home/username/work/lsf_bwait/MH63.gtf

   7      bsub -K -J STAR1 -n 8 -o %J.STAR1.out -e %J.STAR1.err -R span[hosts=1] "module purge;module load STAR/2.6.0a-foss-2016b;STAR --runThreadN 8 --genomeDir ${star_index} \

   8      --readFilesIn ${prefix}/${index}_trim_1.fq.gz ${prefix}/${index}_trim_2.fq.gz \

   9      --outSAMtype SAM --readFilesCommand zcat --alignIntronMax 50000 --outFileNamePrefix ${index}. --sjdbGTFfile $gtf --outReadsUnmapped None"

  10     bsub -K -J STAR2 -n 1 -o %J.STAR2.out -e %J.STAR2.err -R span[hosts=1] "grep -E '@|NH:i:1' ${index}.Aligned.out.sam >${index}.Aligned.out.uniq.sam"

  11     bsub -K -J STAR3 -n 2 -o %J.STAR3.out -e %J.STAR3.err -R span[hosts=1] "module purge;module load SAMtools/1.3;samtools sort -@2 ${index}.Aligned.out.uniq.sam > ${index}.Aligned.out.bam"

  12     rm ${index}.Aligned.out.sam

  13     rm ${index}.Aligned.out.uniq.sam

  14     rm ${index}.Aligned.out.uniq.bam

  15     bsub -K -J STAR4 -n 1 -o %J.STAR4.out -e %J.STAR4.err -R span[hosts=1] "module purge;module load HTSeq/0.8.0;htseq-count -f bam -s no ${index}.Aligned.out.bam -t gene $gtf >${index}.Genecounts 2>${index}.htseq.log"

batch_run.lsf

   1      #BSUB -J STAR

   2      #BSUB -n 1

   3      #BSUB -R span[hosts=1]

   4      #BSUB -o %J.out

   5      #BSUB -e %J.err

   6      for sample in /public/home/username/work/lsf_bwait/raw_data/*trim_1.fq.gz;do

   7      index=$(basename $sample |sed 's/_trim_1.fq.gz//')

   8      sh RNA.sh ${sample} &

   9      sleep 10

   10    done

   11    wait

不合理批量提交方式

如下这个脚本所示,在一个lsf脚本内循环跑多个样本,即一个样本跑完之后才能跑下一个,每个样本的运行时间较长,这样不能充分利用集群节点多、核多的优势,比较浪费时间,因此如果不是有特殊需求,不建议使用这种方式跑多个样本的作业。

   1      #BSUB -J STAR

   2      #BSUB -n 8

   3      #BSUB -R span[hosts=1]

   4      #BSUB -o %J.out

   5      #BSUB -e %J.err

   6      for sample in /public/home/username/work/lsf_bwait/raw_data/*trim_1.fq.gz;do

   7      index=$(basename $sample |sed 's/_trim_1.fq.gz//')

   8      prefix=$(dirname $sample)

   9      star_index=/public/home/username/work/lsf_bwait/star/

   10    gtf=/public/home/username/work/lsf_bwait/MH63.gtf

   11     STAR --runThreadN 8 --genomeDir ${star_index} --readFilesIn ${prefix}/${index}_trim_1.fq.gz ${prefix}/${index}_trim_2.fq.gz --outFileNamePrefix ${index}. --sjdbGTFfile $gtf"

  12     sleep 10

  13     done

大批量小作业提交

由于作业排队调度和退出需要一定时间,如果每个作业内程序运行时间很短(小于10min)、且作业数量较大(大于1000),建议将多个作业合并在一个作业内运行。

如下所示,需要提交1000个不同参数的作业,可以每个作业内跑100个作业,提交10这样的作业:

   1      #BSUB -J process1-100

   2      #BSUB -n 1

   3      #BSUB -R span[hosts=1]

   4      #BSUB -o %J.out

   5      #BSUB -e %J.err

   6      for args in {args1,args2..args100};do

   7      python process.py ${args}

   8      done

合理设置作业内存

对于部分程序,因其使用的核数较少、单个作业内存消耗较大,直接批量提交时,容易多个作业被系统分配在一个节点,导致节点内存耗尽、作业被挂起的情况。

跑GWAS流程时所用的一些软件比较频繁出现这种情况,如fastlmmc tassel。因此需要先跑一个作业,结束后查看内存使用(maxmem),如15G,然后批量提交使用lsf参数 -R rusage[mem=15G]来申请内存。

同时不建议盲目申请远远超出实际使用的内存量,如-R rusage[mem=100G],这会导致一个节点只会运行2-3个作业,其它作业也无法使用该节点,造成计算资源大量浪费。

单个作业使用的核心数低于4时,需要及时关注作业运行情况,如果出现大量作业被挂起的情况,使用lsload查看节点内存剩余情况,bjobs -l jobid查看作业内存使用量,使用bmod -R "rusage[mem=15GB] select[maxmem>224800]" jobid调整作业内存消耗,然后brequeue jobid重新运行该作业。

多次出现作业被大面积挂起的情况且没有及时处理,将被降低可使用的核数。


LSF交互作业

类似于PBS中的qsub -I,为了防止滥用(开了之后长期不关等)交互模式,目前只允许在interactive队列使用交互模式,且时间限制为48h,超时会被杀掉。

bsub -q interactive -Is bash

也可以

bsub -q interactive -Is sh

此时不会加载~/.bashrc

如果需要进行图形转发,如画图等,可以加-XF 参数

bsub -q interactive -XF -Is bash


查询作业

使用bjobs命令查看作业运行状态、所在队列、从哪个节点提交、运行节点及核心数、作业名称、提交时间等。

   1      $ bjobs

   2      JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME

   3      10498205 username RUN smp login01 10*s001 fq Sep 6 17:54

   4      10498206 username RUN smp login01 10*s001 fq Sep 6 17:54

   5      10498207 username RUN smp login01 10*s001 fq Sep 6 17:54

   6      10498209 username RUN smp login01 10*s001 fq Sep 6 17:54

   7      10498211 username RUN smp login01 10*s001 fq Sep 6 17:54

   8      10498217 username RUN smp login01 10*s001 fq Sep 6 17:54

   9      10498219 username RUN smp login01 10*s001 fq Sep 6 17:54

  10     10498226 username RUN smp login01 10*s001 fq Sep 6 17:54

  11     10498227 username RUN smp login01 10*s001 fq Sep 6 17:54

  12     10498708 username PEND smp login01 fq Sep 6 17:54

  13     10498709 username PEND smp login01 fq Sep 6 17:54

  14     10498710 username PEND smp login01 fq Sep 6 17:54

  15     10498711 username PEND normal login01 fq Sep 6 17:54

  16     10498712 username PEND normal login01 fq Sep 6 17:54

  17     10559750 username USUSP high login02 2*c03n07 GWA Sep 7 14:30

作业状态主要有:

PEND 正在排队

RUN 正在运行

DONE 正常退出

EXIT 异常退出

SSUSP 被系统挂起

USUSP 被用户自己挂起

bjobs还有一些常用的选项,

-r 查看正在运行的作业

-pe 查看排队作业

-l 查看作业详细信息

-sum 查看所有未完成作业的汇总信息

-p 查看作业排队的原因,如下面这个作业的排队原因为用户所有正在运行作业所使用的总核心数达到了该用户所能使用核心数上限

   1      $ bjobs -p 40482594

   2      JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME

   3      10482594 username PEND normal c01n05 bwa Sep 6 06:33

   4      The user has reached his/her job slot limit (Limit Name: N/A, Limit Value: 1200);

其它相关提示如下:

   User has reached the pre-user job slot limit of the queue

: 用户作业达到了排队中作业所在队列的个人作业核数上限。 : 此队列中用户正在运行的作业有计算结束后,才会再分配后续的排队作业。

The slot limit reached;4 hosts : 排队中作业数达到了所在队列可使用节点数的上限。 : 此队列中所有用户正在运行的作业有计算结束,才会再分配此队列中排在最前边的作业。

The user has reached his job slot limit : 用于已运行的作业数达到了系统规定的上限。 : 需已运行的作业有新的计算结束,排队中的作业才会进入调度系统。

The queue has reached its job slot limit : 排队中已经运行的所有作业达到了系统上队列总作业核数的上限。 : 需该队列中已经运行的作业有新的计算结束,才会调度该队列中排在第一位的作业。

Pending job threshold reached. Retrying in 60 seconds : 提交的作业超过系统对用户提交作业数的上限。 : 需该队列中已经运行的作业有新的计算结束,新提交的作业才会被LSF接收。

-o 定制输出格式,如为了方便实时查看作业使用的最大内存,添加max_mem选项,宽度为14。

   1      $ bjobs -o "jobid:10 user:6 stat:6 queue:6 exec_host:10 job_name:10 max_mem:14 submit_time:12"

   2      JOBID USER STAT QUEUE EXEC_HOST JOB_NAME MAX_MEM SUBMIT_TIME

   3      46477783 username RUN high c01n09 AS_TWAS 30.3 Gbytes Dec 12 13:32

   4      46477903 username RUN high c01n09 AS_TWAS 22.6 Gbytes Dec 12 13:32

   5      46477766 username RUN high c01n09 AS_TWAS 20.3 Gbytes Dec 12 13:32

   6      46477725 username RUN high c01n05 AS_TWAS 26.5 Gbytes Dec 12 13:32

   7      46477726 username RUN high c01n05 AS_TWAS 22.7 Gbytes Dec 12 13:32

   8      46477727 username RUN high c01n05 AS_TWAS 19.2 Gbytes Dec 12 13:32

   9      46477804 username RUN high c01n05 AS_TWAS 26.6 Gbytes Dec 12 13:32

  10     46477805 username RUN high c01n05 AS_TWAS 20.3 Gbytes Dec 12 13:32

  11     46477836 username RUN high c01n04 AS_TWAS 25.2 Gbytes Dec 12 13:32

使用alias简写该命令

  1      $ vim ~/.bashrc

   2      alias bbjobs='bjobs -o "jobid:10 user:6 stat:6 queue:6 exec_host:10 job_name:10 max_mem:14 submit_time:12"'

   3      $ source ~/.bashrc

   4      $ bbjobs

   5      JOBID USER STAT QUEUE EXEC_HOST JOB_NAME MAX_MEM SUBMIT_TIME

   7      46477783 username RUN high c01n09 AS_TWAS 30.3 Gbytes Dec 12 13:32

   8      46477903 username RUN high c01n09 AS_TWAS 22.6 Gbytes Dec 12 13:32

   9      46477766 username RUN high c01n09 AS_TWAS 20.3 Gbytes Dec 12 13:32

  10     46477725 username RUN high c01n05 AS_TWAS 26.5 Gbytes Dec 12 13:32

  11     46477726 username RUN high c01n05 AS_TWAS 22.7 Gbytes Dec 12 13:32

  12     46477727 username RUN high c01n05 AS_TWAS 19.2 Gbytes Dec 12 13:32

  13     46477804 username RUN high c01n05 AS_TWAS 26.6 Gbytes Dec 12 13:32

  14     46477805 username RUN high c01n05 AS_TWAS 20.3 Gbytes Dec 12 13:32

  15     46477836 username RUN high c01n04 AS_TWAS 25.2 Gbytes Dec 12 13:32

此外也可以添加run_time cpu_used 查询作业的runtime(即,作业运行的时间)和cputime(即,作业运行消耗的CPU时)。一般而言,cputime=runtime*核数 ,若cputime远小于runtime,则表示作业资源申请不合理,或作业在空跑,请检查作业是否正常在跑。 如下所示,作业cputime远小于runtime,经检查作业运行出错,但没有退出。

   1      $ bjobs -o "jobid:8 user:8 stat:6 queue:6 exec_host:10 job_name:8 nreq_slot:6 slots:5 max_mem:12 submit_time:12 start_time:12 run_time:16 cpu_used"

   2      JOBID USER STAT QUEUE EXEC_HOST JOB_NAME NREQ_S SLOTS MAX_MEM SUBMIT_TIME START_TIME RUN_TIME CPU_USED

   3      6554018 username RUN normal 8*c03n02 *g_BK200 8 8 520 Mbytes Sep 13 15:38 Sep 13 20:28 48509 second(s) 3285 second(s)

   4      6554039 username RUN normal 8*c03n06 *g_BR461 8 8 473 Mbytes Sep 13 15:38 Sep 13 21:18 45488 second(s) 4043 second(s)

   5      6554029 username RUN normal 8*c03n09 *g_BL300 8 8 517 Mbytes Sep 13 15:38 Sep 13 21:09 46049 second(s) 4067 second(s)

   6      6554015 username RUN normal 8*c01n05 *_BJS500 8 8 516 Mbytes Sep 13 15:38 Sep 13 20:20 48979 second(s) 3222 second(s)

   7      6554021 username RUN normal 8*c02n09 *g_BK350 8 8 482 Mbytes Sep 13 15:38 Sep 13 20:32 48232 second(s) 2963 second(s)

   8      6554022 username RUN normal 8*c02n08 *g_BK400 8 8 699 Mbytes Sep 13 15:38 Sep 13 20:37 47988 second(s) 3952 second(s)

   9      6554028 username RUN normal 8*c03n01 *g_BL250 8 8 539 Mbytes Sep 13 15:38 Sep 13 21:03 46410 second(s) 3755 second(s)

  10     6554024 username RUN normal 8*c04n03 *g_BK500 8 8 515 Mbytes Sep 13 15:38 Sep 13 20:38 47873 second(s) 3867 second(s)

  11     6554044 username RUN normal 8*c01n13 *g_BS400 8 8 507 Mbytes Sep 13 15:38 Sep 13 21:23 45191 second(s) 2018 second(s)

  12     6554043 username RUN normal 8*c01n02 *g_BS300 8 8 593 Mbytes Sep 13 15:38 Sep 13 21:23 45221 second(s) 3394 second(s)

  13     6554046 username RUN normal 8*c02n10 *g_BS500 8 8 534 Mbytes Sep 13 15:38 Sep 13 21:28 44888 second(s) 3262 second(s)


修改排队作业运行参数

bmod可更改正在排队的作业的多个参数,如

bmod -n 2 jobid 更改作业申请的核心数

bmod -q q2680v2 jobid 更改作业运行队列


挂起/恢复作业

用户可自行挂起或者继续运行被挂起的作业。

bstop jobid 挂起作业,如作业被系统挂起(节点剩余可用内存过低系统会自动挂起该节点上的部分作业),则作业状态为SSUSP;如被用户自己或管理员挂起,则作业状态为USUSP

bresume bjoid 继续运行被挂起的作业

因为作业在挂起时,仍然会占用计算资源,因此用户不可自己随意长时间大批量挂起自己的作业以避免资源浪费。


调整排队作业顺序

bbot jobid 将排队的作业移动到队列最后(bottom)

btop jobid 将排队的作业移动到队列最前(top)


查询输出文件

在作业完成之前,输出文件out和error被保存在系统文件中无法查看,可以使用bpeek命令查看输出文件


终止作业

如果用户要在作业提交后终止自己的作业,可以使用bkill命令,用法为bkill jobid。非root用户只能查看、删除自己提交的作业。

bkill 12345 杀死作业id为12345的作业

bkill 0 杀死当前用户的所有作业(正在运行的、排队的、挂起的等)


资源查看

bhosts

查看所有节点核心数使用情况

   1      $ bhosts

   2      HOST_NAME STATUS JL/U MAX NJOBS RUN SSUSP USUSP RSV

   3      c01n01 closed - 36 36 36 0 0 0

   4      c01n02 closed - 36 36 36 0 0 0

   5      c01n03 closed - 36 36 36 0 0 0

   6      c01n04 closed - 36 36 36 0 0 0

   7      c01n05 closed - 36 36 36 0 0 0

   8      c07n09 closed - 36 36 36 0 0 0

   9      c07n10 closed - 36 36 36 0 0 0

  10     c07n11 closed - 36 36 36 0 0 0

  11     gpu01 ok - 36 29 29 0 0 0

  12     gpu02 ok - 20 0 0 0 0 0

  13     login01 closed - 0 0 0 0 0 0

  14     login02 closed - 0 0 0 0 0 0

  15     login03 closed - 0 0 0 0 0 0

  16     mn02 closed - 0 0 0 0 0 0

  17     mn02 closed - 0 0 0 0 0 0

  18     s001 closed - 192 192 192 0 0 0

  19     s002 closed - 192 192 192 0 0 0

  20     s003 ok - 192 189 189 0 0 0

  21     sg01 closed - 20 20 20 0 0 0

  22     sg02 closed - 20 20 20 0 0 0

  23     sg03 closed - 20 20 20 0 0 0

  24     sg04 closed - 20 20 20 0 0 0

  25     sg05 closed - 20 20 20 0 0 0

  26     sg06 ok - 20 0 0 0 0 0

  27     sg07 closed - 20 20 20 0 0 0

  28     sg08 closed - 20 20 20 0 0 0

  29     sg09 ok - 20 0 0 0 0 0

  30     sg10 ok - 20 17 17 0 0 0

HOST_NAME 节点名称

STATUS: ok:表示可以接收新作业,只有这种状态可以接受新作业 closed:表示已被作业占满,不接受新作业 unavail和unreach:系统停机或作业调度系统服务有问题

JL/U 每个用户在该节点最多能使用的核数,- 表示没有限制

MAX 最大可以同时运行的核数

NJOBS 当前所有运行和待运行作业所需的核数

RUN 已经开始运行的作业占据的核数

SSUSP 系统所挂起的作业所使用的核数

USUSP 用户自行挂起的作业所使用的核数

RSV 系统为你预约所保留的核数


lsload

查看所有节点的负载、内存使用等

   1      $ lsload

   2      HOST_NAME status r15s r1m r15m ut pg ls it tmp swp mem

   3      sg17 ok 0.0 0.0 0.1 0% 0.0 0 2e+5 264G 2.4G 113G

   4      sg11 ok 0.0 0.0 0.1 0% 0.0 0 49055 264G 3.7G 113G

   5      gpu02 ok 0.0 0.0 0.1 0% 0.0 0 7337 248G 29.8G 52.9G

   6      login01 ok 0.2 0.7 0.6 6% 0.0 39 0 242G 0M 47.6G

   7      login02 ok 0.7 0.4 0.6 5% 0.0 41 0 241G 27.8G 42.9G

   8      sg27 ok 0.8 0.6 0.6 4% 0.0 0 88098 264G 3G 110G

   9      c01n11 ok 0.8 19.7 19.6 4% 0.0 0 1788 432G 2.1G 348G

  10     c05n07 ok 1.0 1.0 1.0 3% 0.0 0 1463 429G 3G 170G

  11     c07n09 ok 1.0 1.0 1.0 3% 0.0 0 14604 432G 3.9G 158G

  12     c01n10 ok 1.1 18.7 18.7 3% 0.0 0 3713 432G 3G 349G

  13     sg21 ok 1.2 1.2 1.2 7% 0.0 0 5054 258G 3.6G 109G

  14     c03n07 ok 1.3 18.6 18.6 4% 0.0 0 15072 429G 3.1G 340G

  15     sg30 ok 1.3 1.0 1.0 5% 0.0 0 734 265G 2.4G 69.6G

  16     c01n06 ok 1.3 20.0 20.6 5% 0.0 0 13242 432G 3.7G 351G

  17     sg25 ok 1.5 1.0 1.7 5% 0.0 0 2e+5 258G 2.1G 108G

  18     c06n03 ok 1.6 13.3 13.4 9% 0.0 0 14576 432G 3.7G 168G

  19     sg02 ok 1.8 54.3 45.7 9% 0.0 2 18 239G 63.9M 78.5G

  20     c06n01 ok 1.9 7.7 7.6 5% 0.0 0 3718 432G 3.8G 167G

  21     c07n06 ok 2.0 14.3 14.2 12% 0.0 0 14956 431G 3.8G 166G

  22     c05n05 ok 35.6 35.5 33.8 96% 0.0 0 15103 426G 2.9G 119G

  23     c04n05 ok 35.7 35.8 35.4 94% 0.0 0 15972 427G 2.8G 114G

  24     c06n06 ok 36.0 36.0 36.1 100% 0.0 0 14658 432G 3.7G 173G

  25     c05n01 ok 37.4 38.3 37.5 97% 3.7 0 12160 432G 1.4G 141G

  26     c06n12 ok 39.4 36.8 34.2 94% 0.0 0 7495 430G 3.6G 132G

  27     c01n12 ok 45.1 48.2 46.8 82% 0.0 0 8000 432G 1.7G 278G

  28     s002 ok 61.0 61.5 57.6 31% 0.0 1 739 1309G 3.1G 1.5T

  29     s001 ok 70.9 73.7 91.8 19% 0.0 0 740 1286G 42.8M 1.3T

  30     s006 ok 124.6 128.4 132.1 100% 0.0 0 432 1101G 3.5G 1.9T

  31     s004 ok 128.1 125.3 123.3 65% 0.0 0 758 1318G 429M 1.8T

  32     s003 ok 244.5 235.9 240.7 98% 0.0 1 3 1288G 2.8G 1.6T

bqueues

查看队列信息

   1      $ bqueues

   2      QUEUE_NAME PRIO STATUS MAX JL/U JL/P JL/H NJOBS PEND RUN SUSP

   3      interactive 80 Open:Active - 3 - - 81 1 74 6

   4      normal 30 Open:Active - - - - 19012 15984 3028 0

   5      parallel 30 Open:Active - - - - 725 500 225 0

   6      gpu 30 Open:Active - 10 - - 37 8 29 0

   7      high 30 Open:Active - - - - 349 182 166 1

   8      smp 30 Open:Active - 300 - - 6106 5166 940 0

   9      q2680v2 30 Open:Active - 100 - - 5330 4784 546 0

-u 查看所用所能使用的队列

-m 查看节点所在的队列

-l 查看队列的详细信息

   1      $ bqueues -l smp

   2      QUEUE: smp

   3      -- huge memory jobs

   4      PARAMETERS/STATISTICS

   5      PRIO NICE STATUS MAX JL/U JL/P JL/H NJOBS PEND RUN SSUSP USUSP RSV PJOBS

   6      30 0 Open:Active - 300 - - 6106 5156 950 0 0 0 737

   7      Interval for a host to accept two jobs is 0 seconds

   8      HOSTLIMIT_PER_JOB

   9      1

  10     SCHEDULING PARAMETERS

  11     r15s r1m r15m ut pg io ls it tmp swp mem

  12     loadSched - - - - - - - - - - 29.2G

  13     loadStop - - - - - - - - - - 9.7G

  14     SCHEDULING POLICIES: NO_INTERACTIVE

  15     USERS: all

  16     HOSTS: s001 s002 s003 s004 s005 s006

  17     RES_REQ: rusage[mem=10000] span[hosts=1]

  18     RESRSV_LIMIT: [mem=2000000]

  19     RERUNNABLE : yes


常见问题

程序运行异常但没有作业没有退出,最常见于 hisat2 比对,使用 bpeek 查看作业日志,报错如下

   1      (ERR): "/public/home/username/database/reference/genome" does not exist

   2      Exiting now ...

上一条:集群一:多瑙作业调度系统

下一条:

华中农大公众号