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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 186958
Url: https://administrator.de/contentid/186958
Ausgedruckt am: 26.11.2024 um 05:11 Uhr
4 Kommentare
Neuester Kommentar
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.
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.
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...
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...