一、簡介
1.1 主要用途
-
某個license feature是否存在。
-
某個license feature總數量是多少。
-
某個license feature當前被哪些人用了。
-
某個license feature的過期日期是哪天。
-
EDA license server及vendor daemon的狀態。(故障警示)
-
全量license feature的數量信息。(總量,使用量)
-
全量license feature的過期信息。(未過期,即將過期,已經過期)
-
全量license feature的使用信息。(誰,什麼時間開始,使用了幾個)
1.2 工作原理
License server status: PORT@HOSTNAME
License file(s) on HOSTNAME: LICENSE_FILE:
HOSTNAME: license server UP (MASTER) v11.16.4
Vendor daemon status (on HOSTNAME):
VENDOR_DAEMON: UP v11.16.4
Feature usage info:
Users of FEATURE1: (Total of 1 license issued; Total of 0 licenses in use)
Users of FEATURE2: (Total of 8 licenses issued; Total of 5 licenses in use)
"FEATURE2" v2021.06, vendor: VENDOR_DAEMON, expiry: 28-sep-2022
vendor_string: UHD:PERM
floating license
USER1 EXECUTE_HOST /dev/pts/1 14165.SUBMIT_HOST (v2018.06) (HOSTNAME/PORT 482), start Sat 6/18 11:35, 4 licenses
USER2 EXECUTE_HOST /dev/pts/2 52926.SUBMIT_HOST (v2018.06) (HOSTNAME/PORT 2845), start Mon 6/20 15:31
...
Feature Version #licenses Vendor Expires
_______ _________ _________ ______ ________
FEATURE1 1.0 1 VENDOR_DAEMON 28-Sep-2022
FEATURE2 2021.06 2 VENDOR_DAEMON 28-sep-2022
...
----------------------------------------------------------------------------
license_dic = {
'license_files': '',
'license_server_status': 'UNKNOWN',
'license_server_version': '',
'vendor_daemon': { vendor_daemon: {
'vendor_daemon_status': 'UP',
'vendor_daemon_version': '',
'feature': {feature: {
'issued': 0,
'in_use': 0,
'in_use_info_string': [],
'in_use_info': [],
},
},
'expires': {feature: {
'version': '',
'license': '',
'vendor': '',
'expires': '',
},
},
},
},
}
二、環境依賴
2.1 操作系統依賴
2.2 python版本依賴
2.3 使用環境依賴
-
可以訪問license server,及當前機器跟license server之間的網絡是通的。
-
環境中配置有正確的LM_LICENSE_FILE設置,lmstat依賴LM_LICENSE_FILE的設置獲取license信息。
三、工具安裝及配置
3.1 工具下載
[liyanqing@cmp1 test]$ git clone https://github.com/bytedance/licenseMonitor.git
Cloning into 'licenseMonitor'...
remote: Enumerating objects: 26, done.
remote: Counting objects: 100% (26/26), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 26 (delta 2), reused 26 (delta 2), pack-reused 0
Unpacking objects: 100% (26/26), done.
3.2 工具安裝
[liyanqing.1987@n212-206-194 tools]$ cd licenseMonitor/
[liyanqing.1987@n212-206-194 licenseMonitor]$ ls
bin common config data docs install.py LICENSE Notice.txt patch README requirements.txt tools
[root@ic-admin1 licenseMonitor]# pip3 install -r requirements.txt
Looking in indexes: https://bytedpypi.byted.org/simple/
Requirement already satisfied: pexpect==4.8.0 in /ic/software/tools/python3/3.8.8/lib/python3.8/site-packages (from -r requirements.txt (line 1)) (4.8.0)
Requirement already satisfied: ptyprocess>=0.5 in /ic/software/tools/python3/3.8.8/lib/python3.8/site-packages (from pexpect==4.8.0->-r requirements.txt (line 1)) (0.7.0)
[root@ic-admin1 licenseMonitor]# python3 install.py
>>> Check python version.
Required python version : (3, 8)
Current python version : (3, 8)
>>> Generate script "/ic/data/usr/liyanqing.1987/tools/licenseMonitor/bin/license_monitor".
>>> Generate script "/ic/data/usr/liyanqing.1987/tools/licenseMonitor/tools/config_product_feature_relationship".
>>> Generate script "/ic/data/usr/liyanqing.1987/tools/licenseMonitor/tools/get_product_feature_relationship".
>>> Generate config file "/ic/data/usr/liyanqing.1987/tools/licenseMonitor/conf/config.py".
Done, Please enjoy it.
3.3 工具配置
# Specify EDA license administrators. (only administrator can execute license_monitor)
administrators = ""
# Set configured LM_LICENSE_FILE for administrators. If False, will get LM_LICENSE_FILE from current terminal.
show_configured_for_admin = True
# Specify lmstat path, just like "***/bin".
lmstat_path = ""
# Specify lmstat bsub command, just like "bsub -q normal -Is".
lmstat_bsub_command = ""
# Specify LM_LICENSE_FILE setting.
LM_LICENSE_FILE = ""
# Specify EDA license product-feature relationship file, you can get the file with "tools/get_product_feature_relationship.py".
product_feature_relationship_file = ""
# The time interval to fresh license information automatically, unit is "second", default is 300 seconds.
fresh_interval = 300
# Specify EDA license administrators. (only administrator can execute license_monitor)
administrators = "luchengxin jiangziyi.1108 liyanqing.1987"
# Set configured LM_LICENSE_FILE for administrators. If False, will get LM_LICENSE_FILE from current terminal.
show_configured_for_admin = True
# Specify the database directory.
db_path = "/ic/software/cad_data/it/licenseMonitor/db"
# Specify lmstat path.
lmstat_path = "/ic/software/synopsys/scl/2021.03/linux64/bin"
# Specify lmstat bsub command.
lmstat_bsub_command = "bsub -q normal -Is"
# Specify LM_LICENSE_FILE setting.
LM_LICENSE_FILE = "\ 1055@ic-lic02:\ ... 27020@ic-lic03"
# Specify EDA license product-feature relationship file.
product_feature_relationship_file = "/ic/software/cad_tools/it/lsfMonitor/config/product_feature_relationship.yaml"
# The time interval to fresh license information automatically, unit is "second", default is 300 seconds.
fresh_interval = 300
四、工具使用
4.1 工具載入
[liyanqing.1987@n212-206-194 licenseMonitor]$ bin/license_monitor *
[2023-01-06 19:08:45] Loading License information, please wait a moment ...
4.2 幫助信息
[liyanqing.1987@n212-206-194 licenseMonitor]$ bin/license_monitor -h
usage: license_monitor.py [-h] [-f FEATURE] [-u USER] [-t {SERVER,FEATURE,EXPIRES,USAGE}]
optional arguments:
-h, --help show this help message and exit
-f FEATURE, --feature FEATURE
Specify license feature which you want to see on "LICENSE/EXPIRES/USAGE" tab.
-u USER, --user USER Specify the user on "USAGE" tab.
-t {SERVER,FEATURE,EXPIRES,USAGE}, --tab {SERVER,FEATURE,EXPIRES,USAGE}
Specify current tab, default is "FEATURE" tab.
4.3 功能介紹
4.3.1 查看license server及vendor daemon狀態
4.3.2 查看feature使用情況
4.3.3 查看expires過期日期
-
黑色:未過期。
-
紅色:兩週內過期。
-
灰色:已過期。
4.3.4 查看usage使用細節
4.3.5 啓動時直接指定feature/user/tab
[liyanqing.1987@n212-206-194 licenseMonitor]$ bin/license_monitor -f vcs -u *** -t USAGE *
[2023-01-28 16:44:26] Loading License information, please wait a moment ...
4.3.6 信息刷新
五、輔助工具
5.1 config_product_feature_relationship
[liyanqing.1987@n212-206-194 tools]$ ./config_product_feature_relationship -h
usage: config_product_feature_relationship.py [-h] [-v {arm,cadence,empyrean,keysight,magillem,mentor,NOC,synopsys,TSRAM,xilinx}] [-l LICENSE_FILE] [-o OUTPUT_FILE]
optional arguments:
-h, --help show this help message and exit
-v {arm,cadence,empyrean,keysight,magillem,mentor,NOC,synopsys,TSRAM,xilinx}, --vendor {arm,cadence,empyrean,keysight,magillem,mentor,NOC,synopsys,TSRAM,xilinx}
Specify vendor.
-l LICENSE_FILE, --license_file LICENSE_FILE
Specify license file.
-o OUTPUT_FILE, --output_file OUTPUT_FILE
Specify output file.
5.2 get_product_feature_relationship
[liyanqing.1987@n212-206-194 tools]$ ./get_product_feature_relationship -h
usage: get_product_feature_relationship.py [-h] [-v VENDORS [VENDORS ...]] -l LICENSE_FILES [LICENSE_FILES ...] [-o OUTPUT_FILE]
optional arguments:
-h, --help show this help message and exit
-v VENDORS [VENDORS ...], --vendors VENDORS [VENDORS ...]
Required argument, specify vendor list, must be the same order of license_files.
-l LICENSE_FILES [LICENSE_FILES ...], --license_files LICENSE_FILES [LICENSE_FILES ...]
Required argument, specify license files.
-o OUTPUT_FILE, --output_file OUTPUT_FILE
Output file, yaml format.
附錄
附1. 變更歷史
日期
|
版本
|
變更描述
|
源代碼變更
|
2023.1.4
|
1.0
|
發佈第一個正式release版本
|
無
|
|
|
|
|