xenome
Goto Top

Freie Rechenkapazität einem Server zur Verfügung stellen

Hallo liebe Community,

habe im privaten Bereich einen Server auf dem ein Java-Spiele-Server läuft. Dieser Server ist aber ziemlich schnell mit seinen 3 GB RAM ausgelastet. Aus diesem Grund würde mich interessieren ob es irgendwie möglich ist, dass ich von meinem Rechner, welcher mit 8GB RAM ausgestattet ist, irgendwie eine gewisse Menge an Rechenleistung, über das Internet, dem Server zur Verfügung stellen könnte.

Aktuell läuft der Server mit einem Windows Web Server 2008, mein Rechner unter Windows 7 Professional.

Falls mit einer in diesem Punkt helfen kann würde ich mich sehr darüber freuen.

Grüße

Xenome

Content-Key: 186958

Url: https://administrator.de/contentid/186958

Printed on: April 23, 2024 at 16:04 o'clock

Member: maretz
maretz Jun 24, 2012 at 09:23:45 (UTC)
Goto Top
Moin,

es gibt zwar durchaus Optionen für sowas - läuft unter distributed Computing. Allerdings: Für das was du vorhast, insbesondere wenn es übers Internet gehen soll, wird das nicht funktionieren da du dafür schnelle Leitungen benötigst.

Und wenn du nicht selbst programmierst dann muss das Program vorher darauf ausgelegt werden. Mir wären nur Arbeitsprogramme (3D Studio Max, PovRay usw.) bekannt - Spiele wüsste ich nicht das es da eines gibt was sowas unterstützt.
Member: Xenome
Xenome Jun 25, 2012 at 05:04:58 (UTC)
Goto Top
Hallo maretz,

vielen Dank für deine Hilfe.

Bin gerade etwas überrascht, dass dieses distributed Computing, wenn nur von der Software selbst unterstützt wird. Ich dachte, dass es irgendwie möglich sei mit einem hoffentlich kostenfreien Programm die Rechenleistung zu verteilen.
Was die Internetleitung betrifft, hätte ich mir keine Gedanken gemacht, da wir aktuell eine 50 MBit Leitung liegen haben und meist die Leistung von 60 bis 70 MBit rausbekommen.

Aber vielen Dank für deine schnelle Hilfe.

Grüße

Xenome
Member: maretz
maretz Jun 25, 2012 at 06:48:03 (UTC)
Goto Top
Moin,

leider ist das ganze nicht so einfach wie du dir das vermutlich vorstellst... Ich fange mal beim einfachen Teil an: Leitungsgeschwindigkeit. Deine 50 mBit sind in dem Bereich ein Witz. Wenn du im Bereich "Echtzeit" anfängst reden wir über 1 - x GBit-Verbindungen... Mit 50 mBit kannst du anfangen wenn du Projekte wie SETI usw. betrachtest (da auch deutlich weniger) -> du bekommst nen großes Datenpaket, rechnest das und schickst das Ergebnis (z.T. nach Stunden) zurück. Wenn du aber in Echtzeit sowas machen willst (z.B. distcc als Compiler) dann sind die Pakete schon deutlich kleiner. Fängst du an das noch weiter zu teilen - dann bekommst du immer kleinere Rechen-Pakete und brauchst eine immer schnellere Leitung da deine CPU dann ggf. in millisekunden mit der Berechnung fertig ist - es wäre ja fatal wenn du jetzt das Paket in 5 ms berechnet hast aber dafür 1-2 Sekunden auf das nächste warten musst. Daher wäre deine Internet-Leitung dafür bei weitem zu lahm (nicht was die Bandbreite angeht - aber die Latenz wäre zu hoch!).

Jetzt kommen wir aber zu dem Teil der Spass macht: Warum geht das ganze nicht automatisch über die Hardware? Im Endeffekt ganz einfach. Du kannst nicht jede Aufgabe beliebig teilen - und die Software muss daher so gestrickt sein das die überhaupt teilbar ist. Stelle dir eine einfache Aufgabe vor:

a=1+2;
b=a+1;
c=b+a;

Egal ob du jetzt 100 Rechner hast oder einen mit 100 CPUs -> diese Aufgabe kannst du nicht teilen (bzw. sie würde nicht schneller berechnet werden dadurch - sogar langsamer). Also musst du dein Programm z.B. so umformen das es mehrere Dinge gleichzeitig machen kann - z.B. durch Threads / Prozesse. Ich könnte z.B. ja obrige Berechnung anstellen lassen (auf Thread1) - während Thread 2 z.B. x=1+1; y=x+1; z=x+y; rechnet. Wenn ich jetzt 2 CPUs (oder 2 Rechner - im Endeffekt egal wo die cpus nun sind) habe kann ich beides parallel laufen lassen - und habe (den Overhead für die Verwaltung ignoriere ich jetzt!) einen Geschwindigkeitsgewinn. Aber ich denke dadurch wird klar warum die Hardware das nicht kann -> denn DIE weiss nix davon wie mein Programm arbeitet bzw. weiss es erst nach der Ausführung. Die könnte also nur sagen "die letzten 2 Sekunden hätte ich parallel ausführen können" - was dir aber dann nix mehr bringt.

Von daher: Leider wird das was du vorhast so nichts... Du kannst es zwar z.B. mit PovRay u.ä. mal zum Spass austesten (oder selbst DistCC geht da), wirst aber feststellen das es langsamer geht als vorher wenn du die Rechner übers Internet verbindest... Dafür brauchst du dann eben Sonderfälle wie Seti@Home usw. -> bei denen die Datenmenge so ins Verhältnis zur Rechenzeit gesetzt wird das die Leitungsgeschwindigkeit am Ende egal ist (Rechenzeit die benötigt wird ist sehr viel größer als die Übertragungszeit des Datenpaketes). Das aber verbietet sich bei Echtzeitanwendungen wie Spielen natürlich von selbst...
Member: Xenome
Xenome Jun 26, 2012 at 06:39:19 (UTC)
Goto Top
Morgen,

vielen Dank für deine ausführliche Erklärung der Systematik die hinter dem ganzen steht. Ich werde mich auf alle Fälle mal damit auseinandersetzen sobald ich Zeit habe. Alleine schon aus dem Grund, da du mir mit deiner Erklärung die Nase jetzt so lang gezogen hast, das ich es ausprobieren möchte. Hätte auch schon für meine "Problemanwendung" eine Idee wie ich das umsetzen könnte.
Falls du Interesse haben solltest werde ich hier dann meinen mehr oder minder großen Erfolg posten.

Grüße

Xenome