Im Netzwerk teilen wir Dateien (Disk Driver) oder Datenbanken. Aber wie können wir CPU oder RAM über das Netzwerk gemeinsam nutzen?
Im Netzwerk teilen wir Dateien (Disk Driver) oder Datenbanken. Aber wie können wir CPU oder RAM über das Netzwerk gemeinsam nutzen?
Antworten:
Dazu müssen die Programme, die auf die CPU / RAM-Ressourcen zugreifen, speziell für den Zugriff auf diese Ressourcen ausgelegt sein. Ein auf diese Weise eingerichtetes System wird als Cluster bezeichnet. Die gemeinsame Nutzung von Ressourcen erfolgt normalerweise über ein Protokoll namens MPI (Message Passing Interface). Es ist ein kostenloser Download und die Verwendung mit Linux kann zu einem leistungsstarken Cluster (möglicherweise sogar zu einem Supercomputer) bei minimalen Kosten führen. Es ist jedoch wiederum nutzlos, es sei denn, Sie verfügen über Programme, die speziell für die Nutzung von MPI entwickelt wurden. Es gibt einige gute Cluster-Tutorials. Wenn Sie immer noch interessiert sind, sollten Sie eines ausprobieren.
Bearbeiten:
Ich würde das Tutorial hier empfehlen , wenn Sie einen Cluster einrichten möchten. Ich habe einen Cluster erstellt, indem ich diesem Tutorial vor ungefähr einem Jahr gefolgt bin, und es hat ziemlich gut funktioniert. Das Tutorial ist ein bisschen alt, so dass einige Dateien möglicherweise nicht genau dort sind, wo sie laut Tutorial sind (manchmal werden Dateien in anderen / neueren Linux-Distributionen verschoben), aber wenn Sie mit Linux am wenigsten vertraut sind, sollte dies kein Problem sein. Das Tutorial verwendet eine ältere Version von MPI, aber ich habe die neueste Version verwendet und hatte keine Probleme, die nicht einfach zu lösen waren. Je nachdem, was Sie gerade tun, kann es tatsächlich ein Programm geben, das MPI nutzt. Ich weiß, dass es einige Videokodierungs- und Zahlenverarbeitungsprogramme gibt, die MPI nutzen und von universellen Quellen heruntergeladen werden können.
Sie können RAM mithilfe von RAM-Datenträgern freigeben, dies sieht jedoch genauso aus wie die Freigabe von normalen Datenträgern, mit der Ausnahme, dass sich diese im RAM eines anderen Computers befinden. Es gibt keine direkte Möglichkeit für einen Computer, den RAM eines anderen Computers so zu verwenden, als wäre es sein eigener RAM. Es gibt jedoch einige Möglichkeiten, den RAM eines anderen Computers zu verwenden. Mehr dazu im nächsten Absatz.
CPU-Sharing ist möglich, es gibt jedoch keinen einheitlichen Standard. Sie können es nicht einfach freigeben und die benötigten Ressourcen von einem anderen Computer übernehmen lassen. Stattdessen benötigen Sie speziell entwickelte Anwendungen, die auf mehreren Computern gleichzeitig ausgeführt werden können. Dies wird oft als verteiltes Rechnen bezeichnet und wird von einigen Forschungsprojekten wie SETI @ Home, Einstein @ Home, Climateprediction.net und vielen anderen verwendet.
Grundsätzlich arbeiten Programme so, dass es einen zentralen Server gibt, der die zu erledigende Arbeit verteilt. Computer im Netzwerk laden Arbeitseinheiten vom Zentralcomputer herunter und verarbeiten sie. Danach empfängt der Zentralcomputer die Ergebnisse von den Kunden und führt sie zu einem zusammenhängenden Ergebnis zusammen. Auf diese Weise "teilen" Computer CPU- und RAM-Ressourcen über das Netzwerk. Der Nachteil dabei ist, dass Programme so erstellt werden müssen, dass sie über das Netzwerk funktionieren, und derzeit ist verteiltes Rechnen bei den üblichen Verwendungszwecken eines Computers nicht populär genug, sodass nur eine kleine Anzahl spezialisierter Programme dies unterstützt. Andererseits wird es üblicherweise für wissenschaftliche Zwecke verwendet, da es billiger ist, eine große Anzahl von Personalcomputern oder Playstations 3 zu erhalten, als Zugang zu einem Großrechner zu erhalten.
Sie sind auf ein XY-Problem gestoßen. Sie sollten nicht gefragt werden, wie CPU- und RAM-Computer gemeinsam genutzt werden können, sondern wie mehrere Computer verwendet werden können, um das Rendern bei der Verwendung von ZZZZZ zu beschleunigen.
Es hängt stark davon ab, welche Software Sie verwenden und was Sie rendern ( transkodieren Sie Videos oder rendern Sie ein 3D-Modell / Video?).
Die kostenlose 3D-Software Blender unterstützt verteiltes Rendern, bei dem mehrere Computer zusammenarbeiten, um eine Ausgabe zu generieren. Wenn Sie Video rendern, haben Sie mit dem Open-Source-Projekt MediaEncodingCluster ein schnelles Googeln gefunden , mit dem Sie Video- und Audiodateien auf mehreren Computern rendern können.
Das einzige Betriebssystem, das ich kenne, um CPU / RAM zu teilen, ist plan9. Dort kann man fast alles exportieren / mounten. Das heißt natürlich nicht, dass die Leistungen gut sind.
Es wäre eine nette Funktion, CPU / RAM für Aufgaben über das Netzwerk zu teilen. Gegenwärtig sind wir immer noch ein bisschen an alte Vorstellungen gebunden, Programme in der Box zu belassen, in der die Dinge passieren, aber wir können mehreren CPUs auf demselben Computer den Zugriff auf dasselbe Codefragment ermöglichen. Wir haben (zumindest) eine Methode, die so etwas macht. Java auf Webseiten funktioniert sowohl mit dem Server als auch mit dem Client, aber es ist immer noch auf Server-Client-Weise gesperrt, um Dinge zu erledigen (wobei der Server die meisten Daten enthält). Was wir brauchen, um in der Lage zu sein, Maschinen Aufgaben auf die gleiche Weise zuzuweisen, wie wir es tun, wenn wir mehrere CPUs haben (außer Maschinen, auf denen Programm-Snip und Daten-Snip zugewiesen werden müssen). Dies belastet das Netzwerk jedoch stärker wenn die aufgaben selbst nicht einfach sind und zu neuen engpässen führen können, gefällt mir die idee, wo es geht. '