The ElectricSimulator report predicts build performance on a variety of cluster sizes. The report lets you simulate build performance with or without GCC, CL, or Jack job caching enabled, with or without schedule optimization enabled, and with or without parse avoidance enabled. The bottom bar in the bar chart is the best possible estimated build time.
The report includes a Second series checkbox, which lets you set two combinations of the above simulation options at the same time, so you can compare two predicted performances on one chart. Multiple job-cache types can also be specified in the same series. The Jack job cache selection includes the time saved by javac job caching.
This report is also available from the command line. For details, see ElectricSimulator Report.
The report requires --emake-annodetail=waiting
. It will have more accurate results if the annotation file is generated by a build with the --emake-jobcache=cl
, --emake-jobcache=gcc
, and/or --emake-jobcache=jack
options enabled.The GCC and Jack options let you simulate eMake performance when both corresponding job cache options are enabled.
-
The GCC job cache simulation assumes that any job with an output target ending with
.o
will be eligible for caching. This includes clang and clang++ compilations. -
The CL job cache simulation assumes that any job with an output target ending with
.obj
will be eligible for caching. -
The Jack job cache simulation assumes that any job with an output target ending with
.jack
,.dex
, or.jar
is eligible for caching.
If JobCache is not enabled in the build, the report uses reasonable estimates of the gains for each job that is eligible for caching.
This report incorporates terminator lag into the simulation. Terminator lag time is the time that the terminator is active after the completion of the last job in the build. For details about the terminator (and the Terminator Lag report), see Terminator Lag Report.
The terminator lag is indicated in dark green:
The simulator time results are estimates only. They do not indicate guaranteed performance. |
Setting the parameters for numbers of agents
There are three parameters for numbers of agents:
-
Min —Minimum number of agents to simulate. The default is 16.
-
Max —Maximum number of agents to simulate. The default is 128.
-
Interval —Number of agents to increment the count each time. The default is 16.
Setting the simulation options
-
Optimize Schedule —Enables or disables simulation with the schedule optimization feature, which uses performance and dependency information from previous builds to optimize the runtime ordering of jobs in subsequent builds. Schedule optimization is enabled by default in builds, but even if you have disabled schedule optimization, the report can accurately predict schedule optimization results.
-
Parse Avoidance —Enable or disables simulation with the parse avoidance feature, which caches and reuses parse result files to speed up both full and incremental builds by minimizing makefile parse time. Parse avoidance is not enabled by default in builds; with parse avoidance disabled, the report attempts to simulate the effects of parse avoidance, but it must make assumptions that make the report results less accurate.
-
Jobcache —Enables or disables simulation with the JobCache feature. The feature lets a build avoid recompiling object files that it previously built, if their inputs have not changed. You can select one or more of the JobCache types ( GCC, CL, and/or Jack ) to simulate their usage simultaneously. For details about the feature, see Job Caching.
The annotation file includes the duration of each job that populated the cache, so that the simulator can accurately simulate a build without JobCache by using only annotation from a build with JobCache.
Job cache annotation is included in basic annotation. Even without job cache enabled in the build, the report attempts to simulate the effects of JobCache, but it must make assumptions that make the report results less accurate.
For details about basic annotation and other annotation levels, Annotation.