摘要

资源管理器:管理超算系统的硬件资源及认证信息等
队列管理器:管理当前已经提交但还未完成的作业
调度器:为作业分配资源
主要作用:根据用户作业提出的需求分配对应的资源给作业,告诉作业给它分配哪些节点等避免作业之间无序干扰,尽量让整个系统的负载一致保证用户占用资源的长期内公平

一、bsub命令

bsub [options] command [argument]

1.1 命令参数

-q 选择队列

-i 指定输入文件

-o 指定输出文件,作业提交后标准输出的信息会保存到这个文件中

-e 指定输出文件,作业提交后标准错误输出的信息保存到这个文件夹中.

-n 指定作业需要的CPU 核

-J 作业的名字

-m 丢job到指定的机器上

-I 交互式模式,此时终端不能输入

-Ip 提交job的时候提供虚拟terminal支持,如vim这种应用是需要terminal支持的.
-R 指定为当前任务的资源需求。
示例:任务需要10G内存

##简单提交任务
bsub -Ip -q <QUENE NAME> -p <PROJECT NAME> -m <Host1/Host2>
##提交任务并指定内存
bsub -Ip -q long -l -R rusage[mem=10240] -m "ServerA ServerB" -J job00

二、常用查看命令

2.1 bhosts

利用bhosts命令可查看当前各节点的空闲情况。

xx@ServerA# bhosts
HOST_NAME STATUS JL/U MAX NJOBS RUN SSUSP USUSP RSV
c01n01    closed   −   4   2     2   0     0     0
c02n03     ok      −   2   2     1   0     0     0

STATUS:

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

bhosts c01n01 查看c01n01节点
bhosts groupCHEM 查看groupCHEM节点组

bhosts < queue name>查看当前队列运行情况:

xx@ServerA# bhosts ww_xx
JOBID   USER  STAT FROM_HOST EXEC_HOST   JOB_NAME   SUBMIT_TIME
234407 angel  RUN  szll01     lab04     *_proj.tgz   Apr 21 10:17
234411 angel  RUN  szll01     lab02     *_run.tcl    Apr 21 11:20
....

bhosts −l 会显示节点详细信息,其中slots表示目前最大可以接受作业槽数(默认一般与CPU核数一致)

2.2 bqueues

利用bqueues可以查看现有队列信息,例如:bqueues

QUEUE_NAME队列名
PRIO优先级,数字越大优先级越高
STATUS状态
Open队列开放,可以接受提交新作业
Active队列已激活,队列中未开始运行的作业可以开始运行
Closed队列已关闭,不接受提交新作业
Inact队列未激活,可接受提交新作业,但队列中的等待运行的作业不会开始运行
JL/U单个用户同时可以使用的CPU核数
MAX队列对应的最大作业槽数(Job Slot,一般与CPU核数一致,以下通称CPU核数),-表示无限
JL/P每个处理器可以接受的CPU核数
JL/H每个节点可以接受的CPU核数
NJOBS排队、运行和被挂起的总作业所占CPU核数
PEND排队中的作业所需CPU核数
RUN运行中的作业所占CPU核数
SUSP被挂起的作业所占CPU核数
RSV为排队作业预留的CPU核数
[ServerA@hmli] bqueues
QUEUE_NAME  PRIO STATUS         MAX JL/U JL/P JL/H NJOBS PEND RUN SUSP
nc          30 Open : Active     −    −    −    −    0    0    0   0
chem        30 Open : Active     −    −    −    −    224  0   224  0
math        30 Open : Active     −    −    −    −    272  80  192  0
other       30 Open : Active     −    −    −    −    0    0    0   0
phy_long    30 Open : Active     −    −    −    −    720  224 496  0
phy_7days   30 Open : Active     −    −    −    −    1056 240 816  0
phy_1day    30 Open : Active     −    −    −    −    0     0   0   0

2.3 bjobs

利用bjobs可以查看作业的运行情况,bjobs | wc 统计总的job数。

[ServerA@hmli] bjobs
OBID USER  STAT QUEUE     FROM_HOST EXEC_HOST JOB_NAME   SUBMIT_TIME
79726 hmli RUN  other     login     2*c01n02  *executab1  Mar 12 1 9:20
                                    1*c01n04
79727 hmli PEND phy_1day  login               *executab2  Mar 12 1 9:20

显示:

  • 作业79726分别在c01n02和c01n04上运行2、1个进程
  • 作业79727处于排队中尚未运行

查看作业的详细信息−l选项:bjobs −l 79727

2.4 bkill

利用 bkill 命令可以终止某个运行中或排队中的作业,如:

[ServerA@hmli] bkill 79726
Job <79722 > is  being terminated

2.5 bhist

bhist -a : 查看已经运行完毕的作业信息

2.6 busers

利用busers可以查看用户信息

[ServerA@hmli] busers hmli
USER/GROUP JL/P MAX NJOBS PEND RUN SSUSP USUSP RSV
hmli       −    22    40   32   8    0    0    0

MAX: 最大可以同时运行的核数
NJOBS: 当前所有运行和待运行作业所需的核数
PEND: 排队等待运行的作业所需要的核数
RUN: 已经开始运行的作业占据的核数

三、提交作业

1.通过busb命令,将该a.out可执行文件,提交2次作业。
-J参数,执行作业的名字。
-o参数指定lsf执行该可执行文件的输出,保存到指定文件。

bsub -J 'ISE' -o /home/hmli/lsf/lsf.result ./hello.out
bsub -J 'ISE' -o /home/hmli/lsf/lsf.result ./hello.out
bsub -I -w "ended(ISE)" echo "hello.out has been finished"

2.最后要等待这些作业完成,通过以下bsub命令。提交一个作业,只是打印信息:

bsub –I –w “ended(ISE)echo “hello.out has been finished”

-I 参数,表示和终端交互,后续提交的任务要等这个任务完成后,才可以提交
-w ”ended…” 指定该作业要等作业名中有aaaaaaaa的作业都完成后,才可以提交。

[ServerA@hmli] bsub -J 'ISE' -o /home/hmli/lsf/lsf.result ./hello.out
Job<691120> is submitted to defult queue <normal>.
[ServerA@hmli] bsub -J 'ISE' -o /home/hmli/lsf/lsf.result ./hello.out
Job<691121> is submitted to defult queue <normal>.
[ServerA@hmli] bsub -I -w "ended(ISE)" echo "hello.out has been finished"
Job<691122> is submitted to defult queue <interactive>.
<<Waiting for dispatch ...>>
<<Starting on ISE_Demo>>
hello.out has been finished
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐