Job Placement Policies

Accelerator supports multiple job placement policies: methods to choose on which tasker to run a job.

JobPlacementPolicy Description
fastest This is the default job placement policy: among all the taskers that can execute a job, choose the one with highest power. The assumption is that a tasker with higher power can complete the job faster.
slowest Among all the taskers that can execute a job, choose the tasker with the least power. This policy may be useful to run regression jobs on older, less powerful hardware.
first As soon as the scheduler finds a tasker to execute the job, it uses that tasker without checking all other taskers. This policy is useful for lowering the scheduling effort.
smallest Among all the taskers that can execute a job, choose the tasker with the least amount of unused slots and unused RAM. This policy tends to pack the jobs on machines that are already busy, thus keeping idle machines available should a large job be submitted.
smallram Among all the taskers that can execute a job, choose the tasker with the least amount of total RAM. This policy is useful to pack the jobs on the smaller machines first, which keeps large machines available should a large job be submitted.
largest Among all the taskers that can execute a job, choose the tasker with the most amount of unused slots and unused RAM. This policy tends to spread the jobs on idle machines. In most cases, this policy may not be the most effective.

Accelerator also supports three CPU-affinity policies for machines that have a NUMA architecture. These policies apply to jobs after they are placed on a specific tasker.

CPU-Affinity Policy Description
pack To keep other CPUs available for larger jobs, try to run multiple small jobs on the same CPU. This is the default CPU-Affinity policy.
spread Try to run multiple small jobs on different CPUs.
none Ignore any CPU affinity constraint. Let the operating system (OS) decide where to run the job.

Choose the Job Placement Policy

At submission time, the option -jpp can be used to specify, at most, one of the job placement policies and one CPU-Affinity policy. The list is comma-separated. If multiple conflicting policies are specified, the last policy on the list will be used.
% nc run -jpp slowest ./my_not_so_important_job
% nc run -jpp slowest,spread ./my_not_so_important_job
% nc run -jpp smallest,pack ./my_job
% nc run -jpp smallram  ./my_job
In a job class, the value of VOV_JOB_DESC (jpp) can be set:
# Fragment of a jobclass definition:
set VOV_JOB_DESC(jpp)  "smallest,pack"