LSF Basis
调度系统对用户使用资源的限制
由于目前超算中心的建设规模远远无法满足中心用户的计算需求,而同时又是向校内师生提供免费的计算服务,无法避免的出现了使用浪费的现象。中心采取多种限制策略组合的方式,一方面保障资源的利用效率,一方面保障众多用户使用的公平性。对每个用户的限制策略主要包括以下几个方面(各超算系统的限制参数会有差别):
提交作业可使用的队列:
根据各体系计算程序的使用方法、并行计算模式、内存需求等,将队列主要分为serial队列、normal队列、mpi队列、long队列、large队列、fat队列,以及其他一些特殊的队列等。各超算系统上,队列设置可使用命令:bqueues查看,命令:bqueues -l 队列名查看各队列的详细说明信息。
最大可同时计算作业数:
单个用户的已提交作业,处于运行(RUN)状态的作业数的上限限制。
最大可同时排队作业数:
单个用户的已提交作业,处于排队(PEND)状态的作业数的上限限制。当达到此限制时,系统会有提示警告信息,用户将无法提交新的作业。可待前边排队中的作业运行之后,继续提交新的作业排队。
最大可同时计算作业进程数:
每个作业使用的进程数与运行中作业数的乘积的上限限制。每个作业使用的进程数由用户根据实际计算需求自行设定,但受到可使用队列的限制。在未达到“最大可同时计算作业数”的情形下,单作业所需进程数越多,可运行作业数越少,单作业所需进程数越少,可运行的作业数越多。并行计算的程序单作业使用的进程数越少,往往计算的越慢。
用户组最大可同时计算作业进程数:
个别课题组学生较多,申请的计算帐号也较多,为保障资源分配的公平性,以课题组为单位,对该组内所有用户可用的总的计算资源进行限制。
单作业最大可计算时间长度:
作业开始运行到运行结束的时间长度限制,防止个别用户使用脚本等长期占用计算节点,保障计算资源得到及时释放。
作业任务计算的操作步骤
准备输入文件:
通过ftp/sftp等方式将已准备好的计算任务文件上传到超算系统上,或根据需要直接在超算系统上使用vim或emacs等编写输入文件。
提交计算任务:
使用bsub命令将作业提交到LSF作业调度系统上。若提交成功,系统会显示提示信息,已提交的任务将分配得到一个作业号。利用bjobs命令可查看已提交的作业。若提交不成功,请根据系统提示执行后续操作。无法解决的问题可随时联系超算中心老师进行解答处理。
计算任务开始排队:
已提交的作业首先进入作业队列中进行排队,同一队列中作业提交的时间顺序决定在队列中的前后。
调整队列中的作业:
已经开始运行的作业无法再调整提交参数,尚在队列中排队的作业可以调整提交参数,使用命令为bmod。比如,更改作业所在队列、计算所需进程数、输出结果文件名、调整用户自己排队中作业的前后顺序等。
调度资源与分配运行:
LSF作业调度系统会实时的监测各个计算节点的空闲情况及状态,判断是否满足队列中排队作业的计算使用需求。若满足需求,则为作业分配计算节点进行计算。
作业开始计算:
当条件满足时,作业被分配到相应的计算节点上执行计算。LSF作业管理系统监测并收集正在执行的作业状态信息及输出信息,并将输出结果信息生成在作业提交时的文件目录下或作业提交时指定的文件中。
作业查询与终止:
计算中的作业,可通过查看作业默认或指定的输出文件或使用bpeek命令进行输出状态查询。若程序计算异常,可使用bkill命令终止删除作业。
获取计算结果:
默认情况下,计算结果文件保存在提交计算作业的目录下边,亦可在提交作业时指定其他的结果文件生成目录。可使用more、cat等Linux系统命令查看结果文件。或根据需要将结果文件通过ftp/sftp等方式下载到个人电脑上进行后期处理分析。
其中,3、5、6步骤将由LSF作业调度系统自动完成,无需用户参与。
提交作业命令bsub的常用参数介绍
提交作业的命令是:bsub,详细命令参数可用命令:man bsub查看。作业提交首先要确认预计算的程序有可执行权限:
hello_test作业提交成功,系统分配得到作业号:818500。各参数说明如下:
-q
指定作业提交的队列名为normal,可根据计算需求更换为其他队列名,提交作业时必须指定。
-n
指定作业申请使用的进程数为8,可根据计算需求更换为其他进程数,提交作业时必须指定。
-o
指定作业的标准输出文件为%J.log,%J在文件输出时对应作业提交后分配得到的作业号(此处为818500),可更换%J.log为其他自行定义的文件名称。
-e
指定作业的错误输出文件为%J.err,%J在文件输出时对应作业提交后分配得到的作业号(此处为818500),可更换%J.err为其他自行定义的文件名称。此参数可用于在作业异常退出时查看错误提示信息,请尽量在提交作业时指定。
-J
指定作业的作业名为hello_test,可更换为其他自行定义的文件名称。
mpijob
为LSF作业调度系统的作业提交时调用的系统命令。后跟用户自己的执行程序或脚本
./123.sh
为用户自己的执行程序或脚本为hello.sh,./执行程序在当前目录下。hello.sh之后,若有程序本身自己的各项参数,可照常指定添加。提交作业时必须指定。
查询作业状态命令bjobs的常用参数介绍
查询作业状态的命令是:bjobs,直接执行此命令,可查询个人帐号下所有作业的状态。命令:bjobs -l 作业号可查看作业的当前详细状态信息。作业状态有以下几种:RUN
作业正在运行计算中:
PEND
作业在排队中,尚未开始计算:
bjobs_pend
PSUSP
作业在排队中时被挂起。
status3
USUSP
作业在计算过程中时被挂起。
SSUSP
作业被LSF作业调度系统挂起,
作业排队的常见原因说明:bjobs -p
查询作业排队原因的命令:bjobs -p 作业号,常见作业排队原因:
pending1用户作业达到了排队中作业所在队列的个人作业进程数上限。此队列中用户正在运行的作业有计算结束,才会再分配后续的排队作业。
pending2
排队中作业达到了所在队列可使用节点数的上限。此队列中所有用户正在运行的作业有计算结束,才会再分配此队列中排在最前边的作业。
pending3
用于已运行的作业数达到了系统规定的限制,需已运行的作业有新的计算结束,排队中的作业才会进入系统调度。
pending4
队列中已经运行的所有作业的总使用进程数,达到了系统上队列队列总作业进程数的上限。需该队列中已运行的作业有新的计算结束,才会调度该队列中排在第一位的作业。
对未完成作业进行调整:bmod、btop、bstop、bresume
更改作业提交参数:
只能在作业尚处于排队中时,已经运行的作业无法再更改提交或计算参数。使用命令为:bmod,在提交作业时的bsub之后与mpijob之前的参数均可进行更改,此命令详细参数可用man bmod查看。更改作业的前后顺序:
有多个作业在排队时,有时希望让后提交的作业排在前边,可使用命令:btop,此命令影响的仅仅是个人帐号下自己的作业,对其他用户的作业没有任何影响。挂起未完成的作业:
可以将未完成的作业挂起,不能挂起已经处于挂起状态的作业。使用命令为:bstop,挂起的运行中的作业将终止计算,但作业进程并不结束。可使用命令bresume将挂起的作业恢复。另一种处理方法的命令是,挂起作业:bkill -s STOP,恢复作业:bkill -s CONT此命令处理中心不鼓励使用,因挂起的作业仍会占用计算节点上的系统内存,可能会影响其他用户的后续计算使用。删除结束作业:
使用命令为:bkill,对个人帐号下排队中的作业和运行中的作业均可进行操作。bkill 作业号可结束单个作业,bkill 0 结束所有作业。
作业异常退出
提交作业时请加上-o和-e参数,作业异常退出后,根据标准输出和错误输出文件,查看异常退出的提示说明信息。使用bacct -l 作业号的命令可查看作业历史纪录。
常见的作业异常退出原因有:
libxxxx.so.x函数库文件未找到:程序执行需要的函数库文件缺失。请根据需要重新编译程序,指定函数库文件的存在目录。若系统上不存在需要的函数库文件,请联系超算中心老师进行统一更新安装。操作熟练的用户亦可自行安装文件到自己的帐号目录下使用。
可执行文件未找到:请指定预计算程序存的具体存在目录。
请指定一个可执行文件:作业提交时,指定的执行程序没有可执行权限。请使用命令chmod u+x 可执行文件名为指定程序添加可执行权限。
磁盘空间或内存不够:磁盘空间不够时,请及时清理使用帐号下的陈旧或无用文件,仍不满足需求的可邮件联系向中心提出申请增大磁盘空闲限额。内存不够时,请调整作业自身作业参数,或更换使用其他更大内存配置的作业队列。
用户的文件目录中存在空格:用户帐号的任务文件目录,目录名中间请勿存在空格,否则作业计算时会无任何结果输出的异常退出。
程序段错误:发生此种问题时,一般是用户自身程序的问题,请检查程序后再测试计算。
计算节点故障:程序运行过程中,使用到的计算节点发生故障,计算进程中断,作业异常退出。发生此情况时,一般均需要重新提交作业计算。