Automatic time-based configuration
Variable configuration is used to automatically change LSF configuration based on time windows. It is supported in the following files:
- lsb.hosts
- lsb.params
- lsb.queues
- lsb.resources
- lsb.users
- lsf.licensescheduler
- lsb.applications
You define automatic configuration changes in configuration files by using if-else constructs and time expressions. After you change the files, reconfigure the cluster with the badmin reconfig command.
The expressions are evaluated by LSF every 10 minutes based on mbatchd start time. When an expression evaluates true, LSF dynamically changes the configuration based on the associated configuration statements. Reconfiguration is done in real time without restarting mbatchd, providing continuous system availability.
In the following examples, the #if, #else, #endif are not interpreted as comments by LSF but as if-else constructs.
lsb.hosts example
Begin Host
HOST_NAME r15s r1m pg
host1 3/5 3/5 12/20
#if time(5:16:30-1:8:30 EDT
20:00-8:30 EDT
)
host2 3/5 3/5 12/20
#else
host2 2/3 2/3 10/12
#endif
host3 3/5 3/5 12/20
End Host
lsb.params example
# if 18:30-19:30 is your short job express period, but
# you want all jobs going to the short queue by default
# and be subject to the thresholds of that queue
# for all other hours, normal is the default queue
#if time(18:30-19:30 EDT
)
DEFAULT_QUEUE=short
#else
DEFAULT_QUEUE=normal
#endif
lsb.queues example
Begin Queue
...
#if time(8:30-18:30 EDT
)
INTERACTIVE = ONLY # interactive only during day shift #endif
#endif
...
End Queue
lsb.users example
From 12 - 1 p.m. daily, user smith has 10 job slots, but during other hours, user has only five job slots.
Begin User
USER_NAME MAX_JOBS JL/P
#if time(12-13 EDT
)
smith 10 -
#else
smith 5 -
default 1 -
#endif
End User
Create if-else constructs
The if-else construct can express single decisions and multi-way decisions by including elif statements in the construct.
If-else
The syntax for constructing if-else expressions is:
#if time(expression)statement#elsestatement#endif
The #endif part is mandatory and the #else part is optional.
elif
The #elif expressions are evaluated in order. If any expression is true, the associated statement is used, and this terminates the whole chain.
The #else part handles the default case where none of the other conditions are satisfied.
When you use #elif, the #else and #endif parts are mandatory.
#if time(expression)
statement
#elif time(expression)
statement
#elif time(expression)
statement
#else
statement
#endif