Compiler-Cluster
Verfasst: Fr Aug 19, 2016 9:22 am
Erfreulicherweise habe ich heute einen Xeon 5620-Server geschenkt bekommen, der zwar schon etwas in die Jahre gekommen ist, aber trotzdem noch halbwegs potent unterwegs ist. Jedenfalls ist er nur wenig langsamer als mein i7-860, den ich als Entwicklungsrechner nutze.
Nun stellt sich für mich die Frage, wie man das kompilieren von Projekten auf zwei (oder besser noch mehr) Rechnern sinnvoll verteilen könnte. Aus dem Grund dieser Thread, was man da basteln könnte.
Im Idealfall würde ich ein Rebuild so auf 8 Thread i7, dem 8 Thread Xeon und meinem 4 Thread NAS verteilen.
Meine Vorstellung gegenwärtig wäre, dass als Vorbereitung sich alle Build-Server per SSHFS das Dateisystem lokal mounten und somit Zugriff auf die aktuellen Quellen haben. Die anderen Libs und dazugehörigen Header (libc, mysql, whatsoever) sind lokal installiert. Statt des GCCs möchte ich nun lokal ein Skript aufrufen, was erstmal guckt, wer den wieviel zu tun hat. Wenn der lokale Rechner nicht ausgelastet ist, sollte der Rechner lokal den GCC starten. Ist er aber ausgelastet, sollte er einen anderen Rechner fragen, ob der Zeit hat. Das wäre im Idealfall der Xeon, da der am zweitschnellsten ist. Wenn der also weniger als 8 Tasks gerade ausführt, soll der Xeon lokal den GCC starten und über SSHFS kompilieren. Wenn der voll ist, würde entsprechend das NAS gefragt.
Soweit die erste Idee. Da fällt mir dann auch noch make ein, welches über den Schalter -j gesagt bekommt, wieviele Tasks eigentlich gleichzeitig laufen dürfen. Auf dem 8 Thread i7 wären das entsprechend 8. Wenn sich nun mehrere Rechner das Kompilieren teilen, muss also auch rundgefragt werden, wer überhaupt gerade bereit ist, mit zu kompilieren.
Aktuell denke ich an ein Bash-Skript.
Aktuell habe ich aber auch noch nicht viel darüber nachgedacht... deswegen frage ich mal die allgemeine Expertise an. Gibt es Tools (für Linux), die ich hier sinnvoll nutzen kann und an die ich noch nicht gedacht habe. Gibt es eine Meinung dazu, eher mit rsync als mit SSHFS zu arbeiten? Weitere Ideen oder Hinweise?
Nun stellt sich für mich die Frage, wie man das kompilieren von Projekten auf zwei (oder besser noch mehr) Rechnern sinnvoll verteilen könnte. Aus dem Grund dieser Thread, was man da basteln könnte.
Im Idealfall würde ich ein Rebuild so auf 8 Thread i7, dem 8 Thread Xeon und meinem 4 Thread NAS verteilen.
Meine Vorstellung gegenwärtig wäre, dass als Vorbereitung sich alle Build-Server per SSHFS das Dateisystem lokal mounten und somit Zugriff auf die aktuellen Quellen haben. Die anderen Libs und dazugehörigen Header (libc, mysql, whatsoever) sind lokal installiert. Statt des GCCs möchte ich nun lokal ein Skript aufrufen, was erstmal guckt, wer den wieviel zu tun hat. Wenn der lokale Rechner nicht ausgelastet ist, sollte der Rechner lokal den GCC starten. Ist er aber ausgelastet, sollte er einen anderen Rechner fragen, ob der Zeit hat. Das wäre im Idealfall der Xeon, da der am zweitschnellsten ist. Wenn der also weniger als 8 Tasks gerade ausführt, soll der Xeon lokal den GCC starten und über SSHFS kompilieren. Wenn der voll ist, würde entsprechend das NAS gefragt.
Soweit die erste Idee. Da fällt mir dann auch noch make ein, welches über den Schalter -j gesagt bekommt, wieviele Tasks eigentlich gleichzeitig laufen dürfen. Auf dem 8 Thread i7 wären das entsprechend 8. Wenn sich nun mehrere Rechner das Kompilieren teilen, muss also auch rundgefragt werden, wer überhaupt gerade bereit ist, mit zu kompilieren.
Aktuell denke ich an ein Bash-Skript.
Aktuell habe ich aber auch noch nicht viel darüber nachgedacht... deswegen frage ich mal die allgemeine Expertise an. Gibt es Tools (für Linux), die ich hier sinnvoll nutzen kann und an die ich noch nicht gedacht habe. Gibt es eine Meinung dazu, eher mit rsync als mit SSHFS zu arbeiten? Weitere Ideen oder Hinweise?