OpenLava极简用户教程
OpenLava
OpenLava源于IBM的LSF(两者命令和用法基本相同),是一个免费、开源的工作负载调度程序,支持HPC(高性能计算),是IC应用环境下主流的任务分发和调度工具.
Openlava命令:
- bsub:提交任务
- bsub -q [queue name] : 指定队列,如果不指定,则任务会提交到默认队列(一般是normal)
- bsub -m [node name] : 指定节点,任务将会被提交到指定的节点上运行(需要确保机器在当前队列中)
- bsub -Is : 投递任务的时候用shell模式启动一个终端,并将任务投递到上面以交互式运行.这种模式一般用于启动带图形界面的工具,启动需要交互式的工具,将标准输出打印到当前窗口,或者为了阻塞式运行任务(任务运行期间bsub不退出)
- bsub -o [fileName] : 保存任务的标准输出到指定的文件
- bsub -e [fileName] : 保存任务的标准错误到指定的文件
- bsub -n [number] : 指定为当前任务保留多少cpu处理器
- bsub -R [resourceString] : 指定为当前任务的资源需求
- bjobs:查看任务状态和基本信息
- bjobs : 查看当前用户所有的未完成job
- bjobs -a : 查看当前用户在一段时间内所有的job,包括已完成和未完成的job
- bjobs -UF [jobId] : 查看指定job的详细信息
- bkill:kill未完成的任务
- bkill 0 : 杀死当前用户所有的job
- bkill [-r] jobId : 强制杀死指定的job
- bqueues:查看队列信息
- bqueues : 查看所有队列的job状态
- bhosts:查看机器状态及基本信息
- bhosts : 查看所有机器的job状态
- busers:查看用户任务
- busers -all : 查看用户任务
- lsload:查看节点负载状态
- lsload : 查看所有机器的负载状况
扩展知识
1. 从队列详细信息我们能够到什么
MAX : 队列的理论最大slots可用数目,此队列最多可以占用60 slots
JL/U : 队列个人slots限制,每个人在这个队列中最多可以占用5 slots
NJOBS/PEND/RUN/SSUSP/USUSP/RSV : 当前队列上的作业情况
RUNLIMIT : 队列的运行时间限制,10080 min即7天,队列上的任务运行时间达到7天会被kill掉
USERS : 哪些用户或者用户组可以使用这个队列
HOSTS : 哪些机器或者机器组在这个队列中
2. 从任务详细信息中我们可以得到什么
对于RUN/DONE/EXIT状态的job,我们可以从job的详细信息中获取:
任务的分发参数,包括Project, Queue, Command, Processors Requested, Requested Resources等
机器信息,包括投递机器(Submitted from)和执行机器(Dispatched to)
时间信息,包括投递时间和执行时间
用户信息(User)
目录信息(CWD)
有些job还可以看到资源用量信息,包括CPU time, MEM, SWAP等
对于PEND状态的job,我们则可以额外获取“PENDING REASONS”这一重要信息
Openlava的用户经常有这种困惑,为什么我的job投递出去,但是总是PEND的状态跑不起来?一般而言常见的PEND原因无非以下几种:
- Limits on the number of job slots that are configured for a queue, a host, or a user
运行job的数目达到了queue设置的上限
- AvAIlability of the specified resources
没有机器满足指定的资源条件
- Job dependency and pre-execution conditions
Job的依赖关系不被满足
- Relative priority to other users and jobs
优先级低
- Start time that is specified by the user when the job is submitted
用户指定了job开始时间(开始时间之前都是PEND的状态)
- Load conditions on qualified hosts
不满足机器上的载入条件
- Dispatch windows during which the queue can dispatch and qualified hosts can accept jobs
queue设置了调度时间窗口,调度窗口之内job都是PEND的状态
- Run windows during which jobs from the queue can run
queue设置了运行时间窗口,时间窗口之外job都是PEND的状态
问题汇总
- bkill 后作业有残留进程
- 开源软件弱点,只能手动杀掉
killall process_name or pkill process_name
- 开源软件弱点,只能手动杀掉