交互式作业
从系统管理的角度,通过一个单一的集中调度器,来控制所有的工作,有时是非常可取的。
对于资源密集型作业,交互式作业可通过LSF的批处理系统提交,从而能够使用到批处理调度策略和机器选择功能。你可以提交一个作业,并且指定最低的加载主机去运行该作业。
由于所有的交互式作业受LSF策略影响,对于系统,你将有更多的控制权。例如,你可以指定只将集群中两台服务器作为交互式服务器。通过定义一个交互式队列并指定其只能使用该两台交互式服务器的,从而禁止交互式作业访问所有其他的服务器。
调度策略
对于资源密集型作业,交互式作业可让你利用批处理调度策略和机器选择功能。在一个队列中,交互式批处理作业和其它作业一样,使用相同的策略来调度。这意味着,交互式作业在被派发之前,可能需要等待很长的时间。如果需要快速反应时间,交互式作业应该被提交到调度限制比较松散,但优先级很高的队列中。
交互式队列
你可以通过lsb.queues文件中的INTERACTIVE参数,来配置队列,使其只支持交互式作业,只支持批处理作业,或者是两者都支持。参见Platform LSF Configuration Reference, 在lsb.queues文件中关于配置交互式队列的信息。
非批处理的公用交互式作业
非批处理的作业,例如lsrun,lsgrun,等等,当运交互式认为时,使用LIM的简单安置建议来选择主机。参见第42章“交互式和远程任务的运行”,以获得使用非批处理公用命令来运行交互式作业的详细信息。
提交交互式作业
使用
bsub –I
选项来提交批处理交互式作业,使用
bsub –Is和-Ip
选项在伪终端提交批处理交互式作业。Windows不支持伪终端。
参见bsub命令以获得更详细的信息。
找出哪些队列接受交互式作业
在你提交交互式作业之前,需要使用bqueues –l命令来找出哪些队列接受交互式作业。如果该命令的输出中包含下面的信息,说明该队列只支持批处理作业,不支持交互式作业:
SCHEDULING POLICIES: NO_INTERACTIVE
如果该命令的输出中包含下面的信息,说明该队列只支持交互式作业:
SCHEDULING POLICIES: ONLY_INTERACTIVE
如果以上两种信息都没有,或者SCHEDULING POLICIES没有在
bqueeues –l
命令的输出中,那么该队列既支持交互式作业,也支持批处理作业。
您可以在lsb.queues文件中配置交互式队列。
提交一个交互式作业
1 使用bsub –I选项来提交一个交互式批处理作业。
例如:
bsub –I ls
提交一个交互式批处理作业:在用户的终端显示ls的输出结果。
% bsub -I -q interactive -n 4,10 lsmake <<Waiting for dispatch ...>>
该命令在4至10个处理器上启动Platform Make,并在终端显示输出结果。直到交互式作业完成或终止,才能提交新的作业。
当交互式作业被提交,作业在等待调度时,会有信息显示。bsub命令将停止显示从shell的输出,直到该作业完成,默认没有邮件发送给用户。用户可以使用
ctrl +c
在任何时候来终止该作业。
交互式作业不能设置检查点。
交互式作业不能重运行(bsub -r)。
您可以将交互式批处理作业提交到可重运行的队列(在lsb.queues文件中RERUNNABLE=y)中,或者可重运行的应用(在lsb.applications文件中RERUNNABLE=y)中。
使用伪终端提交交互式作业
在Windows下,不管是lsrun或者bsubLSF命令,都不支持使用伪终端来提交交互式作业。
bsub –Ip
使用bsub –Ip选项,用伪终端来提交一个批处理交互式作业。
例如:
% bsub -Ip vi myfile
提交一个编辑myfile的交互式作业。
当你指定-Ip选项时,bsub命令提交一个批处理交互式作业,并且在该作业开始时建立一个伪终端。一些应用,例如vi,需要一个伪终端,以便正常运行。
bsub –Is
使用bsub –Is选项,提交批处理交互式作业时,能创建一个特定shell模式的伪终端。
例如:
% bsub -Is csh
提交一个批处理交互式作业,该作业启动csh,将其作为交互式shell。
当你指定-Is选项时,bsub命令提交一个批处理交互式作业,并且在该作业开始时建立一个特定shell模式的伪终端。该选项应指定提交时的交互式shell,或者用CTRL –C 和CTRL –Z重新界定的应用(例如jove)。
提交交互式作业和重定向流文件
bsub –i, -o, -e
你能使用-I选项和-i, -o, -e选项一起,用bsub来选择重定向流文件。
当标准输入和标准输出来自终端时,为了保存标准错误流到job.err文件:
% bsub -I -q interactive -e job.err lsmake
划分stdout和stderr
如果你的环境中有一个围绕 bsub和LSF命令的封装,使最终用户不知道LSF和LSF的具体选项,就可以在批处理交互式作业中用>操作符,将标准输出和标注错误信息重定向。
默认情况下,在批处理交互式作业中,标准错误和标准输出信息都写入提交主机的stdout内。
将stderr和stdout信息写入mystdout:
bsub -I myjob 2>mystderr 1>mystdout
在lsf.conf文件中设置
LSF_INTERACTIVE_STDERR=y
或者作为环境变量,以便将stdout和stderr重定向到不同的文件。
bsub -I myjob 2>mystderr 1>mystdout
stderr重定向到mystderr,stdout重定向到mystdout。
参见Platform LSF Configuration Reference的LSF_INTERACTIVE_STDERR,
以获得更详细的信息。
网友留言:
Job is submitted to queue .
˂˃
GROUP_NAME GROUP_MEMBER #GROUP_ADMIN # Key words
master_hosts (node01 node02 )
HPC_HOSTS (node03 node04 node05 node06 )
End HostGroup
-----------------------------------
Begin Queue
QUEUE_NAME = long
PRIORITY = 31
INTERACTIVE = Y
HOSTS = HPC_HOSTS
NEW_JOB_SCHED_DELAY = 0
FAIRSHARE = USER_SHARES[[default,1]]
DESCRIPTION = For simulation jobs
End Queue
我把lsb.hosts 和 lsb.queues 复制出来了。
Begin Host
HOSTNAME model type server RESOURCES #Keywords
node01 ! ! 1 (mg)
node02 ! ! 1 (mg)
node03 ! ! 1 ()
node04 ! ! 1 ()
node05 ! ! 1 ()
node06 ! ! 1 ()
End Host
其中node01和node02 可以提交交互式job。
HOST_NAME type model cpuf ncpus maxmem maxswp server RESOURCES
node01 X86_64 Intel_E5 12.5 32 255.6G 127.9G Yes (mg)
node02 X86_64 Intel_E5 12.5 40 511.6G 3.9G Yes (mg)
node03 X86_64 Intel_E5 12.5 40 511.6G 3.9G Yes ()
node04 X86_64 Intel_E5 12.5 40 511.6G 3.9G Yes ()