落水清风的个人空间 https://blog.eetop.cn/1751000 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

openlava极简用户教程

已有 9104 次阅读| 2019-6-29 12:36 |个人分类:知识分享|系统分类:其他| openlava

Openlava是什么

Openlava脱胎于IBMlsf(两者命令和用法基本相同),是一个免费、开源的工作负载调度程序,支持HPC(高性能计算),是IC应用环境下主流的任务分发和调度工具。

 


Openlava术语:

使用openlava我们需要了解如下基本概念:

- Job

任务,用户工作的一个抽象,对应着一条任务指令。

- Host

机器,任务分发和任务执行的机器。

- Queue

队列,多个Host(机器)组成一个队列,用于为指定类型的任务(Job)提供一组资源池。

 

其中Host分为如下三类:

- Execution Host

计算节点,用于接收并执行任务。

- Submission Host

任务分发节点,一般和Execution Host是分开的,仅用于分发任务,不接收和执行任务。

- Master Host

主控节点,一般和Execution HostSubmission Host都是分开的,仅用于收集负载和状态信息,管理任务。

 

 


Openlava命令:

常用基本命令

基本命令

用法

bsub

提交任务到openlava

bjobs

查看任务状态和基本信息

bkill

杀死未完成的任务

bqueues

查看队列状态和基本信息

bhosts

查看机器状态及基本信息

lshosts

查看机器资源状态

lsload

查看机器负载状态

 

- bsub

%bsub -q [queueName] : 指定队列,如果不指定,则任务会提交到默认队列(一般是normal)。

%bsub -m [hostName] : 指定机器,任务将会被提交到指定的机器上运行(需要确保机器在当前队列中)。

%bsub -P [projectName] : 指定项目,一般用于标识和统计。

%bsub -Is : 投递任务的时候用shell模式启动一个终端,并将任务投递到上面以交互式运行。这种模式一般用于启动带图形界面的工具,启动需要交互式的工具,将标准输出打印到当前窗口,或者为了阻塞式运行任务(任务运行期间bsub不退出)。

%bsub -o [fileName] : 保存任务的标准输出到指定的文件,这个模式和-Is相冲突,但是可以和-e叠加使用。

%bsub -e [fileName] : 保存任务的标准错误到指定的文件,这个模式和-Is相冲突,但是可以和-o叠加使用。

%bsub -n [number] : 指定为当前任务保留多少cpu处理器。

%bsub -R [resourceString] : 指定为当前任务的资源需求。

 

示例:

* 当前任务为virtuoso(图形界面), 任务投递到队列GUI,所属项目为ABC,预计需要4cpu核(在同一台机器)和10G内存,则任务投递方式为:

bsub  -q GUI  -P ABC  -Is  -n 4  -R span[hosts=1] rusage[mem=10240]  virtuoso

* 当前任务为liberate,任务投递到默认队列,所属项目为ABC,需要保存标准输出和标准错误,预计1cpu核足够, 要求投递的机器剩余内存大于100G,剩余swap大于100G,剩余tmp空间大于30G,则任务投递方式为:

bsub  -P ABC  -o lsf.log  -e lsf.log  -R “select[mem>=102400 && swap>=102400 && tmp>=30720]”  liberate liberate.tcl

 

- bjobs

%bjobs : 查看当前用户所有的未完成job

%bjobs -a : 查看当前用户在一段时间内所有的job,包括已完成和未完成的job

%bjobs -UF [jobId] : 查看指定job的详细信息。

 

- bkill

%bkill 0 : 杀死当前用户所有的job

%bkill -r [jobId] : 强制杀死指定的job

 

- bqueues

%bqueues : 查看所有队列的job状态。

 

- bhosts

%bhosts : 查看所有机器的job状态。

 

- lshosts

%lshosts : 查看所有机器的资源状况。

 

- lsload

%lsload : 查看所有机器的负载状况。

 

 

扩展知识

1. 从队列详细信息我们能够到什么

MAX : 队列的理论最大slots可用数目,此队列最多可以占用60 slots

JL/U : 队列个人slots限制,每个人在这个队列中最多可以占用5 slots

NJOBS/PEND/RUN/SSUSP/USUSP/RSV : 当前队列上的作业情况。

RUNLIMIT : 队列的运行时间限制,10080 min7天,队列上的任务运行时间达到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的状态。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 8

    粉丝
  • 3

    好友
  • 3

    获赞
  • 0

    评论
  • 644

    访问数

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 13:24 , Processed in 0.044627 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部