On Mon, 2018-05-21 at 08:36 +0200, Garreau, Alexandre wrote: > Then I discovered --load-average, and I’m asking myself wether the > optimum is -j n+1, -l 1.0, or -l n or n+1?
IMO, there are too many problems with choosing any value as the default value: * It's not so simple to determine the number of CPUs, portably. * Many makefiles invoke commands that themselves are multi-threaded and for these commands you definitely don't want to choose a -j value with "# of CPUs" parallelism. * Many users of makefiles want to do other things with their systems in addition to builds, and don't want to choose a -j or -l value that makes their system slow or unusable. They'd rather their builds take longer. * There are other metrics besides # of CPUs that need to be taken into consideration; for example memory. I have a build environment which builds 200 different C++ programs, each of which ends up to be 200M or so, and the linker takes huge amounts of memory. If I use -j8 on my 8-core system and the rebuild only needs to re-link, my entire system will hang for many minutes swapping RAM (I can't even move the mouse), even though I have enough CPUs. If I choose -j5 or -j6, it works much better. _______________________________________________ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make