Monitoratge i Control
Aquesta secció destaca les eines proporcionades per SLURM per monitorar l’estat dels treballs i controlar l’ús dels recursos al clúster.
Monitoratge de Treballs
SLURM ofereix diverses eines per monitorar l’estat dels treballs.
La comanda per a visualitzar els nodes ocupats és sinfo. Aquesta comanda proporciona detalls valuosos per comprendre l’estat general del sistema i la disponibilitat de recursos per executar treballs
$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
dops up infinite 3 mix cetus,dops-a3,psi
dops up infinite 8 idle dops-a[1-2,4-5],log-c[1-4]
robotica up infinite 1 idle sputnik
citcea up infinite 4 idle log-c[1-4]
all* up infinite 3 mix cetus,dops-a3,psi
all* up infinite 8 idle dops-a[1-2,4-5],log-c[1-4],sputnik
Per a més detalls, hi ha l’opció -Nel:
$ sinfo -Nel
Tue Feb 18 16:22:41 2025
NODELIST NODES PARTITION STATE CPUS S:C:T MEMORY TMP_DISK WEIGHT AVAIL_FE REASON
cetus 1 dops mixed 40 2:10:2 64166 0 1 (null) none
cetus 1 all* mixed 40 2:10:2 64166 0 1 (null) none
dops-a1 1 dops idle 4 1:4:1 15879 0 1 (null) none
dops-a1 1 all* idle 4 1:4:1 15879 0 1 (null) none
dops-a2 1 dops idle 4 1:4:1 15879 0 1 (null) none
dops-a2 1 all* idle 4 1:4:1 15879 0 1 (null) none
dops-a3 1 dops mixed 8 1:4:2 15878 0 1 (null) none
dops-a3 1 all* mixed 8 1:4:2 15878 0 1 (null) none
dops-a4 1 dops idle 8 1:4:2 15900 0 1 (null) none
dops-a4 1 all* idle 8 1:4:2 15900 0 1 (null) none
dops-a5 1 dops idle 8 1:4:2 15900 0 1 (null) none
dops-a5 1 all* idle 8 1:4:2 15900 0 1 (null) none
log-c1 1 dops idle 4 1:2:2 3715 0 1 (null) none
log-c1 1 citcea idle 4 1:2:2 3715 0 1 (null) none
log-c1 1 all* idle 4 1:2:2 3715 0 1 (null) none
log-c2 1 dops idle 4 1:2:2 3779 0 1 (null) none
log-c2 1 citcea idle 4 1:2:2 3779 0 1 (null) none
log-c2 1 all* idle 4 1:2:2 3779 0 1 (null) none
log-c3 1 dops idle 4 1:2:2 3715 0 1 (null) none
log-c3 1 citcea idle 4 1:2:2 3715 0 1 (null) none
log-c3 1 all* idle 4 1:2:2 3715 0 1 (null) none
log-c4 1 dops idle 4 1:2:2 3779 0 1 (null) none
log-c4 1 citcea idle 4 1:2:2 3779 0 1 (null) none
log-c4 1 all* idle 4 1:2:2 3779 0 1 (null) none
psi 1 dops mixed 128 2:32:2 257379 0 1 (null) none
psi 1 all* mixed 128 2:32:2 257379 0 1 (null) none
sputnik 1 robotica idle 16 1:8:2 15934 0 1 (null) none
sputnik 1 all* idle 16 1:8:2 15934 0 1 (null) none
La comanda per a visualitzar la cua de treballs és squeue. Aquesta comanda proporciona una llista de treballs en execució, la seva prioritat i altres detalls rellevants. Exemple d’ús:
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
544 dops bash alexandr R 0:20 1 psi
545 dops bash alexandr R 0:13 1 dops-a1
Si voleu més detalls, podeu utilitzar l’opció -o per seleccionar els camps a mostrar:
$ squeue -o "%A %u %t %M"
JOBID USER ST TIME
544 alexandre.gracia R 0:55
545 alexandre.gracia R 0:48
Existeix una comanda personalitzada scua que permet veure el resultat de la cua amb els paràmetres de reserva de cores i memòria.
$ scua
JOBID CPUS MIN_MEM EXEC_HOST TIME USER NAME ST
400 7 7G cetus 0:10:28 alexandre.gracia test_docplex R
La comanda srun ens permet executar una comanda on la comanda podria ser per exemple ‘htop’ i veure el resultat en temps real Exemples:
$ srun -w cetus htop # Mostra el htop de cetus, -w serveix per a passar per comanda la màquina que volem usar i esperant el resultat per terminal.
$ srun sleep 120 & # Enviarà a la primera màquina que trobi disponible 1 core amb la comanda sleep durant 120 segons. El símbol & Allibera la terminal
$ srun -w cetus --mem=2G sleep 120 & #Posarà a dormir un core de cetus durant 120 segons i reservant 2GB i alliberarà la terminal.
Monitoratge usant htop a un node
Hem creat un script que permet executar la comanda htop a un node. Exemple:
$ mvachtop node # Exemple mvachtop psi
Connexió mitjançant ssh a un node
Hem creat un script que permet fer una conexió ssh a les màquines per a executar comandes simples de linux: Concretament obre una terminal al node indicat amb 1 core i 512MB de ram Exemple:
$ mvacinteract node # Exemple mvacinteract psi
$ (venv)nom.usuari@psi:~/$
Informació sobre un treball
Hem creat un script que permet que permet obtenir informació d’un treball segons el seu id un cop executat: Exemple:
$ sjob id # On id és un número, Exemple: sjob 433
JobId 433 Information:
JobId=433
UserId=alexandre.gracia(6334)
GroupId=usuaris(3014)
Name=hostname
JobState=COMPLETED
Partition=all
TimeLimit=UNLIMITED
StartTime=2024-02-11T12:00:38
EndTime=2024-02-11T12:00:38
NodeList=log-c4
NodeCnt=1
ProcCnt=2
WorkDir=/home/users/alexandre.gracia
ReservationName=
Tres=cpu=1,mem=1G,node=1,billing=1
Account=
QOS=
WcKey=
Cluster=unknown
SubmitTime=2024-02-11T12:00:38
EligibleTime=2024-02-11T12:00:38
DerivedExitCode=0:0
ExitCode=0:0
Consultar cores usats i disponibles
SLURM permet consultar l’estat dels cores usats amb la comanda sinfo o squeue. Només hem d’afegir certs paràmetres:
Per a més paràmetres en la sortida consultar el manual de sinfo o squeue de slurm, ja que hi han molts paràmetres i existeixen moltes personalitzacions dels mateixos.
$ squeue -o"%.7i %.9P %.8j %.8u %.2t %.10M %.6D %C"
JOBID PARTITION NAME USER ST TIME NODES CPUS
1357 all test alexandre.gr R 15:29:13 1 2
$ sinfo -o "%n %e %m %C" | awk 'NR==2{print "Hostname Free Mem CPUS(Active/Idle/Offline/Total)"} NR>1{print}' | column -t
Hostname Free Mem CPUS(Active/Idle/Offline/Total)
cetus 57063 64166 32/8/0/40
dops-a3 13086 15878 6/2/0/8
psi 92724 257379 32/96/0/128
dops-a1 13433 15879 0/4/0/4
dops-a2 13967 15879 0/4/0/4
dops-a4 13514 15900 0/8/0/8
dops-a5 13633 15900 0/8/0/8
log-c1 2049 3715 0/4/0/4
log-c2 2521 3779 0/4/0/4
log-c3 2176 3715 0/4/0/4
log-c4 2506 3779 0/4/0/4
sputnik 15934 15934 0/0/16/16
Eficiència seff
De les comandes més importants seff, que ens permet veure l’eficiència de les nostres execucions:
$ seff job_id # On id és un número, Exemple: seff 12895
Job ID: 12895
Cluster: multivac
User/Group:
/usuaris
State: COMPLETED (exit code 0)
Nodes: 1
Cores per node: 30
CPU Utilized: 00:02:17
CPU Efficiency: 57.08% of 00:04:00 core-walltime
Job Wall-clock time: 00:00:08
Memory Utilized: 3.35 MB
Memory Efficiency: 0.02% of 20.00 GB (20.00 GB/node)