Certain commercial software packages have a finite number of seats available for use. For instance, Drexel has 200 seats for Matlab. Since Proteus has >2000 processor cores available, it is very easy for Proteus users to consume all available licenses and prevent anyone else on campus from using Matlab. In addition, if licenses for specific Matlab toolboxes have been exhausted, any job submitted which use these licenses would fail.
Mechanism
In order to ensure both that Picotte users do not exhaust licenses, and that Picotte jobs do not fail without warning due to lack of licenses, Slurm local licenses have been defined to restrict the number of simultaneous running instances of certain software.
Generally, use the -L
/--licenses
option to sbatch
, e.g.
#SBATCH --licenses=fluent:1
Please see the individual wiki page for the software you would like to use for details on licenses:
Viewing Available Licenses
Slurm can show license status with the scontrol
command:
[juser@picotte001 ~]$ scontrol show lic
LicenseName=fluent
Total=25 Used=0 Free=25 Reserved=0 Remote=no
LicenseName=stata48
Total=10 Used=0 Free=10 Reserved=0 Remote=no
PROTEUS HAS BEEN DECOMMISSIONED
Mechanism
In order to ensure both that Proteus users do not exhaust licenses, and that Proteus jobs do not fail without warning due to lack of licenses, Grid Engine license resources ("complexes" in GE jargon) have been defined. A system service keeps track of the available licenses from the central license server, and imposes some limits on the total number which may be used by Proteus at any one time.
Examples
To run a Matlab job which uses the Parallel Computing Toolbox (a.k.a. Distributed Computing Toolbox), your job script should request one Matlab seat and one Parallel Computing Toolbox seat:
#$ -l matlab=1
#$ -l distrib_computing_toolbox=1
If there are no available licenses, the job will sit in the pending list until licenses become available.
To run a parallel Abaqus job, you need to compute the number of license tokens needed by the job. This number is a (nonlinear) function of the number of slots requested. For instance:
#$ -pe fixed16 32
#$ -l vendor=intel
#$ -l abaqus=21
Please see the Abaqus#Licenses article for details on how to compute the number of license tokens needed.
Monitoring
To view the number of available seats of particular products, you can
use qstat
.
[juser@proteusi01 ~]$ qstat -F matlab,distrib_computing_toolbox
queuename qtype resv/used/tot. np_load arch states
---------------------------------------------------------------------------------
all.q@ac01n01.cm.cluster BIPC 0/64/64 0.39 lx-amd64
gc:distrib_computing_toolbox=4
gc:matlab=47
---------------------------------------------------------------------------------
all.q@ac01n02.cm.cluster BIPC 0/0/64 -NA- lx-amd64 adu
gc:distrib_computing_toolbox=4
gc:matlab=47
---------------------------------------------------------------------------------
all.q@ac02n01.cm.cluster BIPC 0/64/64 0.41 lx-amd64
gc:distrib_computing_toolbox=4
gc:matlab=47
...
A list of all licenses and usage can be seen online: https://proteusmaster.urcf.drexel.edu/lmstat.html
The same info can be seen using the following command:
[juser@proteusi01 ~]$ lmutil lmstat -a
lmutil - Copyright (c) 1989-2014 Flexera Software LLC. All Rights Reserved.
Flexible License Manager status on Thu 4/21/2016 13:50
License server status: .@oystercatcher,.@goose,.@killdeer
oystercatcher: license server UP v11.11
goose: license server UP (MASTER) v11.11
killdeer: license server UP v11.11
Vendor daemon status (on goose):
MLM: UP v11.11
Feature usage info:
Users of MATLAB: (Total of 200 licenses issued; Total of 153 licenses in use)
"MATLAB" v35, vendor: MLM, expiry: 01-jan-0000
floating license
...