Gemeinsame Ressourcen verantwortungsvoll nutzen
Zuletzt aktualisiert am 2025-08-04 | Diese Seite bearbeiten
Übersicht
Fragen
- Wie kann ich ein verantwortlicher Benutzer sein?
- Wie kann ich meine Daten schützen?
- Wie kann ich am besten große Datenmengen von einem HPC-System abrufen?
Ziele
- Beschreiben Sie, wie sich die Aktionen eines einzelnen Benutzers auf die Erfahrungen anderer Benutzer in einem gemeinsam genutzten System auswirken können.
- Diskutieren Sie das Verhalten eines rücksichtsvollen gemeinsamen Systembürgers.
- Erklären Sie, wie wichtig es ist, kritische Daten zu sichern.
- Beschreiben Sie die Herausforderungen bei der Übertragung großer Datenmengen von HPC-Systemen.
- Konvertiert viele Dateien in eine einzige Archivdatei mit tar.
Einer der Hauptunterschiede zwischen der Nutzung entfernter HPC-Ressourcen und Ihrem eigenen System (z.B. Ihrem Laptop) ist, dass entfernte Ressourcen gemeinsam genutzt werden. Wie viele Benutzer sich die Ressourcen gleichzeitig teilen, ist von System zu System unterschiedlich, aber es ist unwahrscheinlich, dass Sie jemals der einzige Benutzer sind, der an einem solchen System angemeldet ist oder es benutzt.
Der weit verbreitete Einsatz von Scheduling-Systemen, bei denen Benutzer Jobs auf HPC-Ressourcen einreichen, ist ein natürliches Ergebnis der gemeinsamen Nutzung dieser Ressourcen. Es gibt noch andere Dinge, die Sie als aufrechtes Mitglied der Gemeinschaft beachten müssen.
Sei nett zu den Login-Knoten
Der Login-Knoten ist oft damit beschäftigt, alle angemeldeten Benutzer zu verwalten, Dateien zu erstellen und zu bearbeiten und Software zu kompilieren. Wenn dem Rechner der Speicher oder die Verarbeitungskapazität ausgeht, wird er sehr langsam und für alle unbrauchbar. Der Rechner soll zwar genutzt werden, aber bitte nur so, dass die anderen Benutzer nicht beeinträchtigt werden.
Anmeldeknoten sind immer der richtige Ort, um Aufträge zu starten. Cluster-Richtlinien variieren, aber sie können auch zum Testen von Arbeitsabläufen verwendet werden, und in einigen Fällen können sie erweiterte clusterspezifische Debugging- oder Entwicklungstools hosten. Im Cluster gibt es möglicherweise Module, die geladen werden müssen, möglicherweise in einer bestimmten Reihenfolge, und Pfade oder Bibliotheksversionen, die sich von Ihrem Laptop unterscheiden. Ein interaktiver Testlauf auf dem Hauptknoten ist eine schnelle und zuverlässige Methode, um diese Probleme zu entdecken und zu beheben.
Anmeldeknoten sind eine gemeinsam genutzte Ressource
Denken Sie daran, dass der Login-Knoten mit allen anderen Benutzern geteilt wird und dass Ihre Aktionen Probleme für andere Personen verursachen könnten. Denken Sie daher sorgfältig über die möglichen Auswirkungen von Befehlen nach, die große Mengen an Ressourcen verbrauchen können.
Unsicher? Fragen Sie Ihren freundlichen Systemadministrator (“sysadmin”), ob das, was Sie vorhaben, für den Login-Knoten geeignet ist, oder ob es einen anderen Mechanismus gibt, um es sicher zu erledigen.
Sie können immer die Befehle top
und ps ux
verwenden, um die Prozesse aufzulisten, die auf dem Login-Knoten laufen,
zusammen mit der Menge an CPU und Speicher, die sie verwenden. Wenn
diese Überprüfung ergibt, dass der Login-Knoten einigermaßen untätig
ist, können Sie ihn gefahrlos für Ihre nicht-routinemäßige
Verarbeitungsaufgabe verwenden. Wenn etwas schief geht - der Prozess
braucht zu lange oder antwortet nicht - können Sie den Befehl
kill
zusammen mit der PID verwenden, um den
Prozess zu beenden.
Login-Knoten-Knigge
Welcher dieser Befehle wäre eine Routineaufgabe, die auf dem Anmeldeknoten ausgeführt werden sollte?
python physics_sim.py
make
create_directories.sh
molecular_dynamics_2
tar -xzf R-3.3.0.tar.gz
Das Erstellen von Software, das Anlegen von Verzeichnissen und das
Entpacken von Software sind übliche und akzeptable > Aufgaben für den
Login-Knoten: Die Optionen #2 (make
), #3
(mkdir
) und #5 (tar
) sind wahrscheinlich OK.
Beachten Sie, dass Skriptnamen nicht immer ihren Inhalt widerspiegeln:
bevor Sie #3 starten, prüfen Sie bitte
less create_directories.sh
und stellen Sie sicher, dass es
sich nicht um ein trojanisches Pferd handelt.
Das Ausführen ressourcenintensiver Anwendungen ist verpönt. Wenn Sie
nicht sicher sind, dass andere Benutzer nicht beeinträchtigt werden,
sollten Sie Aufträge wie #1 (python
) oder #4
(benutzerdefinierter MD-Code) nicht ausführen. Wenn Sie unsicher sind,
fragen Sie Ihren freundlichen Systemadministrator um Rat.
Wenn Sie Leistungsprobleme mit einem Anmeldeknoten haben, sollten Sie dies dem Systempersonal melden (normalerweise über den Helpdesk), damit sie es untersuchen können.
Test vor der Skalierung
Denken Sie daran, dass die Nutzung von gemeinsam genutzten Systemen in der Regel kostenpflichtig ist. Ein einfacher Fehler in einem Jobskript kann am Ende einen großen Teil des Ressourcenbudgets verschlingen. Stellen Sie sich vor, ein Jobskript mit einem Fehler, der dazu führt, dass es 24 Stunden lang auf 1000 Kernen nichts tut, oder eines, bei dem Sie versehentlich 2000 Kerne angefordert haben und nur 100 davon nutzen! Dieses Problem kann sich noch verschärfen, wenn Skripte geschrieben werden, die die Auftragsübermittlung automatisieren (z. B. wenn dieselbe Berechnung oder Analyse mit vielen verschiedenen Parametern oder Dateien ausgeführt wird). Dies schadet sowohl Ihnen (da Sie viele gebührenpflichtige Ressourcen verschwenden) als auch anderen Benutzern (denen der Zugriff auf die ungenutzten Rechenknoten verwehrt wird). Bei stark ausgelasteten Ressourcen kann es vorkommen, dass Sie tagelang in einer Warteschlange warten, bis Ihr Auftrag innerhalb von 10 Sekunden nach dem Start wegen eines trivialen Tippfehlers im Auftragsskript fehlschlägt. Das ist extrem frustrierend!
Die meisten Systeme bieten spezielle Ressourcen zum Testen an, die kurze Wartezeiten haben, damit Sie dieses Problem vermeiden können.
Testen Sie Skripte für die Übermittlung von Aufträgen, die große Mengen an Ressourcen verwenden
Bevor Sie eine große Anzahl von Aufträgen übermitteln, sollten Sie zunächst einen Testlauf durchführen, um sicherzustellen, dass alles wie erwartet funktioniert.
Bevor Sie einen sehr großen oder sehr langen Auftrag übermitteln, führen Sie einen kurzen, verkürzten Test durch, um sicherzustellen, dass der Auftrag wie erwartet startet.
Have a Backup Plan
Obwohl viele HPC-Systeme Backups aufbewahren, decken diese nicht immer alle verfügbaren Dateisysteme ab und sind möglicherweise nur für Disaster Recovery-Zwecke gedacht (d.h. für die Wiederherstellung des gesamten Dateisystems im Falle eines Verlustes und nicht für eine einzelne Datei oder ein Verzeichnis, das Sie versehentlich gelöscht haben). Der Schutz kritischer Daten vor Beschädigung oder Löschung liegt in erster Linie in Ihrer Verantwortung: Erstellen Sie eigene Sicherungskopien.
Versionskontrollsysteme (wie Git) haben oft kostenlose, Cloud-basierte Angebote (z. B. GitHub und GitLab), die im Allgemeinen zum Speichern von Quellcode verwendet werden. Auch wenn Sie keine eigenen Programme schreiben, können diese sehr nützlich sein, um Jobskripte, Analyseskripte und kleine Eingabedateien zu speichern.
Wenn Sie Software erstellen, haben Sie möglicherweise eine große Menge an Quellcode, den Sie kompilieren, um Ihre ausführbare Datei zu erstellen. Da diese Daten im Allgemeinen durch erneutes Herunterladen des Codes oder durch erneutes Auschecken aus dem Quellcode-Repository wiederhergestellt werden können, sind diese Daten auch weniger kritisch zu schützen.
Bei größeren Datenmengen, insbesondere bei wichtigen Ergebnissen
Ihrer Läufe, die möglicherweise unersetzlich sind, sollten Sie
sicherstellen, dass Sie über ein robustes System verfügen, mit dem Sie
Kopien der Daten vom HPC-System nach Möglichkeit auf einen gesicherten
Speicherplatz übertragen. Werkzeuge wie rsync
können dabei
sehr nützlich sein.
Ihr Zugriff auf das gemeinsam genutzte HPC-System ist in der Regel zeitlich begrenzt, daher sollten Sie sicherstellen, dass Sie einen Plan für die Übertragung Ihrer Daten vom System haben, bevor Ihr Zugriff endet. Die Zeit, die für die Übertragung großer Datenmengen benötigt wird, sollte nicht unterschätzt werden, und Sie sollten sicherstellen, dass Sie dies früh genug geplant haben (idealerweise, bevor Sie das System überhaupt für Ihre Forschung nutzen).
In all diesen Fällen sollte der Helpdesk des von Ihnen verwendeten Systems in der Lage sein, Ihnen nützliche Hinweise zu den Möglichkeiten der Datenübertragung für die von Ihnen verwendeten Datenmengen zu geben.
Ihre Daten sind Ihre Verantwortung
Vergewissern Sie sich, dass Sie die Sicherungsrichtlinien für die Dateisysteme auf dem von Ihnen verwendeten System kennen und wissen, welche Auswirkungen dies auf Ihre Arbeit hat, wenn Sie Ihre Daten auf dem System verlieren. Planen Sie die Sicherung kritischer Daten und die Art und Weise, wie Sie die Daten während des Projekts aus dem System transferieren werden.
Übertragen von Daten
Wie bereits erwähnt, stehen viele Benutzer irgendwann vor der Herausforderung, große Datenmengen von HPC-Systemen zu übertragen (dies geschieht häufiger bei der Übertragung von Daten von als auf Systeme, aber die folgenden Ratschläge gelten in beiden Fällen). Die Geschwindigkeit der Datenübertragung kann durch viele verschiedene Faktoren begrenzt werden, so dass der am besten geeignete Datenübertragungsmechanismus von der Art der zu übertragenden Daten und dem Zielort der Daten abhängt.
Die Komponenten zwischen der Quelle und dem Ziel Ihrer Daten haben unterschiedliche Leistungsniveaus und können insbesondere unterschiedliche Fähigkeiten in Bezug auf Bandbreite und Latenz haben.
Bandbreite ist im Allgemeinen die Rohdatenmenge pro Zeiteinheit, die ein Gerät senden oder empfangen kann. Es ist eine übliche und allgemein gut verstandene Metrik.
Latenz ist ein wenig subtiler. Bei Datenübertragungen kann man sie sich als die Zeit vorstellen, die benötigt wird, um Daten aus dem Speicher in eine übertragbare Form zu bringen. Latenzprobleme sind der Grund dafür, dass es ratsam ist, Datenübertragungen durch das Verschieben einer kleinen Anzahl großer Dateien durchzuführen und nicht umgekehrt.
Einige der Schlüsselkomponenten und die damit verbundenen Probleme sind:
- Festplattengeschwindigkeit: Dateisysteme auf HPC-Systemen sind oft hochgradig parallel und bestehen aus einer sehr großen Anzahl von Hochleistungslaufwerken. Dadurch können sie eine sehr hohe Datenbandbreite unterstützen. Wenn das entfernte System nicht über ein ähnlich paralleles Dateisystem verfügt, kann die Übertragungsgeschwindigkeit durch die dortige Festplattenleistung begrenzt sein.
- Metadaten-Leistung: Metadaten-Operationen wie das Öffnen und Schließen von Dateien oder das Auflisten des Besitzers oder der Größe einer Datei sind viel weniger parallel als Lese-/Schreiboperationen. Wenn Ihre Daten aus einer sehr großen Anzahl kleiner Dateien bestehen, kann es sein, dass Ihre Übertragungsgeschwindigkeit durch Metadatenoperationen begrenzt wird. Metadaten-Operationen, die von anderen Benutzern des Systems durchgeführt werden, können auch stark mit den von Ihnen durchgeführten Operationen interagieren, so dass eine Verringerung der Anzahl solcher Operationen (durch Zusammenfassen mehrerer Dateien zu einer einzigen Datei) die Variabilität Ihrer Übertragungsraten verringern und die Übertragungsgeschwindigkeit erhöhen kann.
- Netzwerkgeschwindigkeit: Die Leistung der Datenübertragung kann durch die Netzwerkgeschwindigkeit begrenzt werden. Noch wichtiger ist, dass sie durch den langsamsten Abschnitt des Netzwerks zwischen Quelle und Ziel begrenzt wird. Wenn Sie die Daten auf Ihren Laptop/Arbeitsplatz übertragen, ist dies wahrscheinlich seine Verbindung (entweder über LAN oder WiFi).
- Firewall-Geschwindigkeit: Die meisten modernen Netzwerke sind durch eine Art Firewall geschützt, die bösartigen Datenverkehr herausfiltert. Diese Filterung ist mit einem gewissen Overhead verbunden und kann zu einer Verringerung der Datenübertragungsleistung führen. Die Anforderungen eines Allzwecknetzes, das E-Mail-/Web-Server und Desktop-Rechner beherbergt, unterscheiden sich deutlich von denen eines Forschungsnetzes, das große Datenmengen übertragen muss. Wenn Sie versuchen, Daten zu oder von einem Host in einem Netzwerk für allgemeine Zwecke zu übertragen, werden Sie feststellen, dass die Firewall dieses Netzwerks die erreichbare Übertragungsrate begrenzt.
Wie bereits erwähnt, wird bei zusammenhängenden Daten, die aus einer
großen Anzahl kleiner Dateien bestehen, dringend empfohlen, die Dateien
zur langfristigen Speicherung und Übertragung in eine größere
Archiv-Datei zu packen. Eine einzelne große Datei nutzt das
Dateisystem effizienter und ist einfacher zu verschieben, zu kopieren
und zu übertragen, da deutlich weniger Metadatenoperationen erforderlich
sind. Archivdateien können mit Werkzeugen wie tar
und
zip
erstellt werden. Wir haben tar
bereits
kennengelernt, als wir früher über die Datenübertragung gesprochen
haben.
Überlegen Sie, wie Sie die Daten am besten übertragen
Wenn Sie große Datenmengen übertragen, müssen Sie sich Gedanken darüber machen, was Ihre Übertragungsleistung beeinträchtigen könnte. Es ist immer sinnvoll, einige Tests durchzuführen, anhand derer Sie hochrechnen können, wie lange die Übertragung Ihrer Daten dauern wird.
Angenommen, Sie haben einen Ordner “data”, der etwa 10.000 Dateien enthält, eine gesunde Mischung aus kleinen und großen ASCII- und Binärdaten. Welche der folgenden Möglichkeiten wäre die beste, um sie nach HPC Carpentry’s Cloud Cluster zu übertragen?
scp -r data yourUsername@cluster.hpc-carpentry.org:~/
rsync -ra data yourUsername@cluster.hpc-carpentry.org:~/
rsync -raz data yourUsername@cluster.hpc-carpentry.org:~/
-
tar -cvf data.tar data;
rsync -raz data.tar yourUsername@cluster.hpc-carpentry.org:~/
-
tar -cvzf data.tar.gz data;
rsync -ra data.tar.gz yourUsername@cluster.hpc-carpentry.org:~/
-
scp
wird das Verzeichnis rekursiv kopieren. Dies funktioniert, aber ohne Kompression. -
rsync -ra
funktioniert wiescp -r
, behält aber Dateiinformationen wie Erstellungszeiten bei. Dies ist geringfügig besser. -
rsync -raz
fügt eine Komprimierung hinzu, die etwas Bandbreite spart. Wenn Sie eine starke CPU an beiden Enden der Leitung haben und sich in einem langsamen Netzwerk befinden, ist dies eine gute Wahl. - Dieser Befehl verwendet zunächst
tar
, um alles in einer einzigen Datei zusammenzufassen, und dannrsync -z
, um es mit Kompression zu übertragen. Bei einer so großen Anzahl von Dateien kann der Overhead an Metadaten die Übertragung behindern, daher ist dies eine gute Idee. - Dieser Befehl verwendet
tar -z
, um das Archiv zu komprimieren, und dannrsync
, um es zu übertragen. Dies kann ähnlich funktionieren wie #4, aber in den meisten Fällen (bei großen Datenmengen) ist es die beste Kombination aus hohem Durchsatz und niedriger Latenz (um das Beste aus Ihrer Zeit und Ihrer Netzwerkverbindung zu machen).
Hauptpunkte
- Seien Sie vorsichtig, wie Sie den Login-Knoten verwenden.
- Für Ihre Daten auf dem System sind Sie selbst verantwortlich.
- Planen und Testen großer Datenübertragungen.
- Es ist oft am besten, viele Dateien vor der Übertragung in eine einzige Archivdatei zu konvertieren.