文档章节

IC-CAD Methodology企业实战之openlava

李艳青1987
 李艳青1987
发布于 2018/12/16 21:30
字数 3346
阅读 39
收藏 0

    在云计算解决安全隐忧并成为IC界主流运算平台之前,私有的服务器集群系统仍然是各大IC公司的计算资源平台首选。

    现在主流的服务器集群管理系统包括lsf,openlava,SkyForm,三者都属于lsf一系。lsf是IBM公司开发的服务器集群管理系统,性能优异,且有商业支持,平台组件丰富,十分易用,唯一的问题就是价格昂贵。openlava是兼容lsf的开源软件,最终版本为openlava4.0,相当于早期的lsf,其主要的用法和功能类似于lsf,因而lsf用户基本可以无缝切换到openlava,并且它开源免费免费,受到广大IC厂商的欢迎。SkyForm脱胎于openlava,后来经过天云软件的重新开发,也避免了重用IBM原始代码的侵权问题,其用法兼容与lsf和openlava,有商业支持,平台组件丰富,收费(价格应该不太贵,没有咨询过),属于一种折中的选择。

    由于lsf和SkyForm收费,考虑到国内IC公司一贯勤俭节约,openlava的用户体量应该是最大的,所以本文主要针对openlava来讲,其它服务器集群管理系统有共通之处。

    对IC-CAD工程师而言,对openlava需要关注一下几点。

    1. openlava基本命令

    2. openlava配置。

    3. 硬件状况采集,机器/服务异常报警。

    4. 针对用户的openlava状态(job/host/queue)信息展示系统(最好为GUI界面工具或者网页,lsf为网页)

    5. 更进一步的基本数据采集,存储,分析,通过更多个性化的插件化工具辅助将openlava的应用智能型和便捷性提升到更高的层次。

 

    openlava的安装请参照https://my.oschina.net/liyanqing/blog/1633330

 

1. openlava基本命令

Basic Command

Usage

bsub

Submits a batch job to openlava

bjobs

See the status of jobs in the LSF queue

bkill

Kill a running job (’bkill 0’ kills all the job one user submits)

bqueues

Displays information about queues

bhosts

Displays hosts and their job condition.

lshosts Display hosts and their resource condition (cpu/memory).
lsload Display host and their load condition (cpu/memory).

 

bsub 
%bsub -o  [fileName]  : Save bsub standard output into the log file (for debug).
%bsub -e  [fileName]  : Save bsub standard error into the log file (for debug).
%bsub -n [number]  : Occupied specified number of processor to run the job.

%bsub -q  [queueName]  : Run the job on the specified queue.

%bsub -m  [hostName]  : Run the job on the specified host.

%bsub -P [projectName] : Declare which project the job is for.
%bsub -Is  : Submit a batch interactive job and creates a terminal with shell mode
                    Be sure to use this option if you want to start up application with GUI
%bsub -R  : Runs the job on a host that meets the specified resource requirements

For more detailed information, please check “man bsub”


Some examples.

====

  1. Job need 4 cpu slots, every slot need 100G memory (Total 4*100=400G memory).
    任务属于项目PJ123,需要4个cpu核,为每个核预占100G内存(内存默认按照cpu核分配,而不是按照job分配),总体预留400G内存。
    bsub -P PJ123 -n 4 -R "rusage[mem=100000]" "COMMAND"
  2. Job need 4 cpu slots, and the 4 slots must be on the same host.
    任务属于项目PJ123,需要4个cpu核,且要求4个核在同一台机器上(在设置了“span[hosts=1]”的前提下,机器上总共剩余100G内存任务即可投递成功)
    bsub -P PJ123 -n 4 -R "span[hosts=1] rusage[mem=100000]" "COMMAND"
  3. Submit job into pd queue, select the hosts who have 500G+ memory, 100G+ swap, 100G+ tmp.
    任务属于项目PJ123,需要投递到pd队列,要求投递的机器剩余内存大于500G,剩余swap大于100G,剩余tmp空间大于100G。(select能够选择当前满足条件的机器,但是不能预占机器上的资源,用rusage预占资源)
    bsub -P PJ123 -q pd -R "select[mem>=500000 && swap>=100000 && tmp>=100000]" "COMMAND"
  4. Submit job into pd queue, need 8 cpu slots, reserve 100G memory, 100G swap, select the hosts who have 100G+ tmp.
    任务属于项目PJ123,需要投递到pd队列,需要8个cpu核,选择tmp空间大于100G的机器,预占100G内存和100Gswap。
    bsub -P PJ123 -q pd -n 8 -R "rusage[mem=100000:swap=100000] select[tmp>=100000]" "COMMAND"

====

 

bjobs
% bjobs  : Display job list of current user
% bjobs -UF [jobId]   : Display the detailed job information.

                                    You can get job PEND reason and job memory/swqp usage with this command.

bkill
% bkill -r [jobId]  : Kill specified job by force.
% bkill 0  : Kill all the jobs.

bqueues

% bqueues  : Display job conditions on all queues.

                      Job limitation, total job number, RUN job number, pend job number, SUSP job number.

bhosts

% bhosts  : Displays hosts and their job condition.

                   Max job limitation, total job number, RUN job number, pend job number, SUSP job number.

lshosts

% bhosts  : Display hosts and their resource condition (cpu/memory).

                   cpu/memory/swp resource.

lsload

% bhosts  : Display host and their load condition (cpu/memory).

                   cpu/memory/swp/tmp load.

 

2. openlava配置策略

2.1 基础配置

    openlava配置的核心是lsb.queues,也就是队列的配置。

    先看一个基本的队列设置。

Begin Queue
QUEUE_NAME   = normal    队列名称
FAIRSHARE    = USER_SHARES[[default,1]]    竞争策略
UJOB_LIMIT   = 48    每个用户最大可用slot的数目
RUNLIMIT     = 168:0    job最长运行时间限制,单位为 小时:分钟
QJOB_LIMIT   = 1500    queue中最大job运行数目限制
HOSTS        = normal    队列中机器设置(此处normal为host组的名称)
DESCRIPTION  = Default queue, for normal jobs.    队列描述
End Queue

    其中需要注意以下几点:

    UJOB_LIMIT的数值必须合理配置,太小容易造成queue中运行的job的数目过少,浪费资源,太大则容易造成用户可运行job数目太多而快速吃光资源,导致后提交任务的用户总是得不到资源而使job处于PEND的状态。

    FAIRSHARE用于定义用户新提交的job之间的竞争策略,示例中的设置意为,在queue负载全满的情况下,所有用户公平竞争,即无论每个用户PEND的job数目有多少,当有新的resource空余出来的时候,所有用户之间公平分配空闲resource。

    HOSTS部分可以直接定义host的名字列标,也可以仅表示host group name,然后在lsb.hosts中定义host group name对应的具体的host name,这样配置更加灵活。示例中采用后者。

 

2.2 配置策略

      按照job RUNLIMIT(运行时间限制)的区分,建议分出3个队列,short/normal/long。short一般用于运行短时就能完成的job,RUNLIMIT很短(比如一天);normal属于默认队列,RUNLIMIT中等(比如一周);long属于运行超长时间的job(至少一个月,也可以设成更长甚至无时间限制),为了防着用户滥用long队列,其UJOB_LIMIT需要设置的较小。

    按照机器资源也可以分出一些特殊队列,比如有些EDA工具需要大量的cpu,但是对memory不敏感,比如regression,那么可以把cpu核数很高的机器分到一个单独队列。有些EDA工具需要极大的内存,但是对cpu数目要求不高,可以把memory极大地机器分到一个队列。

    按照IC设计的flow也可以分出一些特殊队列。不同IC设计流程所需要的运算资源也不一样。比如regression需要极大量的slots,但是memory需求不高,而且job的运算时间一般较短;比如K库一般需要极大量的slots,但是对于大型设计需要的memory也很多,而且运行时间往往也很长,一般也需要单独的队列。

    队列设置的整体思路是:

    * 为提高机器利用率,队列中尽量采用共享机器。

    * 如果队列需要接收job的时候必须有运算资源,不得不预留一部分专有机器,但是这样有可能会造成一定程度的资源浪费,所以专有机器的数量要控制到合适范围。

    * 尽量要预留一部分机动机器,以防备紧急任务没有资源可以调用。

    * opelnava队列的调整策略是一个动态的过程,需要根据IC设计运算需求动态调整。

 

3. 机器状态监控

    openlava的机器需要进行状态监控以防备以下两种异常情况。

    * 机器状态异常,比如机器宕机或者网络断线。

    * 机器上服务异常,比如openlava的LIM进程或者BSD进程异常中断。

    这两种异常都会影响服务器上运行着的job,同时会减少可用算力,所以需要及时发现,及时解决。一般来说zabbix等IT运维管理软件就可以实现基础的机器/服务状态监控。

    另外还有一些更加个性化的监控需求。比如当整的openlava队列资源使用率超过80%的时候,由于队列设置的原因,一般用户就能明显感觉到job投递困难,任务运行缓慢,openlava的维护者需要能够及时发现这种(以及其它的)状况,这样的个性需求可能就需要CAD自己开发一些定制化的监控工具来实现。

 

4. openlava用户端信息展示系统

    由于大多数ICer用户都是openlava小白,很难要求他们系统地了解openlava的各种命令以获取整体状况,包括job/host/queue,所以一些(图形化)的辅助工具会比较易用。

    lsf有提供网页版的系统展示和信息查询平台,SkyForm不了解,应该也有。openlava则可以按照企业需求定制化研发信息展示工具,也可以采用开源工具openlavaMonitor,其包括数据采集和数据展示部分,能够满足基本的企业需求。

    openlavaMonitor的说明见https://my.oschina.net/liyanqing/blog/1843744,github下载地址为https://github.com/liyanqing1987/openlavaMonitor,下面做简要说明。

    openlavaMonitor采集job/host/load/queue/user信息,采用sqlite3存储数据,采用PyQt5编写的图形展示界面,采用matplotlib绘制二维图表,其主要展示信息如下所示。

图1 openlavaMonitor job信息展示界面

 

 图2 openlavaMonitor jobs信息展示界面

 

图3 openlavaMonitor hosts信息展示界面

图4 openlavaMonitor queues信息展示界面

    这个工具可以满足用户如下基本的openlava信息获取需求。

    * job基本信息,包括job生命周期内内存使用状况(如果job EXIT,可以分析是不是memory使用过量导致的job失败)。

    * jobs的基本信息,可以查看所有的job,也可以按照user/status/queue/host选择jobs。

    * hosts的基本信息,包括host的状况,所属queue,核数,job数目,cpu/memory/swap等资源总量和使用量。

    * queues的基本信息,包括15天内指定queue的RUN/PEND job数目变化趋势,用于判断queueu间的负载变化情况。

 

    企业可以按照需求自己继续定制化开发openlavaMonitor,以展示更多信息(比如user等)。如有合理的开发需求也可以直接联系我。

 

5. openlava自研工具

    为了更加高效地利用利用openlava系统,提升机器资源使用率,提升用户使用便捷程度,以及通过大数据分析得到IC相关数据(比如项目资源使用量分析,比如user工作量分析),还可以通过自研工具,通过openlava的数据采集以及数据分析得到。

    以下是一些研发方向,按照企业实际需求仅供参考。

    * 采集分析host/queue的资源使用情况,动态调整queue-host设置以进一步提高整体的资源使用率,避免资源浪费。

    * 采集分析user的任务运行情况(工作量分析)。

    * 采集分析project相关数据(分析项目资源消耗量)。

    * 采集分析所有job的资源申请设置以及实际的资源使用情况,得到job设置失误程度,通过分析数据,有目的地知道用户合理设置bsub指令,合理使用openlava系统。

    * 直接开发顶层脚本esub(作为bsub wrapper的一种统称),通过数据分析以智能地替代人工经验,提高用户使用便捷度(比如esub自动为bsub任务添加project等标签,自动根据历史记录设置cpu/memory/swap等资源请求,通过分析历史记录预估正在运行job的运行时间等,从而让用户使用openlava更加简易便捷)。

 

备注:

一些openlava已知问题及解决方法

1. 在使用交互模式时,有些EDA工具的输出会出现折行,错行等现象。

    这多半是由于运行机器和显示机器显示长宽设置不一致导致的,这属于openlava的已知bug,最终版本(4.0)中没有修复。部分工具的解决方式如下。

1.1 对dc_shell/pt_shell而言

    如果是在csh/tcsh中,执行以下命令。

    setenv LINES; unsetenv COLUMNS; setenv LINES `tput lines`; setenv COLUMNS `tput cols`

    如果是在bash中,执行以下命令。

    unset LINES; unset COLUMNS; export LINES=`tput lines`; export COLUMNS=`tput cols`

1.2 对innovus而言

    执行以下命令

    stty columns 279  (tput cols  >> 279)

    stty rows 25  (tput lines >> 25)

或者在innovus中输入长命令时手工用“\”换行。

 

 

 

© 著作权归作者所有

共有 人打赏支持
李艳青1987
粉丝 12
博文 19
码字总数 37873
作品 0
通州
高级程序员
私信 提问
值得纪念的一天,几秒钟就把公司的openlava搞崩溃了

本人在某IC公司,有百台左右服务器,用于跑电路仿真,以前公司配置了lsf,今天刚刚切换到openlava,写了个程序做processer limitation测试,结果中间出了点bug,几秒钟就把公司的openlava搞崩...

李艳青1987
2017/05/02
0
1
openlava图形化监控工具openlavaMonitor

OpenLava是100%免费、开源、兼容IBM® Spectrum LSFTM的工作负载调度器,支持各种高性能计算和分析应用,在各大IC公司被广泛引用。 openlava开源免费,兼容LSF,是IC公司(尤其是中小型IC公司...

李艳青1987
2018/07/10
0
0
IC-CAD Methodology企业实战之inhouse-tool开发示例

Inhouse-tool开发是IC-CAD工作的一个重要内容之一。在大型IC公司,由于设计工艺的先进性和设计逻辑的复杂性,IC设计流程中具有更多special的需求是通用EDA工具所不能覆盖的,这种情况下Inhou...

李艳青1987
01/09
0
0
6 款高品质的免费 Linux CAD 应用程序

在 Windows 的 CAD 世界一直占主导地位的是非常强大的 AutoCAD 软件。不幸的是,Unix 系统的支持早在 1994 年就停止了,它的作者 Autodesk,目前也没有计划把它推向 Linux。在此我们编制了一...

红薯
2009/06/08
6.7K
0
开源力量公开课第二十四期-为何Hadoop是分布式大数据处理的未来&如何掌握Hadoop?

详情:http://www.osforce.cn/?p=1216 课程题目:开源力量公开课第二十四期-为何Hadoop是分布式大数据处理的未来&如何掌握Hadoop? 开课时间:2013年07月30日 18:30 - 21:30 现场或线上参课:...

程开源
2013/07/19
186
2

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
48分钟前
2
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
54分钟前
1
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
2
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
2
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部