Platform LSF Administration Guide Version 6.2

Chapter 14
Preemptive Scheduling
Administering Platform LSF
253
How Preemptive Scheduling Works
Preemptive scheduling occurs when two jobs compete for the same job slots. If a high-
priority job is pending, LSF can suspend a lower priority job that is running, and then
start the high-priority job using the job slot that becomes available. For this to happen,
the high-priority job must be pending in a preemptive queue, or the low-priority job
must belong to a preemptable queue.
By default, when multiple preemptable jobs exist (low-priority jobs holding the required
slots), LSF preempts a job from the least-loaded host.
The preempted job is resumed as soon as more jobs slots become available; it does not
necessarily have to wait for the preempting job to finish.
Queues that can preempt others are more aggressive in scheduling jobs because a slot
that is not available to a low-priority queue might be available (by preemption) to a high-
priority queue.
By default, job slot limits are enforced based on the number of job slots taken by
running and suspended jobs. With preemptive scheduling, the suspended jobs dont
count against certain job slot limits. This means that when one job is suspended, another
job can be started in its place.
LSF makes sure that the number of running jobs never exceeds the job slot limits. When
LSF tries to place a preemptive job, LSF considers each job slot limit, but for certain job
slot limits, LSF only counts the job slots used by running jobs that are not preemptable.
Then, if starting the preemptive job would violate job slot limits, LSF suspends one or
more low-priority jobs.
Job slot limits affected by preemptive scheduling
When you enable preemptive scheduling, you automatically affect the following job slot
limits:
Total job slot limit for hosts, specified at the host level (SLOTS and HOSTS in
lsb.resources)
Total job slot limit for individual users, specified at the user level (SLOTS and
USERS in
lsb.resources); by default, suspended jobs still count against the
limit for user groups
You can configure preemptive scheduling to affect following limits:
Total job slot limit for user groups, specified at the user level (SLOTS and USERS
in
lsb.resources); if preemptive scheduling is enabled, suspended jobs never
count against the limit for individual users
Total number of jobs for users and user groups, specified at the host level (SLOTS,
PER_USER=all, and HOSTS in
lsb.resources)
Per-processor job slot limit for individual users, specified at the user level
(SLOTS_PER_PROCESSOR, USERS, and PER_HOST=all in
lsb.resources)
Per-processor job slot limit for user groups, specified at the user level
(SLOTS_PER_PROCESSOR, USERS, and PER_HOST=all in
lsb.resources)