Preemption Timing
The preemption subsystem has a complex behavior, controlled by many delays that are described in this section.
Preemption Cycle
A preempt
cycle is set within the policy.tcl
server configuration file. The unit is in seconds. The default value 3 seconds,
No Preemption After Resumption
Job resumption is supported by the property PREEMPTRESUME
. In
VovPreemptRule, this function is supported by
-skipresumedjob TIMESPEC
. The default value is 2 minutes.
Job Too Young to Preempt
This delay depends on the resource. This function is represented by the variable PREEMPT($resmap,delay). The option is -delay in VovPreemptPolicy. The default value is 5 seconds.
Minimum Bucket Age to Trigger Preemption
PRULES($rule,bucketage)
, controlled by the
option -bucketage in VovPreemptRule. The
default value is zero; there is no minimum age for firing the rule. Resource Reservation Time
When the resource is reserved for the preempting job, the preempting method used is
RESERVE. With preemption rules, this reservation time is represented by
PRULES($rule,reservetime)
, which is controlled by the option
-reservetime in VovPreemptRule. The default
value is 30 seconds.
Too Early to try lmremove
If the age of a checkout assigned to a job is less than 2 minutes. This is hard coded.
Do not Preempt a Resumed Job
If a job has
just been resumed, it is recommended to not allow the job to immediately be
preempted. Instead, allow the job time to settle and give Accelerator time to figure out which licenses the job is using. This
preempt method is represented by PRULES($rule,skipresumedjob)
,
which can be set with option -skipresumedjob TIMESPEC in
VovPreemptRule
Kill Instead of Suspend a Job
If a job is younger than a certain age, we prefer killing and resubmitting it rather
than suspending and resuming it. This is represented by
PRULES($rule,killage)
and is controlled by the
-killage option in VovPreemptRule.
The default value is 2 minutes. A value of zero disables the killing.
Do not Disturb a Top Job
If a job successfully triggered a preemption, you do not want that job to be bothered
for some time. This is represented by PRULES($rule,donotdisturb)
,
which is controlled by the option -donotdisturb in
VovPreemptRule.
The default value is 10 minutes.
Safe Job Control Timeout
This is the time preemption waits for the signals to have effect. Typically the
signals have immediate effects. However it has been noticed that SIGTSTP may take
many seconds to take effect. This is represented by the variable
vovpreempt(timeout,safejobcontrol)
. The default value is 30s.
The valid range is between 1s and 2m, and it is silently enforced.
Failed Preemption, Job-to-Watch Timeout
If a job cannot be preempted, it is put into a "jobs-to-watch" list for the time
specified by vovpreempt(timeout,jobstowatch)
. The default value is
30m.