Remote Compilieren, welche Möglichkeiten gibt es?
-
Weiter unten hat jemand in einem Thread nach einem passenden Rechner für Eclipse & Co gefragt und alle haben ihm viel RAM, ne schnelle Festplatte und einen Quadcore empfohlen.
Aber mir persönlich sind beim Programmieren andere Dinge viel wichtiger.
Z.B. das der Rechner super leise ist und kaum Abwärme produziert, so daß man auch im Sommer noch entspannt programmieren kann ohne zu schwitzen.
Daher wäre in kleiner schwachbrüstiger Thin Client oder ein PC der diese Rolle übernimmt ideal.
Und im Keller sollte dann ein schneller performanter Server stehen der mir das Programm compiliert.Nun habe ich aber folgende Frage, welche Möglichkeiten des Remote Compilieren gibt es?
Folgende 2 Varianten kenne ich schon, aber die empfinde ich alle Suboptimal:
Varinate 1:
Man benutzt das X Window System und greift auf den Server auf dem man dann z.b. Eclipse startet und seine Programme compilieren kann.
Problem:
Das Problem dabei ist jetzt nur, daß Eclipse selbst auf dem Server läuft,
aber heutige schwache Client Rechner schnell genug für Eclipse wären und man so gesehen Eclipse besser auf dem Client Rechner laufen lassen sollte, anstatt auf dem Server der zum Compilieren notwendig ist.
Wer einmal in einem Netzwerk gearbeitet hat, in dem mehrere X Clients an einem Server hängen, weiß was ich meine.
Das ganze wird arschlahm.Besser wäre es also, wenn man die IDE auf dem Client laufen lassen könnte und nur noch den Compiler auf dem Server benutzt.
Damit wären wir bei Variante 2:Variante 2:
Man hat das Verzeichnis mit dem Quellcode auf dem Server damit die Dateien für den Compiliervorgang dort schnell zur Verfügung stehen.
Und die IDE läuft auf dem Client Rechner.
Das Verzeichnis ist dabei remote über SMB oder NFS auf dem Client gemountet, so daß die IDE auf die Quellcodedateien so zugreifen könnte, als wären diese auf dem Client.
Das Problem dabei ist jetzt nur der Compiliervorgang.
Die IDE wird zu einem schlichten Editor degradiert, daß man das compilieren
über eine ssh Shell Verbdinung auf dem Server manuell starten muß.
Ein Mausklick in der GUI um dann dort remote den Compiliervorgang auf dem Server zu starten ist nicht möglich, bzw. kenne ich so eine Lösung nicht.Kennt ihr also zu obigen 2 Varianten eine bessere Lösung des Remot Compilierens?
Was ich will ist, daß die IDE auf dem schwachen Client läuft, aber das Compilieren auf dem starken Server durchgeführt wird.
Welche alternativen Lösungen gibt es da?
-
Um welche Sprache geht es hier denn?
Für C und C++ sind distcc recht praktisch, manchmal wird auch icecream oä verwendet.
-
Zu Variante1: je nachdem wie viel du ausgibst wäre das Netzwerk nicht der Flaschenhals

Ich sehe darin auch kein Problem Eclipse auf dem Server laufen zu lassen, warum auch nicht? Dann kann der ThinClient noch weiter rungergetaktet werden und bleibt länger kühler.
-
Ach ja, wenn das ein ThinClient werden soll, dann würde ich mich in das Thema noch genauer einlesen, einfach nur X übers Netzwerk verwendet man dafür idR eigentlich eher nicht.
-
Und wieso nicht komplett Remote arbeiten?
-
ich nehme mal an, du kompilierst bei dir zuhause keine megaprojekte, oder? was soll dann der unsinn von wegen "server kompiliert", als ob du da so wirklich viel leistung bräuchtest oO du kannst dir einen schönen PC zum entwickeln zusammenstellen, der
a) über ausreichend RAM verfügt
b) eine schnelle HD hat
c) einen guten prozessor hat
und der trotzdem nicht heiß / laut ist - funktioniert bei allen bürorechnern doch gleich. solang du auf dem PC nicht spielen willst, ist er genau so konfigurierbar, wie du willst (leise, leistungsstark) - du musst eben auf die komponenten achten. ansonsten hast du eben einen thin client, der ohne server komplett umsonst ist, weil zu schmalbrüstig
btw: wenn unbedingt, dann arbeite komplett remote. spart jede menge unnötigen aufwand, ich glaube du denkst hier zu kompliziert. außerdem kannst du den server, wenn du länger kompilierst, mal schnell eben ausblenden und hast den client komplett für andere zwecke zur verfügung (ohne eclipse und den restlichen krimskrams offen zu haben).
Das Problem dabei ist jetzt nur, daß Eclipse selbst auf dem Server läuft,
aber heutige schwache Client Rechner schnell genug für Eclipse wären und man so gesehen Eclipse besser auf dem Client Rechner laufen lassen sollte, anstatt auf dem Server der zum Compilieren notwendig ist.WAS um gottes willen kompilierst du? ZU HAUSE? und wie lange dauert das? 5 minuten? omg omg, da fällt ein laufendes eclipse ja stark ins gewicht...
-
Meine Idee ...
Wie wärs mit nem Konfigurationsmanagementsystem (z.B. Subversion)?
Ich weiss es leider nich genau aber würde einfach mal
vermuten, das man damit auch compile vorgänge starten kann.
Ausserdem lassen sich damit die Daten gut in Eclipse integrieren
und du hast zusätzlich noch ne Versions Historie und alles ordentlich
verwaltet.Sollte (entgegen meiner Vermutung) das Kompilieren nicht funktionieren,
würd ich einfach zu nem kleinen Skript raten, das die nötigen Schritte
ssh verbindung etc. automatisiert. Das muss dann nurnoch auf das jeweils
aktuelle Projekt angepasst werden, was nicht zu aufwändig sein sollte.Aber ich muss mich auch meinen Vorrednern anschließen, da ein echter
"Thin Client" normalerweise nur für Ein- und Ausgabe verwendet wird,
würde ich mich mal mit VNC und den Diversen anderen "Remote Desktop"
Techniken auseinander setzen. Damit erreichst du nämlich wirklich ne
saubere Trennung zwischen dem Arbetistier (Server) und dem Client.
-
Lieber Herr darkeye,
wie dem ersten Posting eindeutig zu entnehmen ist, hat der Threadersteller bereits Erfahrung mit dem Remote-Arbeiten gesammelt und auch bereits einige Optionen aufgelistet und diese mit einer Begründung ausgeschlossen.
Sie dagegen wissen ja noch nicht einmal was Subversion kann, aber statt sich zu informieren, versuchen sie hier, auf wagem Halbwissen basierend, einer Person deren Kompetenz die ihrige - offensichtlich - übersteigt, zu helfen.Mit mehr oder weniger freundlichen Grüßen
Euer kritischer Leser
P.S. Ich leide an Legastehnie, bitte beherzigen sie das beim Lesen meines Postings.
-
PC-Experte schrieb:
Zu Variante1: je nachdem wie viel du ausgibst wäre das Netzwerk nicht der Flaschenhals

Ich meinte damit auch den Server an dem mehrere Clients hängen (dahe Netzwerk).
Der Server wird dann halt mit unnötiger Eclipse Ausführung belastet, daß will ich vermeiden, denn der soll nur zum compilieren da sein.
Ich sehe darin auch kein Problem Eclipse auf dem Server laufen zu lassen, warum auch nicht? Dann kann der ThinClient noch weiter rungergetaktet werden und bleibt länger kühler.
Siehe oben.
Bei 30 Eclipse Instanzen geht der Server völlig in die Knie und taugt dann nicht mehr zum compilieren.
-
Was für ein Server hast du der a) von 30 Leuten benutzt wird und b) bei 30 mal Eclipse in die Knie geht

Und warum hast du ein Netzwerk, dass offensichtlich zu schwach für euren Einsatz ist

-
Nachtrag:
Remote schrieb:
Bei 30 Eclipse Instanzen geht der Server völlig in die Knie und taugt dann nicht mehr zum compilieren.
Und gerad dann, wenn das ganze richtig Remote wird, dann läuft ja meist nicht nur Eclipse, sondern auch noch eine ganzen Desktop Umgebung.
So kenne ich das z.B. von meiner Uni bestehend aus mehren SUN Servern und Thin Clients.
Dort saß man vor einem Thin Client und die Server haben die ganzen Arbeiten übernommen.
D.h. auf den Servern lief die Desktop Umgebung (z.b. KDE/Gnome etc.) und der ganze Rest und das ganze wurde in der Hauptlastzeit richtig lahm weil die Server in die Knie gingen anderseits waren die Arbeitsbedinungen bei den Thin Clients einfach Traumhaft, die Dinger machten nämlich keinen Muckser von sich.Daher will ich bei meinem Netzwerk eine ähnliche Lösung, nur will ich halt die Desktop Umgebungen, den Browser, Eclipse & Co auf den Clients laufen lassen.
An echte Thin Clients dachte ich da auch nicht, sondern eher an extrem stromsparende kleine CPUs mit Onboard Grafik und ITX Mainboard in entsprechenden ITX Gehäusen, z.B. mit AMD Semptron LE-1200 CPU, Via C7 oder vielleicht auch dem Intel Atom Chip, sobald mal stromsparende Chipsätze für ITX Mainboards für den Atom Prozessor zur Verfügung stehen.
Da diese CPUs heutzutage alle mehr als schnell genug sind um eine Desktopumgebung und Eclipse flüssig ohne nervendes ruckeln und zuckeln darzustellen wären diese Semi Thin Clients quasi ein guter Kompromiss und der Server würde durch diese Lösung stark entlastet werden und könnte sich auf das konzentrieren wofür er gedacht ist, also Numbercrunching bzw. Compilieren.
Diese Semi-Thin Clients könnte dann also eine halbe Ewigkeit laufen und
es müßte nur noch die Server Hardware hin und wieder, sofern die Leistung nicht mehr ausreicht ausgetauscht werden.
An Serverhardware dachte ich da an Xeon oder Opteron K10 CPUs mit 4 oder mehr Kernen.
-
Sys-Admin schrieb:
Und warum hast du ein Netzwerk, dass offensichtlich zu schwach für euren Einsatz ist

Das Netzwerk ist ja nicht das Problem, sondern eher die Server die nicht mit Desktop Aufgaben belastet werden sollen.
Siehe meine negative Erfahrung damals an der Uni.Das Netzwerk soll übrigens mit 1 GB Ethernet Netzwerken auf Kupferbasis verkabelt werden. Falls damit jemals ohne Glasfaser auch 10 GB möglich sein sollte, wird eventuell nachgerüstet, falls erforderlich, aber ich denke 1 GB ist hier schnell genug.
-
nman schrieb:
Um welche Sprache geht es hier denn?
Für C und C++ sind distcc recht praktisch, manchmal wird auch icecream oä verwendet.
Thx, ich werde mir das mal anschauen.
Die Programmiersprache ist C++ und Java.
-
Joe_M. schrieb:
Und wieso nicht komplett Remote arbeiten?
Selbst wenn der Server für 30 Desktop+Eclipse Instanzen leistungsfähig genug wäre, würde dieser in die Knie gehen, sobald damit angefangen darauf bei Vollast zu compilieren.
Als Benutzer merkt man das dann einfach bei den Thin Clients und wenn man nicht gerade der ist, der den Compilier startet nervt es umso mehr.
-
Remote schrieb:
Joe_M. schrieb:
Und wieso nicht komplett Remote arbeiten?
Selbst wenn der Server für 30 Desktop+Eclipse Instanzen leistungsfähig genug wäre, würde dieser in die Knie gehen, sobald damit angefangen darauf bei Vollast zu compilieren.
Als Benutzer merkt man das dann einfach bei den Thin Clients und wenn man nicht gerade der ist, der den Compilier startet nervt es umso mehr.Und natürlich könnte man auch so etwas wie nice verwenden und den Prozessen insbesindere des Compilers eine niedrigere Priorität geben, aber das ist ja nicht erwüpnscht, daß der Compiler eingeschränkt wird nur damit auf den Client Rechnern die GUI noch benutzbar ist.
Würde die GUI ausschließlich auf den Client Rechnern laufen, dann hat man dieses Problem nicht.
-
In dem Fall bleibt dir eigentlich nur distcc, und wenn ich mich recht erinnere kann man sogar einstellen, dass ausschließlich die "Drohnen" arbeiten sollen.
Eine schnelle Netzwerkanbindung ist natürlich pflicht damit das Arbeiten damit auch Spaß macht.