On 03/11/2015 11:49 AM, stan wrote:
On Wed, 11 Mar 2015 11:34:25 +0100 Heinz Diehl htd+ml@fritha.org wrote:
It's the limiting to one process which causes what you observe. 1 process can not get more resources that 100%. The CPU scheduler handles how they are distributed.
I think this is the key. What is the point of -j6 or -j8 if the make can't spawn additional processes with their own limits, and thus take advantage of more resources that are available? What is it that limits a process and its children from using more resources than a single core, even though they are available?
We're thinking in terms of one machine with multiple cores here. What about an environment with multiple machines (each possibly with multiple cores). Now you have *many* more possibilities of where to run compiles with -j. Consider (for example) distcc. It can be configured to run build components on different machines (configurable per machine as to how many). So now, the -j 10 or -j 20 has more possibilities for distributing the load during the "make".