Hallo liebe Dreambox-Gemeinde!
Ich habe mal ausprobiert, was ein Doppelkern für Vorteile beim Erstellen eines OE-Images für die Dreambox bringt.
Ich selbst habe einen AMD Athlon X2 mit 2300 MHz. Bei OE-Version 1.5 kann man mit der Zeile:
PARALLEL_MAKE = "-j n"
in build/conf/local.conf make n-Mal parallel laufen zu lassen.
Beim neuen bitbake 1.8.12 gibt es noch eine 2. Möglichkeit. Mit der Zeile:
BB_NUMBER_THREADS = "n"
kann man n bb-files gleichzeitig bearbeiten.
Mit dem neuen OE 1.6 habe ich ein Image für die Dreambox 7020 erstellt und dabei alle Varianten ausprobiert. Hier die Ergebnisse:
Ohne die beiden Zeilen (nur 1 Prozess aktiv): 3h:45m
mit PARALLEL_MAKE = "-j 2": 2h:37m
mit PARALLEL_MAKE = "-j 3": 2h:32m
mit BB_NUMBER_THREADS = "2": 2h:01m
mit BB_NUMBER_THREADS = "3": 2h:14m
Wahrscheinlich kann PARALLEL_MAKE bei 3 Prozessen die Pausen ausnutzen, wo der Prozessor z.B auf die Festplatte wartet. Bei 4 Prozessen gibt es keine weitere Steigerung mehr, bei 5 Prozessen wird es sogar wieder langsamer. Zum Spaß habe ich das auch mal auf einem älteren Athlon XP mit 2000 MHz ausprobiert. Die Image-Erstellung dauert hier über 4 Stunden. Mit PARALLEL_MAKE = "-j 2" kann man das auch hier um wenige Minuten verkürzen.
BB_NUMBER_THREADS hat wahrscheinlich einen größeren Verwaltungsaufwand, so das man die Zahl der vorhandenen Prozessorkerne nicht überschreiten sollte.
Dann habe ich beide Zeilen kombiniert:
mit BB_NUMBER_THREADS = "2" und PARALLEL_MAKE = "-j 2": 1h:44m
mit BB_NUMBER_THREADS = "2" und PARALLEL_MAKE = "-j 3": 1h:41m
Adenins Skript sollte also unbedingt um die Zeile PARALLEL_MAKE = "-j [Anzahl der CPU-Kerne]" erweitert werden, eventuell sogar [Anzahl der CPU-Kerne]+1.
Die OE-Erstellung lässt sich also ganz gut auf 2 Kerne verteilen. Es wäre interessant zu erfahren, ob das auch noch auf einen Quad-Prozessor zutrifft.