LSF_管理软件许可证和其他共享资源

管理软件许可证和其他共享资源

设置LSF external LIM (ELIM),将软件许可证作为动态共享资源进行监控。

LSF如何使用动态共享资源

LSF识别两种主要类型的资源:

  • 集群内的所有主机都有基于主机的资源,如主机类型和型号、nodelocked software license。
  • 共享的资源:集群中的主机组动态加载的可用资源,比如基于网络传输的license,共享文件系统。
    共享的资源被LSF集群中的主机组共享。LSF管理用于主机选择和批处理或交互式作业执行的共享资源。这些资源是动态资源,因为系统上的负载随着资源的可用性而变化。

licenses 作为共享资源

共享资源最常见的应用是管理软件应用许可证。提交需要这些许可证的作业,当许可证可用时,LSF根据作业的优先级运行这些作业。当许可证不可用时,LSF将作业排成队列,然后在许可证空闲时分派它们。将应用程序许可证配置为共享资源可以确保最优地使用昂贵和关键的资源。

在ELIM中定义动态共享资源

要让LSF使用软件许可证之类的共享资源,您必须在LSF的resource部分定义资源。共享文件。您可以定义资源的类型以及希望LSF刷新资源值的频率。
要让LSF在一段时间内正确地跟踪资源,您必须将它们定义为外部负载索引。LSF使用一个称为外部负载信息管理器(ELIM)的程序定期更新负载索引。
ELIM可以是shell脚本或编译后的二进制程序,它返回您定义的共享资源的值。ELIM必须命名为ELIM,路径必须位于LSF_SERVERDIR:

/usr/share/lsf/lsf/cluser1/10.1/sparc-sol2/etc/elim

您可以在misc/examples目录中找到示例ELIMs的示例。

共享许可证示例

lsf.shared file 定义软件许可的两个动态共享资源,命名为license1和license2:

Begin Resource
RESOURCENAME  TYPE    INTERVAL INCREASING  RELEASE   DESCRIPTION   # Keywords
license1      Numeric 30       N           Y         (license1 resource)
license2      Numeric 30       N           Y         (license2 resource)
End Resource
  • 共享资源的TYPE参数可以是以下类型之一:
    • Numeric
    • Boolean
    • String
      在这个例子中,资源的Type参数是Numeric。
  • INTERVAL参数指定您希望刷新该值的频率。本例中,ELIM每30秒更新一次共享资源license1和license2的值。
  • “递增”列中的N表示license资源正在减少;也就是说,随着可用许可证的增加,负载就会降低。
  • “释放”列中的“Y”表示当使用license的作业挂起时,释放license资源。

将动态共享资源映射给主机

要让LSF知道您定义的动态共享资源license1和license2在哪里,请将它们映射到它们所在的主机。
在LSF_CONFDIR/lsf.cluster.cluster_name文件配置ResourceMap部分,指定你在lsf.shared文件中定义的资源license1和license2和hosts之间的映射关系。

Begin ResourceMap
RESOURCENAME  LOCATION
license1      [all]
license1      [all]
End ResourceMap

在该资源映射中,LOCATION参数下的[all]属性表示RESOURCENAME参数下的“license1”和“license2”资源在集群中所有主机上均可用。管理主机上只需要运行一个ELIM,因为这两个资源对于所有主机来说是相同的。如果不同主机上的资源位置不同,则每个主机上必须运行不同的ELIM。

监视动态共享资源

LSF要正确接收外部负载索引,ELIM必须将可用资源的计数以以下格式发送到标准输出:

number_indexes [index_name index_value] …
本例中的字段包含以下信息:
2 license1 3 license2 2

  • 外载指标总数(2)
  • 第一个外部负载索引的名称(license1)
  • 第一次负荷指标取值(3)
  • 第二个外部负载索引的名称(license2)
  • 第一次负荷指标取值(2)

编写ELIM程序

ELIM必须是一个名为ELIM的可执行程序,位于LSF_SERVERDIR目录下。
当lim守护进程启动或重新启动时,它将在同一主机上运行elim程序,并获取由elim程序发送的外部负载索引的标准输出。通常,您可以将任何可量化的资源定义为外部负载索引,编写ELIM报告其值,并将其用作LSF资源。
以下示例ELIM程序使用license1和license2,并假设FLEXlm许可证服务器控制它们:

#!/bin/sh 
NUMLIC=2           # number of dynamic shared resources
while true
do
TMPLICS='/usr/share/lsf/cluster1/10.1/sparc-sol2/etc/lic -c 
/usr/share/lsf/cluster1/conf/license.dat -f license1, license2'

LICS='echo $TMPLICS | sed -e s/-/_/g'
echo $NUMLIC $LICS # $NUMLIC is number of dynamic shared 
resource
sleep 30           # Resource
done

在脚本中,sed命令将许可特性名称中的减号(-)更改为下划线(_),因为LSF使用减号进行计算,而不允许在资源名称中使用减号。
lic实用程序可以从IBM Support获得。您还可以使用FLEXlm命令lmstat来创建自己的ELIM。

使用动态共享资源

使得新的共享资源可用,通过以下命令重新启动LSF:

  • lsadmin reconfig
  • badmin reconfig
    如果没有发现错误,使用lsload -l命令来验证动态共享资源的值:
HOST_NAME  status r15s  r1m  r15m  ut   pg   io  ls  it  tmp  swp  mem license1 license2
hosta          ok  0.1  0.3  0.4   8%   0.2  50  73   0  62M  700M 425M       3        0 
hostb          ok  0.1  0.1  0.4   4%   5.7   3   3   0  79M  204M  64M       3        0 

提交使用共享资源的任务

要提交使用一个license1资源的批处理作业,可以使用以下命令:

% bsub -R 'rusage[license1=1:duration=1]' myjob

在资源需求(rusage)字符串中,duration=1表示license1保留1分钟,以便LSF有时间从FLEXlm中检查它。
您还可以在队列级别的RES_REQ参数中指定资源需求字符串。在LSB_CONFDIR / cluster_name / configdir /lsb.queues。指定以下资源需求字符串:

Begin Queue
QUEUE_NAME = license1
RES_REQ=rusage[license1=1:duration=1]
...
End Queue

然后,使用以下命令提交一个使用一个license1资源的批处理作业:

% bsub -q license1 myjob

当许可证可用时,LSF会立即运行您的作业;当所有许可都在使用时,LSF将作业放入队列,并在许可可用时分派它们。这样,您的所有许可证都得到了最大的利用。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值