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)