Distributed Scheduling Overview

The adTempus Distributed Scheduling feature allows you to manage jobs on a single Controller instance of adTempus but execute the jobs on remote Agent computers that also have adTempus installed.

With Distributed Scheduling, users connect to the Controller adTempus instance to manage jobs, and specify which Agents the jobs should run on. The Controller then sends the jobs to the Agents for execution.

With Distributed Scheduling enabled, each Job Queue has options that determine how and where jobs assigned to that Queue will execute. Jobs can be executed on any combination of the Controller and Agent computers.

Although jobs are sent to the Agents for execution, they are still managed through the Controller, and the status and history for jobs running on Agents are reported back to the Controller. Thus the Console shows the status and history of a job on all the Agents that it runs on. Jobs sent to an Agent from the Controller cannot be modified on the Agent.

Distributed Scheduling Modes

Each Queue executes its jobs in one of three Distributed Scheduling modes: Mirror, Basic, or Load Balancing.

Note that the mode is set for a particular Queue and affects all jobs assigned to that Queue. Each Agent can run jobs from any number of Queues using any of the modes (that is, an Agent is not limited to executing in a single Distributed Scheduling mode).

Mirror

In Mirror mode, the job is copied to all of the Agents attached to the Queue. The trigger(s) for the job are then evaluated separately on each agent, so the job operates completely independently on each Agent. This mode is essentially equivalent to replicating jobs to the remote Agent. Since the jobs run completely independently of the Controller, they are able to execute even if the Controller adTempus instance is not running, or the network connection between the Controller and Agent is lost.

Changes made to the job on the Controller are sent to the affected Agents, and status and history changes from the Agents are sent back to the Controller.

Basic

In Basic mode, the trigger(s) for the job are evaluated only on the Controller. When the job is triggered, the Controller sends the job to each Agent for execution. In this mode, jobs are pushed out to the Agent at execution time, so the Controller computer must be running. If an Agent is not available at execution time, the Controller can queue the execution command to be sent to the Agent when communications are re-established.

Load Balancing

In Load Balancing mode, the trigger(s) for the job are evaluated only on the Controller. When the job is triggered, adTempus runs the job on only one of the computers (Controller or Agents) assigned to the Queue. It selects the best computer based on the current load on each computer.

adTempus compares the load based on the criteria listed below, checking them in the order listed. If all available computers have the same load (within a tolerance range) for one criterion, adTempus moves on to the next, and so on, until a "best" target is found.

Evaluation criteria (in order of application):

Rule Name Description
adTempusLoad Selects the target with the lowest average adTempus load (active jobs and adTempus CPU utilization)
QueueLoad Selects the target with the lowest average queue load (number of active and pending jobs for queue)
AgentPriority Selects the target with the highest Agent priority (assigned in the Remote Execution Options settings)
CPUUsage Selects the target with the lowest average CPU usage for the machine
MemoryAvailable Selects the target with the highest average memory available on the computer
ControllerLast All else being equal, the job is run on an Agent rather than on the Controller
Random Selects a target at random. Note: Any rules that are ordered to come after this rule will never be used.
MemoryUsage Selects the target with the lowest average memory usage for all processes on the computer (% of max)
ControllerFirst All else being equal, the job is run on the Controller rather than on an Agent

Averages are calculated over the previous 10 minutes with 5-second sampling intervals.

Changing Load Balancing Rules

The order of the rules used for Load Balancing can be changed using the "LoadBalance:TestRules" Advanced Server Option. Set this option to a comma-delimited list of the Rule Names shown above, in the order that the rules should be applied. For example, the default set of rules shown above is specified as

adTempusLoad,QueueLoad,CPUUsage,MemoryAvailable,AgentPriority,ControllerLast,Random

Any rule that you do not include in the list is appended to the list in its default order. Therefore you should always end your list with the "Random" rule to prevent other rules from being used.

For example, if you only want to look at the adTempus job load, set the option to

adTempusLoad,Random

This tells adTempus to look at the job load and if those values are all equal, select an agent randomly.