Predictive Execution
Predictive execution is feature that enhances the parallelization of tasks by allowing task to spawn out of order. In most cases, this speeds up your builds, however it depends on each environment and in a small number of cases it can actually slow down your builds. Therefore, we recommend trying it to determine if it is effective for your use case.
Note: Starting with version 10.1, the predictive execution implementation was modified and this may change your results.
Predictive execution can be applied to builds with Visual Studio, MSBuild C++, and Android NDK compilations.
You can enable or disable this feature in the Agent Settings > Visual Studio Builds > Advanced tab.
Overriding the Agent's Predictive Execution Setting on a Single Build
Regardless of whether predictive execution is enabled or disabled in the user interface, you can manually enable or disable it for a single build using the command line.
When using BuildConsole commands, using the /pemode flag. /pemode=0 disables predictive execution, while /pemode=2 enables it.
Supported MSBuild Versions
This feature is tightly integrated with MSBuild. Therefore, it requires the Incredibuild team to certify each MSBuild version that is released by Microsoft prior to allowing the predictive execution feature to be used.
If the MSBuild version you are working with is higher than any of the versions listed below, you can either contact Incredibuild’s support at support@Incredibuild.com and ask us to certify this version, or you can try manually instructing Incredibuild to use the predictive execution feature with the MSBuild version you are currently using and see whether you receive the expected results.
Incredibuild 10.1 and higher:
-
Visual Studio 2022 MSBuild 32 or 64 bit, all versions of MSBuild
-
Visual Studio 2019 and higher, all version of MSBuild.
-
Visual Studio 2017 supports MSBuild up to version 15.9.21.664
-
Visual Studio 2015 supports MSBuild up to version 14.0.27530.0
-
Visual Studio 2013 supports MSBuild up to version 12.0.40629.0
-
Visual Studio 2012 supports MSBuild up to version 4.8.3761.0.
-
Visual Studio 2010 support MSBuild up to version 4.8.3752.0
Incredibuild 10.0.4:
-
Visual Studio 2022 MSBuild 32 bit up to version 17.0.0.80000
-
Limitation: Visual Studio 2022 Preview 5 MSBuild 64 bit is not supported
-
-
Visual Studio 2019 supports MSBuild up to version 16.200.19.32702
-
Visual Studio 2017 supports MSBuild up to version 15.9.21.664
-
Visual Studio 2015 supports MSBuild up to version 14.0.27530.0
-
Visual Studio 2013 supports MSBuild up to version 12.0.40629.0
-
Visual Studio 2012 supports MSBuild up to version 4.8.3761.0.
-
Visual Studio 2010 support MSBuild up to version 4.8.3752.0
Manually Enabling Predictive Execution for an MSBuild Version
If the MSBuild version you are using is not listed above and you’d like to try enabling the predictive execution feature regardless, or if the MSBuild version installed on your host machine is listed above as supported by the Incredibuild version you are currently using, and you see a warning message in the Incredibuild Build Monitor directing you to this page, do the following:
-
Open the Coordinator Monitor from the machine on which the Coordinator is installed, by right-clicking the Incredibuild tray icon->Coordinator Monitor.
-
Select all the Initiator machines in the Agents list (you can also select all the Agents if it's easier for you).
-
Right-click and choose the popup menu option "Set Registry Value".
-
In the dialog box that appears, enter the following:
-
Category: Builder
-
Name: MSBuildMaxSupportedVersionXX.X (XX.X is the version number corresponding to the Visual Studio version. See the list below)
-
Data: <current MSBuild version>
-
- The XX.X version number above should be replaced according to your Visual Studio version as follows:
- Visual Studio 2010 -> 10.0
- Visual Studio 2012 -> 11.0
- Visual Studio 2013 -> 12.0
- Visual Studio 2015 -> 14.0
- Visual Studio 2017 -> 15.0
- Visual Studio 2019 -> 16.0
-
Your Incredibuild Initiators should now be able to benefit from the additional performance boost provided by the Incredibuild Predictive Execution feature.