Heterogene Cluster-Lösung für F&E

Heterogene Cluster-Lösung für F&E

Ich arbeite in einem Forschungslabor mit mehreren physischen Maschinen mit unterschiedlichen Spezifikationen. Die Maschinen haben unterschiedliche CPUs (einige Intel, einige AMD), unterschiedliche RAM-Größen, einige haben diskrete GPUs und einige nicht.

Unsere aktuelle Lösung basiert auf SSSD und Kerberos, sodass sich Benutzer von jedem Terminal aus bei ihren Konten anmelden und auf ihre Dateien zugreifen können. Das Problem besteht darin, dass Benutzer auf diese Weise während ihrer Arbeit an eine Maschine „gebunden“ sind, was zu einer suboptimalen Ressourcenzuweisung führt.

Daher suchen wir nach einer alternativen Lösung für unseren Cluster. Unser Hauptziel ist es, alle Maschinen wirklich zu vereinheitlichen, d. h. aus Sicht des Benutzers besteht der Cluster aus einer einzigen Maschine. Unseres Erachtens ist eine Lösung wie Slurm jedoch nicht ideal, da wir uns nicht auf einen Job-Scheduler verlassen möchten. Die Lösung, die wir uns vorstellen, sieht ungefähr so ​​aus: Wenn sich ein Benutzer anmeldet, kann er die benötigten Spezifikationen angeben (RAM, Anzahl der CPUs, diskrete GPU usw.), dann wird eine virtualisierte Umgebung mit den gewünschten Spezifikationen erstellt (z. B. ein Docker-Image oder eine virtuelle Maschine). Der Benutzer kann diese Umgebung dann als normalen „Computer“ verwenden. Die Ressourcen für diese virtuelle Umgebung sollten jedoch aus dem Cluster und nicht von einer einzelnen Maschine bezogen werden. Es sollte auch möglich sein, große Datensätze gemeinsam zu nutzen, auf die jede „virtuelle Umgebung“ zugreifen kann. Der Cluster sollte auch über ein Authentifizierungs- und Berechtigungssystem verfügen.

Wir haben nach Clustering-Tools gesucht, mit denen wir unser Ziel erreichen können, sind uns aber nicht sicher, welches wir wählen sollen. Wir haben uns Mesos, OS/DB, Docker Swarm, Kubernetes und oVirt angesehen, wissen aber nicht, ob wir unser Ziel mit diesen Tools erreichen können und wenn ja, welches die beste Wahl ist. Wir denken, dass Container eine gute Option für die Produktion sein könnten, aber wahrscheinlich nicht die beste Wahl für Forschung und Entwicklung.Könnt ihr uns weiterhelfen und uns ein paar Tipps dazu geben, was zu tun ist und wo wir anfangen sollen?

Freundliche Grüße, pinxau1000

Antwort1

Ich stimme @NikitaKipriyanov zu, dass Sie Ressourcen aus mehreren Systemen nicht in einem einzigen Image kombinieren können, obwohl es in der Vergangenheit kommerzielle Produkte gab, die dies taten und sich auf Infiniband verließen, um die Latenz niedrig zu halten (meiner Meinung nach hat es nicht gut funktioniert). Slurm kann als Scheduler verwendet werden, aber Sie können es auch für interaktive Jobs verwenden und es kann dann eher ein Ressourcenmanager sein.

Für jeden Job können die Anzahl der CPU-Kerne, die Anzahl und der Typ der GPUs, die Speichermenge usw. angegeben werden. Der Scheduler wählt dann ein geeignetes und ungenutztes System aus und gibt Ihnen eine Shell-Eingabeaufforderung. Bei Bedarf ist X11-Weiterleitung verfügbar.

Container können in einer F&E-Umgebung außerdem sehr nützlich sein. Sie sollten sie nicht wegwerfen, weil Sie den Nutzen nicht erkennen, aber sie sind nicht die Lösung für dieses Problem.

Antwort2

Es ist nicht möglich.

  1. Unterschiedliche CPUs bedeuten, dass die Anweisungen unterschiedlich sein können. Das ist ein Albtraum, wenn Sie Code zwischen CPUs migrieren möchten.
  2. Die Speicherlatenz beträgt Nanosekunden, die Netzwerklatenz einige zehn Mikrosekunden.

Abhängig von Ihrer Arbeitslast kann es möglich sein, Ihre Arbeitslast so zu übersetzen, dass sie auf mehreren Computern ausgeführt wird und Daten zwischen ihnen ausgetauscht werden. Bei manchen Problemen ist dies trivial und Sie können den Datensatz in kleinere Partitionen aufteilen und parallel daran arbeiten. Bei anderen Arbeitslasten ist dies schwierig. Dies erfordert jedoch Änderungen an der Arbeitslast, nicht am Betriebssystem.

verwandte Informationen