Compiler-Cluster

Pascal, Basic und andere nicht aufgelistete
mfro
Beiträge: 346
Registriert: Mi Jan 16, 2013 4:58 pm

Re: Compiler-Cluster

Beitrag von mfro » Di Aug 23, 2016 10:56 am

Xin hat geschrieben:...Weiterhin könnte man das weiter optimieren, wenn man die ganze Kompiliererei von der SSD direkt komplett in den RAM verlegt...
Auf jeder Linux-Maschine gibt's eine "altmodische" Ramdisk (/dev/ram[0-9]). Die kannst Du (zumindest für die Zwischendateien) beim Compilieren nutzen, wenn Du $TMPDIR dahin umbiegst.

Allerdings wirst Du wahrscheinlich vom Ergebnis ziemlich enttäuscht sein. Der Linux Buffer-Cache (der immer das gesamte, freie RAM benutzt, solange das nicht jemand anders haben will) ist *sehr* viel schneller.
It's as simple as that. And remember, Beethoven wrote his first symphony in C.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Compiler-Cluster

Beitrag von Xin » Di Aug 23, 2016 12:51 pm

mfro hat geschrieben:Allerdings wirst Du wahrscheinlich vom Ergebnis ziemlich enttäuscht sein. Der Linux Buffer-Cache (der immer das gesamte, freie RAM benutzt, solange das nicht jemand anders haben will) ist *sehr* viel schneller.
Hehehe, das befürchte ich. Und danke, dass Du mir da Mut für ein derartiges Experiment machst. :D
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Compiler-Cluster

Beitrag von Xin » So Aug 28, 2016 10:34 pm

Soo... mal einen aktuellen Stand der Sache. :)

Um ein wenig Erfahrungswerte zu sammeln, habe ich den Server nun ausgebaut. Mein i7-860 (2,8 Ghz, Quadcore, 8 Threads) braucht für meinen Test-Build 47 Sekunden auf einer SSD mit 16GB DDR3-1600 Ram in DualChannel. Der i7 schafft bei cpu-benchmark.net 5089 Punkte.
Der Server kommt mit einer Xeon E5620 CPU (2,4GHz, Quadcore, 8 Threads, 4887 Punkte), läuft mit 2x 4GB mit 1066er Frequenz, Dual-Channel. Auf einem RAID-Controller braucht er 66 Sekunden für den Testbuild.
Das Board ist ein S5500BC, da passen 2 CPUs drauf, also habe ich am Donnerstag einfach mal eine zweite 5620CPU gekauft (9,80 Euro inkl. Versandkosten) und zwei neue Lüfter, da der originale Intellüfter akkustisch mit einem Staubsauger konkurriert - und vermutlich trotz geschlossenem Gehäuse gewinnt.
Gestern kam der Kram an, heute eingebaut. Zunächst das positive: Alles läuft problemlos und man braucht keinen Gehörschutz mehr, wenn man sich im gleichen Zimmer aufhält.
Da ich nur 2 RAM-Riegel habe, verteile ich sie auf beide CPUs, jede CPU hat nun also 1x4 GB, entsprechend muss ich auf Dual-Channel verzichten.
Der Testbuild wird schneller: 56 Sekunden.
Da hatte ich mir mehr versprochen.
Ich habe nun noch flott eine SSD eingebaut. Hier hat mir mfro ja bereits Mut gemacht, dass die Puffer hier einiges abfedern. Die Build-Zeit beschleunigt sich auf 54 Sekunden...
Ich muss sagen, dass ich mir da auch mehr versprochen hatte, da der Wechsel auf SSD beim i7 für mächtig Schub gesorgt hat.

Hauptunterschied ist nun erstmal die RAM-Geschwindigkeit. Schnelleres RAM unterstützt der 5620er aber nicht. Von Dual-Channel erwarte ich hier auch nicht so viel.

Ich hatte überlegt, 4 Riegel 1333er RAM zu kaufen (ca.100 Euro) und zwei Xeon X5675 (Hexacore, 12 Threads, 8570 Punkte, ca. 2x 125). Jetzt muss ich aber sagen, dass mich die Beschleunigung mit einer zweiten CPU jetzt nicht wirklich vom Hocker gehauen hat.
Ich also auch nicht erwarte, dass sich das wirklich lohnt, da weitere 350 Euro reinzustecken.

Schaue ich mir mit htop an, wie die einzelnen CPUs ausgelastet sind, sehe ich auch einmal, dass all 16 Threads unter Volllast laufen. Aber die meiste Zeit langweilen sich die meisten Threads, aber ich weiß nicht, weshalb. :-/
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Compiler-Cluster

Beitrag von Xin » So Aug 28, 2016 11:00 pm

Und noch eine Erkenntnis: Schrödingers Compiler, wenn man wegschaut, arbeitet er schneller: Wenn man das Skript nicht über die Konsole am Server startet, sondern über das Netzwerk, oder die Konsole wechselt kommen wir runter auf 51 Sekunden.
Pro Datei wird eine Zeile ausgegeben, was meineserachtens eigentlich einen überschaubaren Output darstellt.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Compiler-Cluster

Beitrag von Xin » Di Okt 04, 2016 7:19 pm

In den letzten Tagen konnte ich nochmal ein wenig experimentieren. Meine Vermutung, dass die SSD nicht schnell genug Daten liefern kann, hat sich nicht bestätigt: top weist keine Wait-States auf, was auf Wartezeiten auf Daten gewertet werden könnte.
Damit kann man die SSD ausschließen und neu auf die Suche gehen.

Ich habe dann mal den Linux-Kernel runtergeladen und kompilieren lassen. Mein (inzwischen von 2,8 auf 3,6GHz übertakteter) i7-860 braucht 16 Minuten mit 8 Threads unter Volllast, der Dual-CPU Server läuft ebenfalls durchgehend unter Volllast mit 16 Threads und beendet die Kompilierung nach 12 Minuten. Keine Wait-States.

Einen Unterschied zwischen C und C++ sehe ich hier nicht unbedingt, also bleibt erstmal über, dass das Makefile vom Linux-Kernel vermutlich optimal ist und mein selbstgeschriebenes nicht. Tatsächlich ruft mein File sich mehrfach selbst auf, was bedeutet, dass die Konfiguration des Makefiles mehrfach neu gesetzt werden müsste.

Ich bin allerdings nicht der Meinung, dass das soviel ausmachen würde.
Also experimentiere ich jetzt mal mit einfacheren Makefiles: Ein Makefile, was ein für diesen Rechner optimiertes Makefile generiert, welches man anschließend zum Kompilieren nutzt. Mal gucken, ob ich damit mehr Leistung auf's Kompilieren bekomme.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Compiler-Cluster

Beitrag von Xin » Di Okt 04, 2016 8:49 pm

Xin hat geschrieben:Ich bin allerdings nicht der Meinung, dass das soviel ausmachen würde.
Also experimentiere ich jetzt mal mit einfacheren Makefiles:
Erstes Testergebnis: Ein Makefile schreibt nahezu alle Variablen aus, das generierte Makefile sieht also sch... aus, aber das lohnt sich durchaus schonmal...

Altes Makefile:

Code: Alles auswählen

real    0m3.435s
user    0m12.492s
sys     0m0.976s
Generiertes Makefile:

Code: Alles auswählen

real    0m2.360s
user    0m14.212s
sys     0m1.112s
Beide Zeiten sind auch sehr stabil.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten