Inhaltsverzeichnis
Einloggen und Erste Schritte
Kurz gefasst
- Nutze ssh um zu 141.44.8.59 zuverbinden
- Erstelle ein SSL Schlüsselpaar
- Sende die folgenden Information an Dr. Schulenburg mit dem Betreff WWW-t100 (email unten)
- public key des Schlüsselpaars
- Kurze Beschreibung des Projekts
- Erforderlichen Ressourcen
- Falls du Student bist, frag dein Betreuer Erlaubnis
Bei Fragen zu Neumann kontaktiere Dr. Schulenburg joerg.schulenburg@ovgu.de, oder Tel. -58408.
Um das Neumann-Cluster nutzen zukönnen muss ein Account beantragt werden. Die notwendigen Informationen hierfür sind der Homepage zu entnehmen: Neumann-Cluster.
Sobald ein Account auf Neumann erstellt wurde, kann ein beliebiger SSH-Client genutzt werden um auf Neumann zu zugreifen.
[user@home]$ ssh user@141.44.8.59
oder
[user@home]$ ssh user@neumann.urz.uni-magdeburg.de
Schlüssel erstellen
Nach dem ersten Login sollte ein ein neuer SSH-Schlüssel innerhalb des Neumann-Clusters erzeugt werden. Auf diese Weise kann man sich per ssh
auf die Compute-Knoten einloggen.
Dieser Zugang wird für einige Programme benötigt die einen ssh
-Zugriff auf die zu benutzenden Knoten benötigen und nicht per mpirun
gestartet werden.
Zuerst wird ein neuer Schlüssel erzeugt. Achtung! Es darf hier keine Passphrase für den Schlüssel gesetzt werden.
[user@login ~]$ ssh-keygen
Nun wird der neue Schlüssel (id_rsa
oder ähnlich) den bekannten Schlüsseln hinzugefügt.
[user@login ~]$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
Zur Sicherheit wird der Fremdzugriff für authorized_keys
nocheinmal begrenzt mit:
[user@login ~]$ chmod 600 .ssh/authorized_keys
Nutzer, die folgende Programme nutzen möchten, müssen auf jeden Fall ein Schlüssel erzeugen!
- CD-Adapco StarCCM+
- ANSYS Fluent
- …
Arbeitsverzeichnis erstellen
Für den Nutzer sind zwei Verzeichnisse von Bedeutung /home/user
und /scratch/tmp/
.
Im home
-Verzeichnis sollten möglichst keine großen Daten abgelegt werden. Dafür ist das scratch
-Verzeichnis vorgesehen. Denn, im home
-Verzeichnis stehen nur etwa 1 Terabyte Speicherplatz zur Verfügung, im scratch
-Verzeichnis dagegen etwa 290 TB. Sollte das home
-Verzeichnis einmal vollgeschrieben werden, könnten sämtliche laufenden Jobs auf dem Cluster beeinträchtigt werden!
Wie viel Speicherplatz verfügbar ist kann so geprüft werden:
[user@login ~]$ df -h ~ Filesystem Size Used Avail Use% Mounted on controller:/home/vc-a 914G 592G 323G 65% /home [user@login ~]$ df -h /scratch/tmp/ Filesystem Size Used Avail Use% Mounted on beegfs_nodev 292T 4.7T 287T 2% /mnt/beegfs
Für den eigenen Account kann im Verzeichnis /scratch/tmp
ein Arbeitsverzeichnis wie folgt angelegt werden:
[user@login ~]$ mkdir /scratch/tmp/user
(user
mit dem eigenen Account austauschen oder durch ${USER}
ersetzen)
home
-Verzeichnis aus gestartet werden. Im Job-Skript sollte dann in das Arbeitsverzeichnis gewechselt werden (cd /scratch/tmp/user
).
Es werden keine Backups angelegt- weder für das home
-, noch für das scratch
-Verzeichnis. Wichtige Daten sollten also immer heruntergeladen/kopiert werden.
Ein Job einreichen
Die kurze Job-Skript-Datei im folgenden führt den Prozess sleep
für die angegebene Dauer aus und soll stellvertretend für eine richtige Aufgabe stehen.
- job.sh
#!/bin/bash #SBATCH -J testRun # jobname displayed by squeue #SBATCH -N 1 #SBATCH --time 00:05:00 # set walltime, what you expect as maximum, in 24h format #SBATCH -p sw01_short srun sleep 300
Dieses Skript wird mit dem Befehl sbatch eingereicht.
[user@login ~]$ sbatch job.sh Submitted batch job 14875
Sofern ein Knoten frei ist, wird dieser Job sofort ausgeführt. Meistens ist dies jedoch nicht der Fall sodass der Job in die Warteschleife eingefügt wird. Die Warteschleife kann mit dem Befehl squeue angezeigt werden.
[user@login ~]$ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 14726 big LSUB user1 PD 0:00 140 (Resources) 14743 big job-01 user2 PD 0:00 90 (Priority) 14821 big BTP user3 PD 0:00 40 (Dependency) 14824 big act user3 PD 0:00 30 (Resources) 14827 big sqt10 user4 PD 0:00 70 (Resources) 14710 big RGB_D4 user4 R 4-02:36:20 1 c116 14875 sw01_shor testRun user R 0:05 1 c002 14411 sw04_long MISLC user6 PD 0:00 4 (Dependency) 13212 sw04_long MISLC user6 R 9-21:22:05 4 c[088,107-109] 14437 sw04_long z_t user5 R 3:48:26 7 c[045-046,065...
Alternativ zu squeue
können auch qstat
und squeue_all
genutzt werden. Für Nutzer die bereits Erfahrungen mit anderen Workload Managern lässt sich eine Rosetta-Tafel für die Übersetzung alter Scripte nutzen.
Den laufenden Job steuern
Muss ein Job frühzeitig beendet werden oder einfach nur aus der Warteschleife
entfernt werden muss der Befehl scancel
genutzt werden:
[user@login ~]$ scancel 12345
Detailierte Aufgaben, wie Array-Jobs, mehrere Jobs,.. beenden, kann ebenfalls durchgeführt werden. Sie genaueres unter man scancel Alle Informationen von SLURM zu einem Job können mit eingesehen werden.
[user@login ~]$ scontrol show job 12345 JobId=12345 Name=BTP UserId=user(1000) GroupId=user(1000) Priority=4294892716 Nice=0 Account=(null) QOS=(null) JobState=PENDING Reason=Dependency Dependency=singleton Requeue=1 Restarts=0 BatchFlag=1 ExitCode=0:0 RunTime=00:00:00 TimeLimit=4-19:00:00 TimeMin=N/A SubmitTime=2016-07-22T13:39:14 EligibleTime=Unknown StartTime=Unknown EndTime=Unknown PreemptTime=None SuspendTime=None SecsPreSuspend=0 Partition=big AllocNode:Sid=c502:32676 ReqNodeList=(null) ExcNodeList=(null) NodeList=(null) NumNodes=40-40 NumCPUs=640 CPUs/Task=1 ReqB:S:C:T=0:0:*:* Socks/Node=* NtasksPerN:B:S:C=16:0:*:* CoreSpec=0 MinCPUsNode=16 MinMemoryNode=0 MinTmpDiskNode=0 Features=(null) Gres=(null) Reservation=(null) Shared=0 Contiguous=0 Licenses=(null) Network=(null) Command=/home/user/job.sh WorkDir=/home/user StdErr=/home/user/slurm-12345.out StdIn=/dev/null StdOut=/home/user/slurm-12345.out