[LSF 最佳实践] LSF浮动软件许可证管理详解
详解LSF管理浮动许可证的三种方法:静态资源、动态资源和License Scheduler
Dec 11, 2025
|
wanlinwang
|
5 min read
概述
浮动软件许可证池通常在 LSF 中表示为数值资源。每个需要许可证的作业必须在其 rusage 表达式中包含许可证需求,以确保在作业调度时有足够的许可证可用。
LSF 提供三种推荐的许可证管理方法:
方法
特点
适用场景
静态数值共享资源
手动配置许可证数量
单集群、许可证数量固定
动态数值共享资源
使用 elim 轮询许可证服务器
多集群共享许可证池
LSF License Scheduler
自动跟踪许可证使用
需要精确许可证管理
方法一:静态数值共享资源
手动在 LSF 配置中编码集群可用的许可证总数。
配置步骤
1. 定义许可证资源
在 lsf.shared 中配置:
1
2
3
4
5
Begin Resource
RESOURCENAME TYPE INTERVAL INCREASING DESCRIPTION
...
lic1 Numeric () N ( application license)
End Resource
2. 映射许可证到所有主机
在 lsf.cluster 中配置:
1
2
3
4
Begin ResourceMap
RESOURCENAME LOCATION
lic1 ( 10@[all])
End ResourceMap
3. 重启服务
1
2
bctrld restart lim
badmin mbdrestart
4. 提交作业
1
bsub -R "rusage[lic1=1]" job_script
注意事项
不适合多集群共享 :一个集群不知道其他集群检出或预留的许可证数量
需要手动更新 :许可证总数变化时需要重新配置 LSF
非精确管理 :如果应用在 LSF 作业外检出许可证,可能导致许可证检出失败
方法二:动态数值共享资源
编写 elim 程序定期从许可证服务器收集可用许可证数量,并报告给 LSF。
配置步骤
1. 定义动态资源
在 lsf.shared 中配置(指定 INTERVAL):
1
2
3
4
5
Begin Resource
RESOURCENAME TYPE INTERVAL INCREASING DESCRIPTION
...
lic2 Numeric 15 N ( application licenses)
End Resource
2. 映射资源(不指定数量)
在 lsf.cluster 中配置:
1
2
3
4
Begin ResourceMap
RESOURCENAME LOCATION
lic2 ([ all])
End ResourceMap
3. 创建 elim 程序
编写 elim 可执行文件从许可证服务器收集可用许可证。详见 External load indices
4. 提交作业(指定 duration)
1
bsub -R "rusage[lic2=1:duration=5]" job_script
Duration 机制
作业提交时指定许可证和 duration
elim 报告可用许可证数量
LSF 调度作业并预留许可证
作业从许可证服务器检出许可证
elim 检测到许可证被使用
duration 过期后,LSF 停止预留
重要 :duration 设置要足够长,让作业有时间检出许可证并让 elim 轮询到许可证服务器。
方法三:LSF License Scheduler Basic Edition
使用 LSF License Scheduler 无需编写和管理 elim,作业也不需要在 rusage 中指定 duration。
工作原理
LSF License Scheduler 定期从许可证服务器获取使用情况
通过匹配许可证检出与作业来跟踪许可证使用
计算 LSF 集群可用的许可证数量
LSF 定期与 License Scheduler 通信获取可用许可证
配置步骤
1. 安装 LSF License Scheduler Basic Edition
2. 配置 lsf.licensescheduler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Begin Parameters
PORT = 9581
HOSTS = LSManagementHost
ADMIN = admin
LM_STAT_INTERVAL = 30
LMSTAT_PATH = /usr/bin
CLUSTER_MODE = y
End Parameters
Begin Clusters
CLUSTERS
myCluster
End Clusters
Begin ServiceDomain
NAME = LanServer
LIC_SERVERS = (( 1770@licHost))
End ServiceDomain
Begin Feature
NAME = lic3
CLUSTER_DISTRIBUTION = LanServer( myCluster 1)
End Feature
3. 启动 License Scheduler
4. 重启 mbatchd
5. 查看许可证资源
1
2
3
4
5
$ bhosts -s
RESOURCE TOTAL RESERVED LOCATION
lic3 2 0.0
server1
server2
6. 提交作业
1
bsub -R "rusage[lic3=1]" job_script
7. 查看许可证使用详情
1
2
3
4
5
6
$ blstat
FEATURE: lic3@ myCluster
SERVICE_DOMAIN: LanServer
TOTAL_TOKENS: 2 TOTAL_ALLOC: 2 TOTAL_USE: 1 OTHERS: 0
CLUSTER SHARE ALLOC TARGET INUSE RESERVE OVER PEAK BUFFER FREE DEMAND
myCluster 100.0% 2 2 1 0 0 1 0 1 0
8. 查看作业许可证使用
1
2
3
4
5
$ blusers -J
JOBID USER HOST PROJECT CLUSTER START_TIME
1 admin server1 default myCluster Aug 27 02:49:11
RESOURCE RUSAGE SERVICE_DOMAIN INUSE EFFECTIVE_PROJECT
lic3 1 LanServer 1 default
方法对比
特性
静态资源
动态资源
License Scheduler
需要 elim
否
是
否
需要 duration
否
是
否
多集群支持
差
良好
优秀
精确度
低
中
高
配置复杂度
低
中
中
参考资料
IBM Documentation - Managing floating software licenses
IBM Documentation - External load indices
IBM Documentation - LSF License Scheduler
Support the Creator
If you found this article helpful, consider supporting.