Avoiding Task Execution on the Local Machine
Occasionally, the Agent initiating the build may suffer from a high I/O load as a result of having to manage both file synchronization to and from remote Agents and writing the build’s output to disk. This is especially relevant in the following scenarios:- The initiating machine is utilizing more than one CPU for builds.
- A large number of remote Agents are set to participate in the build.When this is the case, it may be beneficial to prevent the Agent that initiated the build from executing tasks that can also be run by remote Agents – compilation of source files, for example, in order to allow it to dedicate its resources entirely to build management and file synchronization.
Restarting Remote Processes on the Local Machine When Possible
When the local machine is idling, this option (which is enabled by default) enables a “competition mode” where the same task also runs on the local initiator machine. This scenario allows speeding up the task execution as it runs in parallel on both machines; to complete the task, the output from the first machine is applied to the build. Note that if the initiating machine has a high I/O load, this option should not be used, as in this case the competition mode is not efficient. The “Restart remote processes on local machine when possible” option can be enabled/disabled through the Agent Settings dialog Initiator->General page.Utilizing Multiple CPUs/Cores
Incredibuild can utilize multiple CPUs and cores when executing a distributed process. This requires the purchase of a Multi-CPU license for each machine with multiple CPUs/cores (in trial licenses, all Agents automatically utilize up to eight available CPUs and cores). Once this is done, distributable tasks are run using each of the available CPUs/cores, depending on each Agent’s current availability. If the machine’s hardware supports Hyper threading, it is possible to use all logical cores in order to improve performance. This can be set under Agents Settings -> Agent -> CPU Utilization.Moving your Build’s Output Folder to a Fast-performing File System Location
In builds involving a large amount of output data, writing the build’s output files to disk can become a bottleneck and slow down the distribution process. This is especially relevant in the following scenarios:- The Initiating machine is utilizing more that one CPU for builds.
- A large number of remote Agents are set to participate in the build.In these cases, it can be very beneficial to set the project’s output folders to a location that will perform as fast as possible. An ideal location for the project’s output file would be a local, high-performance drive that is not running the Windows system.
Minimizing Directory Access
In certain environments, a performance gain can be obtained by minimizing the number of accesses to directories performed during builds. This is especially common in the following scenarios:- Builds that store input files in network-based file systems.
- Projects using an input file directory tree, which spreads over an unusually large number of directories.