The Scheduler¶
Overview¶
The Scheduler decides which Agent (machine) shall process the workloads, in order to best utilise the spare capacity within the cluster.
There is a single instance of this process within the Turbo Build Cluster.
Install and run it on a server that is not burdened by build workloads, to ensure smooth running of the Cluster.
Its filename is bin\turbo-scheduler.exe. It is installed and runs as a Windows Service called Turbo Scheduler.
Scheduling¶
Each Agent will contact the Scheduler to notify of a new Build Job that requires Scheduling. This will be placed in the Scheduling Queue.
The Scheduling Queue is processed on a dedicated thread and each Build Job is scheduled by the process :
- check each Agent for a Cache 'hit'
- if no cache 'hit', then it will give each Agent a Scheduling Score based on the number of unused CPU Slots and the length of its Pending Build Queue
The Agent with the lowest Scheduling Score will be assigned the Build Job. The Agent that initiated this Build Job will be notified, and it will connect to the assigned Agent and submit its build request.
Build Integrity¶
When distributing a build there is a risk of corruption of the build by a mismatched build environment on a remote machine.
Turbo Build Accelerator prevents this by only scheduling to remote machines with a matching build environment. The matching criteria includes:
- The VisualStudio Version
- The Target Architecture
- The VC Tools Version
- The Windows SDK version
To maximize the build delegation throughout the cluster it is best to have matching build environments on all machines.
Generally speaking it is good practise anyway to have identical (or at least very similar) build environments on all Developer workstations and Build Servers to reduce complexity in the development process.
Configuration¶
See the config\turbo-scheduler.xml file.
For more details on the configuration files see Configuration for more details.
Also see Turbo Monitor Settings for possible configuration via the GUI.