Specifications
14. Advanced topics for running flows
14.1 Scheduling jobs
Objectives for scheduling jobs
The Switch job scheduler has the following (sometimes conflicting) objectives, in order of
importance:
• Maximize overall throughput, that is, process as many jobs as possible in a given amount of
time.
• Allow users to specify individual job priorities: a task for a job with a higher priority should
be executed first. This can be used to “rush” a particular job through a flow, or to define a
high-priority flow (by assigning a priority to all jobs in the flow).
• Process jobs in order of arrival, that is, jobs should arrive at the end of a flow in the order
they were placed in the flow to begin with (FIFO = first-in/first-out).
These objectives are not absolute: enforcing some particular order of execution to the letter
would sacrifice throughput and/or overly complicate the implementation.
Internal job ticket
To support these objectives, the internal job ticket for each job stores the following fields:
• Job priority: a signed integer number that determines the priority of the job; a higher number
indicates a higher priority; the default priority is zero.
• Arrival stamp: a signed integer number that indicates the order in which this job first arrived
in a flow, as compared to other jobs.
Execution slots
The scheduler manages a number of slots in which tasks can be executed in parallel. The maximum
number of concurrent slots is determined for each category of tasks as described in the following
table:
Maximum concurrent slots for
this category
Task types in this categoryTask category
3Copying & moving jobs, basic tools in
Sunrise framework
Disk
3 + “Concurrent external
processes” preference
Light scripts (see below)Light
“Concurrent external processes”
preference
(Un)Compress, configurators in Sunrise
framework, heavy scripts (see below)
Processor
210
Enfocus Switch 10










