Shared Memory Server Self-Made

M

Malte

Grünschnabel
Hallo Leute!

Für CAE Anwendungen brauchen wir einen neuen Computing-Server mit anständig Rechenleistung und Arbeitsspeicher.
Dieser Server sollte gut skalierbar sein.
Eine High-End Workstation würde zwar meinen Forderungen genügen, es wäre allerdings nicht mehr viel Platz für Erweiterungen.
Ich bräuchte ein System mit folgenden Eckdaten:
- 12 GB RAM
- Speed eines Dual Opteron Systems mit 2 mal ~2200 MHz

Das Ganze sollte sich problemlos verdoppeln, wenn nicht sogar vervierfachen lassen.

SGI bietet ein Serversystem an, das meinen Anforderungen entspricht:
SGI Altix 330 oder 350.

Da aber die Kosten eines solchen Systems übertrieben hoch sind wegen Supportleistungen und was auch immer (wohl auch wegen dem Namen - SGI), überlege ich, ob es nicht günstiger wäre, selber ein solches System zusammen zu stellen.

Es handelt sich ja um Shared Memory Systeme. Also mehrere Rechner, die sich untereinander CPU und RAM teilen - was natürlich Software benötigt, die auf mehreren CPUs rechnen kann, aber die ist vorhanden!

Meine Frage ist nur, wie kann ich die Computer so verbinden, dass sie sich CPU und RAM teilen?
Und wie richte ich das im OS ein (Linux)?

Danke für eure Antworten,
Malte
 
Wie wäre es mit einem Cluster mit Mosix oder OpenMosix

MOSIX is a management system that allows a Linux cluster or a Grid of clusters to perform like a single computer with multiple processors. It is particularly suitable to run intensive computing and applications with moderate amounts of I/O.

Wenn du flexibel sein mußt/willst, wäre eine Cluster/Grid Lösung doch sicherlich die beste für dich?
Erweiterbar bist du auf jedenfall ;)
 
devilz schrieb:
Wie wäre es mit einem Cluster mit Mosix oder OpenMosix
Wenn du flexibel sein mußt/willst, wäre eine Cluster/Grid Lösung doch sicherlich die beste für dich?
Erweiterbar bist du auf jedenfall ;)
Vielen Dank, werde ich mir mal ansehen.
Ähh, aber wo ist denn jetzt eigentlich der Unterschied zwischen einem Shared-Memory-System und einem Cluster?

Gruß,
Malte
 
"Shared-Memory" bedeutet eigentlich eigentlich nix anderes, als ein einheitlicher, großer, zusammenhängender adressierbare Speicher.

Die sogenannten Multiprocessor oder Shared Memory Systems sind dadurch gekennzeichnet, dass sie sich einen gemeinsamen physischen Speicher teilen. Dieses Modell erstreckt sich bis hin zur Software. Das heißt, alle Prozesse in einem Mehrprozessorensystem können einen virtuellen Adressraum, der auf einen gemeinsamen Speicher abgebildet wird, gemeinsam nutzen. Die Kommunikation der Prozesse untereinander durch einfaches Lesen und Schreiben in den Speicher gestaltet sich daher recht simpel und findet große Resonanz bei Programmierern und Entwicklern. Je nach Implementierung des gemeinsamen Speichers, können Multiprozessormaschinen in drei Unterkategorien, UMA(Uniform Memory Access), NUMA(NonUniform Memory Access) und COMA(Cache Only Memory Access), eingeteilt werden.
Mehrprozessorsysteme werden von vielen großen Computerherstellern vertrieben. Einige Beispiele sind SUN Enterprise 10000, Sequent NUMA-Q, SGI Origin 2000 und HP/Convex Exemplar.

Bei Mehrrechnersystemen oder auch Distributed Memory Systems besitzt jede CPU einen privaten lokalen Speicher, auf den keine der anderen CPUs zugreifen kann. Daher unterliegen sowohl diesen Rechnern als auch der aufsetzenden Software viel kompliziertere Strukturen für die kommunizierenden Prozesse und dem gemeinsamen Nachrichtenaustausch. Die Kommunikation zwischen den CPUs erfolgt in der Regel über Verbindungsnetze(Ethernet, Fast-Ethernet), wodurch über die Software-Primitive send und receive Nachrichten ausgetauscht werden können. Außerdem spielt die richtige Verteilung und Bereitstellung der Daten für die einzelnen CPUs eine entscheidende Rolle. Somit besitzen Mehrrechnersysteme gegenüber den Mehrprozessorsystemen ein grundlegend anderes und komplizierteres Programmierkonzept.
Mehrrechnerarchitekturen gibt es in allen möglichen Formen und Größen. Sie lassen sich aber grob in zwei Kategorien einteilen. Zur ersten Kategorie gehören die MPPs(Massively Parallel Processors). Diese meist sehr teuren Supercomputer verfügen über eine Vielzahl von CPUs, die über ein herstellerspezifisches Hochgeschwindigkeits-Verbindungsnetz eng gekoppelt sind. Die zweite Kategorie bilden die COWs(Cluster Of Workstations). Diese Systeme bestehen aus handelsüblichen PCs oder Workstations, die möglicherweise in Gestellrahmen montiert und über kommerziell erhältliche Verbindungstechnologien verbunden sind. Diese unterscheiden sich rein logisch kaum von MPP-Systemen, außer dass riesige Supercomputer meist mehrere Millionen Dollar kosten und anders als Clustersysteme eingesetzt werden, die der Benutzer häufig für einen Bruchteil der Kosten eines MPPs selbst zusammenbauen kann.



Infos bekommst z.B. hier :
http://www.uni-weimar.de/~koch17/rbs/bock6/
 
Ahh, ok, jetzt hab auch ich es verstanden.
Ich habe mal in den man-pages meiner Software nachgesehen und herausgefunden, dass sie nur teilweise Distributed Memory unterstützt.
Multiprocessoring wird voll unterstützt.
Es müsste also schon ein Shared-Memory-System sein.

Welche Software gibt es, um ein Shared Memory Sysetm einzurichten?
Vor allem über die NUMA Architektur habe ich aus dem CAE Bereich gutes gehört.

Viele Grüße,
Malte
 
Hallo!

Ich glaube ich habe gefunden, was ich suchte!
OpenMosix mit dem MigShm Patch.

OpenMosix sorgt für die Cluster-Infrastruktur und MigShm bringt das Shared Memory.

Setze grade ein neues System auf, denn von MigShm gibts bis jetzt nur eine Stable Version für den Kernel 2.4.26

Bin mal gespannt wies klappen wird.

Gruß,
Malte

Links:
OpenMosix
http://www.openmosix.org/

MigShm
http://mcaserta.com/maask/
 
Zuletzt bearbeitet:

Ähnliche Themen

/HILFEE/Server Bottet nicht mehr

Zurück
Oben