Man kann make ordentlich Beine machen, da meist Multicore-Systeme compilieren. Mit
make -j _x_
wobei _x_ mit einer Zahl gleich oder etwas größer der Core-Anzahl zu ersetzen ist, kann man die Compilezeit extrem verringern. Hier ein Beispiel einer Kernel-Übersetzung (3.8.0) auf einer 16-Core-Maschine:
Dabei war ein Core durch andere Prozesse zu ca. 100% ausgelastet. Dadurch sind Schwankungen um einige Sekunden möglich. Außerdem gibt es eine "Sockelzeit", da der Build-Prozess auch einige Teile enthält, die nicht ein reines make sind und sich nicht parallelisieren lassen. Wenn die Thread-Zahl wesentlich über der Core-Zahl liegt, gibt es wieder eine Verschlechterung der Performance durch den Overhead der Prozessverwaltung.
Man kann make ordentlich Beine machen, da meist Multicore-Systeme compilieren. Mit
make -j _x_
wobei _x_ mit einer Zahl gleich oder etwas größer der Core-Anzahl zu ersetzen ist, kann man die Compilezeit extrem verringern. Hier ein Beispiel einer Kernel-Übersetzung (3.8.0) auf einer 16-Core-Maschine:
_x_ .. Build-Zeit in Sekunden
ohne .. 2535
8 .. 420
16 .. 283
18 .. 290
20 .. 286
30 .. 291
Dabei war ein Core durch andere Prozesse zu ca. 100% ausgelastet. Dadurch sind Schwankungen um einige Sekunden möglich. Außerdem gibt es eine "Sockelzeit", da der Build-Prozess auch einige Teile enthält, die nicht ein reines make sind und sich nicht parallelisieren lassen.
Wenn die Thread-Zahl wesentlich über der Core-Zahl liegt, gibt es wieder eine Verschlechterung der Performance durch den Overhead der Prozessverwaltung.
Neugier pur: 16 core Maschine, was ist denn das für ein Teil.
Um mal eine Runde anzugeben: Von der Maschine, wo ich gerade eingeloggt bin:
~> grep processor /proc/cpuinfo | wc -l
80
:-D
Sollte kein Protzen sein ... Ist halt ein Server ProLiant DL580 G5 mit vier Quadcores.