Um ein Softwarepaket auf einer Workstation mit vielen CPU - Kerne (etwa 12) zu kompilieren, nimmt die Konfigurationsphase oft viel länger als die eigentlichen Übersetzungsstufe , weil ./configure
die Tests tut eins nach dem anderen, während make -j
Läufe gcc
sowie andere Befehle parallel.
Ich halte es für eine enorme Verschwendung von Ressourcen, wenn die verbleibenden 11 Kerne die meiste Zeit im Leerlauf sitzen und darauf warten, dass die langsame ./configure
Ausführung abgeschlossen ist. Warum müssen die Tests nacheinander durchgeführt werden? Hängt jeder Test voneinander ab? Ich kann mich irren, aber es sieht so aus, als wären die meisten von ihnen unabhängig.
Was noch wichtiger ist: Gibt es Möglichkeiten zur Beschleunigung ./configure
?
Bearbeiten: Um die Situation zu veranschaulichen, ist hier ein Beispiel mit GNU Coreutils
cd /dev/shm
rm -rf coreutils-8.9
tar -xzf coreutils-8.9.tar.gz
cd coreutils-8.9
time ./configure
time make -j24
Ergebnisse:
# For `time ./configure`
real 4m39.662s
user 0m26.670s
sys 4m30.495s
# For `time make -j24`
real 0m42.085s
user 2m35.113s
sys 6m15.050s
Mit coreutils-8,9 , ./configure
dauert 6 - mal länger als make
. Obwohl ./configure
weniger CPU-Zeit benötigt wird (siehe "user" & "sys" -Zeiten), dauert es viel länger ("real"), da es nicht parallelisiert ist. Ich habe den Test einige Male wiederholt (wobei die relevanten Dateien wahrscheinlich im Speichercache verbleiben) und die Zeiten liegen innerhalb von 10%.