In the kernel spec file the actual compile is done with:- %ifarch i386 i586 i686 make -j $NRPROC bzImage MAKE="make -j $NRPROC" %else make boot MAKE="make -j $NRPROC" %endif make -j $NRPROC modules MAKE="make -j $NRPROC" This should be:- %ifarch i386 i586 i686 make -j $NRPROC bzImage %else make -j $NRPROC boot %endif make -j $NRPROC modules The current version causes considerably more than $NRPROC build processes to be happening at once on machines with more than one CPU. [Each subprocess can fire off $NRPROC processes, which can also.... so you tend towards $NRPROC ^ subdirectory-depth processes :-) Nigel.
Unfortunately, the makefiles do not work right, so the jobserver doesn't work correctly. We used to do make -j $NRPROC and it did not spawn enough processes. As a tradeoff, I'm going to try setting NRPROC=2 on all SMP machines on the theory that 2^n will be enough processes but smaller than m^n and therefore not take over machines so badly. But to go back to just plain make -j will slow down our builds too much and get in the way of our building quickly...