Priority

The scheduling priority affects the order in which the jobs are scheduled. The range is 1 to 15.

Two types of priorities are supported:
  • Scheduling priority: Determine the order in which jobs are scheduled. The range is 1(low) to 15(top).
  • Execution priority: Influence the execution of the job on the remote machine. The range is 1(low) to 15(top).
There are conditions in which lower priorities supersede higher priorities, such as:
  • For the jobs of a given user, higher priority jobs are scheduled before lower priority ones. However, due to the FairShare mechanism, a lower priority job from one user may be dispatched before a higher priority job of another user.
  • A low priority job will be dispatched before a high priority job if the resources for the low priority job are available while the resources for the high priority job are not.

The priority of a job may also be used to decide which job can be preempted. Refer to the Accelerator Administration Guide for more information about Preemption.

Some priority levels have symbolic names, as listed in the following table:
Symbolic Name
Numerical Level
Top
15
High
8
Normal
4
Low
1
In Accelerator, set the priority of a job at submission time with the option -p.
% nc run -p high sleep 10
% nc run -p 12  sleep 10
% nc run -p 12.low sleep 10
The priority can be set from the GUI using the Retrace Priority Flags dialog from the console. With the command vsr, you can use the option -priority (which can be abbreviated to -p) as shown in the example below:
% vsr -p high target           # Use high scheduling priority.
% vsr -p h target              # Abbreviated form.
% vsr -p high.high target      # Set both scheduling and execution priority
The priorities, in conjunction with the resources.tcl file, also affects the amount of parallelism used during retracing:
#
# -- This is a fragment of a resources.tcl file.
# -- Typical priority setup.
#
vtk_resourcemap_set Priority:top     UNLIMITED
vtk_resourcemap_set Priority:high    50
vtk_resourcemap_set Priority:normal  10
vtk_resourcemap_set Priority:low      2

#
# -- This is another example of a resources.tcl file.
# -- Set unlimited parallelism for any level of priority.
# -- However all LOW priority jobs should go to the linux machines.
#
vtk_resourcemap_set Priority:top     UNLIMITED
vtk_resourcemap_set Priority:high    UNLIMITED
vtk_resourcemap_set Priority:normal  UNLIMITED
vtk_resourcemap_set Priority:low     UNLIMITED   linux

This default behavior can be modified with the Resource Management mechanism. Before a job is dispatched to taskers, its resource list is augmented with one resource representing the priority. The name of the resource is Priority:xxx, in which xxx represents the selected standard priority level.

The priority-based parallelism can be adjusted by changing the file resources.tcl.

The maximum priority that can be assigned by a particular user may be limited by the policy layer. To do so, edit the policy.tcl file.

Priorities Relative to Previous Run

When specifying a priority, it is possible to use also the following symbolic values:
Symbolic Name
Meaning
Same
Same priority as before. If not defined, then use low priority.
Incr
Increase previous priority by 1, without exceeding the maximum priority for the user.
Decr
Decrease previous priority by 1, but no less than low priority.
For example:
% vsr -p same -set All:drc
% nc rerun -p incr 000123456

Execution Priority

The execution priority takes the same values as the scheduling priority. This value is ignored on Windows, while on UNIX it is used in a call to nice(). An example of passing this value to nice():
niceValue = 8 - executionPriority;
Note: For TOP priority (15) nice(-7) is called; for LOW priority (1) nice(7) is called.