<div dir="ltr">Hi<div><br></div><div>What was the rationale behind the choice of the default for the number of jobs for the waf build system?</div><div><br></div><div>I know there isn't a good default because there is a huge difference between being able to completely use a computer or just do build more or less in the background.</div><div><br></div><div>Historically, the number needed to be 1.5-2x the number of cores. This was usually recommended because you could overlap compilation with reading source and writing objects. With modern faster disk subsystems, it seems the ratio needs to be on the order of 3x</div><div><br></div><div>On the 8-core Xeon I have been testing on, evn -j24 with waf only sustains ~80% CPU usage. The default of 8 leaves a much lower utilization. Based on my builds so far, I think -j24 is giving me build times around 1/3 of -j8. For 100s of BSP configurations, this is substantial and the machine is not swamped.</div><div><br></div><div>GNU make has a -l for a load average option. Something like this might be worth considering. This is from the man page:<br><br>====================<br>   When the system is heavily loaded, you will probably want to run<br>fewer jobs than when it is lightly loaded.  You can use the `-l' option<br>to tell `make' to limit the number of jobs to run at once, based on the<br>load average.  The `-l' or `--max-load' option is followed by a<br>floating-point number.  For example,<br><br>     -l 2.5<br><br>will not let `make' start more than one job if the load average is<br>above 2.5.  The `-l' option with no following number removes the load<br>limit, if one was given with a previous `-l' option.<br></div><div><br></div><div>  ==================== </div><div><br></div><div>Anyway, for faster builds, the current default -j is too low since it doesn't allow for overlappying IO and computation. </div><div><br></div><div>--joel <br></div></div>