Afficher l'état du cluster : sinfo, squeue

Avant de soumettre un job (voir SoumissionJob), il est important de connaître l'état du cluster. Le gestionnaire de ressources Slurm offre 2 commandes permettant d'y parvenir : sinfo qui donne des informations sur l'état des nœuds et partitions (voir ListePartitions) et squeue qui liste les jobs dans la file d'ordonnancement gérée par Slurm.

{i} Les commandes sinfo et squeue possèdent un grand nombre d'options dont une faible portion est présentée dans cette page. Pour plus de renseignements, consultez les pages de manuels (manpages) disponibles sur summit2 : commandes "man sinfo" et "man squeue".

1. "sinfo" : état des nœuds et des partitions

Si vous lancez la commande sinfo, vous obtiendrez une sortie semblable à celle-ci :

summit2:~> sinfo
PARTITION        AVAIL  TIMELIMIT NODES   CPUS(A/I/O/T) STATE  NODELIST
mpib40_SIRO      up    8-00:00:00     8       0/64/0/64 idle~  n[1-2,7-12]
mpib40_SIRO      up    8-00:00:00     6       48/0/0/48 alloc  n[3-6,13-14]
mpib40_POM       up    15-00:00:0    10       0/80/0/80 idle~  n[15-22,31,34]
mpib40_POM       up    15-00:00:0    12     112/0/0/112 alloc  n[23-30,32-33,35-36]
mpib40_B0        up       2:00:00    18     0/144/0/144 idle~  n[1-2,7-12,15-22,31,34]
mpib40_B0        up       2:00:00    18     160/0/0/160 alloc  n[3-6,13-14,23-30,32-33,35-36]
mpib40_MESO      up    10-00:00:0    36     0/288/0/288 idle~  n[101-136]
mpib40_MONO      up    10-00:00:0    36     0/288/0/288 idle~  n[101-136]
mono6_MESO       up    6-00:00:00    16     0/128/0/128 idle~  n[101-116]
mpib40_B1        up       2:00:00    36     0/288/0/288 idle~  n[101-136]
gpus             up       4:00:00     1         8/0/0/8 alloc# n140
gpus             up       4:00:00     1         0/0/4/4 down   n139
mpib20           up    1-00:00:00    10       0/20/0/20 idle~  n[205-212,218-219]
mpib20           up    1-00:00:00     8       16/0/0/16 alloc  n[213-217,220-222]
mpib20_8         up    8-00:00:00     2         0/4/0/4 idle~  n[218-219]
mpib20_8         up    8-00:00:00     8       16/0/0/16 alloc  n[213-217,220-222]
mpib20_15        up    15-00:00:0     2         0/4/0/4 idle~  n[218-219]
mpib20_15        up    15-00:00:0     4         8/0/0/8 alloc  n[217,220-222]
mpib20R410       up    1-00:00:00     2       0/16/0/16 idle~  n[225,228]
mpib20R410       up    1-00:00:00     3       24/0/0/24 alloc  n[223-224,226]
mpib20R410       up    1-00:00:00     1         0/8/0/8 idle   n227
mono_long        up    15-00:00:0     2       0/16/0/16 idle~  n[231,234]
mono_long        up    15-00:00:0     2       16/0/0/16 alloc  n[232-233]
o3pgeosN         up    10-00:00:0     1         0/8/0/8 idle~  n225
o3pgeosN         up    10-00:00:0     5       40/0/0/40 alloc  n[223-224,226,232-233]
bigmem48         up    2-00:00:00     1         0/8/0/8 idle~  n231
any*             up       2:00:00    74     0/532/0/532 idle~  n[1-2,7-12,15-22,31,34,101-136,201-202,204-212,218-219,225,228-231,234-235]
any*             up       2:00:00    32     224/0/0/224 alloc  n[3-6,13-14,23-30,32-33,35-36,203,213-217,220-224,226,232-233]
any*             up       2:00:00     1         0/8/0/8 idle   n227

Sur Summit2, les nœuds de calcul ont pour nom (hostname) : n1, n2, ... (voir ArchitectureSummit2) et Slurm emploie une notation compacte avec crochets "[]" pour identifier une liste de nœuds. Par exemple n[5-8,10-12] représente la liste des nœuds n5, n6, n7, n8, n10, n11, n12.

Sans option, la commande sinfo retourne une liste où chaque ligne correspond à une partition ET un état des nœuds dans cette partition. Les différents champs sont décrits ci-dessous :

PARTITION

nom de la partition configurée sur le cluster (voir la liste complète dans ListePartitions). Le suffixe * identifie la partition par défaut.

AVAIL

up ou down suivant la disponibilité de la partition. Il est impossible de soumettre un job sur une partition dans l'état down.

TIMELIMIT

limite de temps maximum en jour-heures:minutes:secondes pour tout job utilisateur soumis dans cette partition.

NODES

nombre de nœuds dans cette configuration particulière

CPUS(A/I/O/T)

nombre de cpus alloué/inactif/autre/total de cette configuration.

STATE

alloc

(allocated) nœud alloué par un job. Le suffixe "#" indique que le nœud est en train de s'allumer ou de se configurer.

comp

(completing) les jobs présents sur ce nœud sont en train de se terminer.

down

le nœud est inutilisable.

idle

le nœud est libre et disponible. Avec le suffixe "~", le nœud est disponible et éteint.

NODELIST

nom des nœuds associés à cette partition/configuration.

1.1. "sinfo -s" : vue compacte des partitions

Dans cette sortie, une ligne correspond à une partition. L'appartenance d'un nœud à une partition est plus clair mais on perd l'information sur l'état précis des nœuds.

summit2:~> sinfo -s
PARTITION AVAIL  TIMELIMIT   NODES(A/I/O/T)  NODELIST
mpib40_SI    up 8-00:00:00        4/10/0/14  n[1-14]
mpib40_PO    up 15-00:00:0        22/0/0/22  n[15-36]
mpib40_B0    up    2:00:00       26/10/0/36  n[1-36]
mpib40_ME    up 10-00:00:0        32/4/0/36  n[101-136]
mpib40_MO    up 10-00:00:0        32/4/0/36  n[101-136]
mono6_MES    up 6-00:00:00        14/2/0/16  n[101-116]
mpib40_B1    up    2:00:00        32/4/0/36  n[101-136]
gpus         up    4:00:00          0/1/1/2  n[139-140]
mpib20       up 1-00:00:00        8/10/0/18  n[205-222]
mpib20_8     up 8-00:00:00         8/2/0/10  n[213-222]
mpib20_15    up 15-00:00:0          4/2/0/6  n[217-222]
mpib20R41    up 1-00:00:00          5/1/0/6  n[223-228]
mono_long    up 15-00:00:0          3/1/0/4  n[231-234]
o3pgeosN     up 10-00:00:0          5/1/0/6  n[223-226,232-233]
bigmem48     up 2-00:00:00          0/1/0/1  n231
any*         up    2:00:00      81/26/0/107  n[1-36,101-136,201-235]

PARTITION

nom de la partition configurée sur le cluster (voir la liste complète dans ListePartitions). Le suffixe * identifie la partition par défaut.

AVAIL

up ou down suivant la disponibilité de la partition. Il est impossible de soumettre un job sur une partition dans l'état down.

TIMELIMIT

limite de temps maximum en jour-heures:minutes:secondes pour tout job utilisateur soumis dans cette partition.

NODES(A/I/O/T)

nombre de nœuds alloué/inactif/autre/total de cette partition.

NODELIST

nom des nœuds associés à cette partition.

1.2. "sinfo -p <partition>" : état des nœuds d'une partition

Sortie semblable à la commande sinfo seule mais pour la partition <partition>.

summit2:~> sinfo -p any
PARTITION        AVAIL  TIMELIMIT NODES   CPUS(A/I/O/T) STATE  NODELIST
any*             up       2:00:00    26     0/148/0/148 idle~  n[1-4,7-12,101-102,135-136,205-212,218-219,225,231]
any*             up       2:00:00    79     596/4/0/600 alloc  n[5-6,13-32,35-36,103-134,201-204,213-217,220-224,226-230,232-235]
any*             up       2:00:00     2       0/16/0/16 idle   n[33-34]

1.3. "sinfo -t idle,power_down" : nœuds inactifs

Si aucun nœud est inactif dans une partition, la colonne STATE affiche n/a (not available). Un nœud down est considéré comme éteint (power_down) et apparaîtra dans la liste :

summit2:~> sinfo -t idle,power_down
PARTITION        AVAIL  TIMELIMIT NODES   CPUS(A/I/O/T) STATE  NODELIST
mpib40_SIRO      up    8-00:00:00    10       0/80/0/80 idle~  n[1-4,7-12]
mpib40_POM       up    15-00:00:0     2       0/16/0/16 idle   n[33-34]
mpib40_B0        up       2:00:00    10       0/80/0/80 idle~  n[1-4,7-12]
mpib40_B0        up       2:00:00     2       0/16/0/16 idle   n[33-34]
mpib40_MESO      up    10-00:00:0     4       0/32/0/32 idle~  n[101-102,135-136]
mpib40_MONO      up    10-00:00:0     4       0/32/0/32 idle~  n[101-102,135-136]
mono6_MESO       up    6-00:00:00     2       0/16/0/16 idle~  n[101-102]
mpib40_B1        up       2:00:00     4       0/32/0/32 idle~  n[101-102,135-136]
gpus             up       4:00:00     1         0/8/0/8 idle~  n140
gpus             up       4:00:00     1         0/0/4/4 down   n139
mpib20           up    1-00:00:00    10       0/20/0/20 idle~  n[205-212,218-219]
mpib20_8         up    8-00:00:00     2         0/4/0/4 idle~  n[218-219]
mpib20_15        up    15-00:00:0     2         0/4/0/4 idle~  n[218-219]
mpib20R410       up    1-00:00:00     1         0/8/0/8 idle~  n225
mono_long        up    15-00:00:0     0         0/0/0/0 n/a    
o3pgeosN         up    10-00:00:0     1         0/8/0/8 idle~  n225
bigmem48         up    2-00:00:00     0         0/0/0/0 n/a    
any*             up       2:00:00    25     0/140/0/140 idle~  n[1-4,7-12,101-102,135-136,205-212,218-219,225]
any*             up       2:00:00     6       0/48/0/48 idle   n[33-34,201-204]

Il est bien évidemment possible de mixer cette option avec l'option -p <partition> pour spécifier une partition particulière :

summit2:~> sinfo -t idle,power_down -p mpib40_B1
PARTITION        AVAIL  TIMELIMIT NODES   CPUS(A/I/O/T) STATE  NODELIST
mpib40_B1        up       2:00:00     4       0/32/0/32 idle~  n[101-102,135-136]

1.4. "sinfo -R" : pour quelle raison un nœud est-il down ?

Un nœud dans l'état down est inutilisable. L'option -R indique pour quelle raison Slurm le considère down :

summit2:~> sinfo -R
REASON               USER      TIMESTAMP           NODELIST
Tests Sila           root      2012-03-14T17:03:55 n139
Not responding       slurm     2012-03-12T10:16:32 n224

L'administrateur du cluster (USER:root) peut volontairement positionner un nœud dans l'état down et en indiquer la raison comme ici pour le nœud n139. Si le gestionnaire de ressource Slurm (User:slurm) détecte qu'un nœud ne répond plus, il peut également forcer le nœud dans l'état down et invoquer la raison : Not responding. Dans ce cas, le nœud a véritablement un problème que les administrateurs (alertés automatiquement par mail) doivent identifier et résoudre.

1.5. "sinfo -o <format>" et "SINFO_FORMAT" : modifier le format de sortie

Vous pouvez adapter a votre convenance le format de sortie de la commande sinfo en spécifiant l'option -o suivi d'une chaîne de caractères dont la syntaxe est donnée dans la documentation Unix de sinfo : man sinfo. Une autre solution consiste à modifier la variable d'environnement SINFO_FORMAT en la définissant dans le fichier $HOME/.bashrc sur summit2 :

export SINFO_FORMAT="%16P %5a %.10l %.5D %.15C %6t %N"

Par défaut, elle contient la chaîne de caractères :

summit2:~> echo $SINFO_FORMAT 
%16P %5a %.10l %.5D %.15C %6t %N


Affichage des caractéristiques des nœuds configurés sous Slurm :

summit2:~> sinfo -e -o "%20N %.5D %.4c %.8z %.6m %.8d %.6w %8f"
NODELIST             NODES CPUS    S:C:T MEMORY TMP_DISK WEIGHT FEATURES
n[1-34,101-136]         70    8    2:4:1  24000   400000     10 NHM,IB40
n[35-36]                 2   16    2:4:2  24000   400000     10 NHM,IB40
n140                     1    8    2:4:1  24000   400000     10 NHM,GPU 
n139                     1    4    2:2:1   7500   400000     10 AMD,GPU 
n[205-222]              18    2    2:1:1   7900   120000      5 AMD,IB20
n[223-228]               6    8    2:4:1  24000   400000     15 NHM,IB20
n231                     1    8    2:4:1  45000   400000     20 NHM     
n[229-230,232-235]       6    8    2:4:1  24000   400000     10 NHM     
n[201-204]               4    8    2:4:1   7986   225000      3 XEON    


1.6. "scontrol show <partition|node>" : informations de configuration des partitions/nœuds

{i} Pour une description des champs affichés, voir le manpage : man scontrol.

2. "squeue" : état des jobs

La commande précédente nous informe sur l'état des nœuds dans les partitions. La commande squeue va nous apprendre ce qui occupe les nœuds alloués en nous fournissant la liste des jobs gérés par Slurm (voir SoumissionJob) ainsi que leur état.

summit2:~> squeue
  JOBID    PARTITION     NAME     USER  ST       TIME  NODES  CPUS  NODELIST(REASON)
  26922          any diag075.    chajp   R      16:29      2    16  n[201-202]
  26923          any diag075.    chajp   R      16:29      2    16  n[203-204]
  26919     bigmem48     bash    gazdi   R      56:09      1     8  n231
  26915    mono_long run_prep     bera   R    1:31:37      1     1  n234
  26730     mpib20_8 calcul_m     bugm   R   18:38:27      1     2  n222
  26535     mpib20_8 calcul_m     bugm   R 3-04:17:21      1     2  n220
  26787     mpib20_8   run.sh    assem   R 1-00:57:09      5    10  n[213-217]
  26657     mpib20_8 calcul_m     bugm   R 2-03:54:05      1     2  n221
  26895   mpib40_POM OPENMP_8     aucf   R    3:39:06      8    64  n[23-30]
  26892   mpib40_POM OPENMP_8     aucf   R    3:40:29      8    64  n[15-22]
  26918   mpib40_POM     bash     aucf   R    1:13:40      2    16  n[31-32]
  26891   mpib40_POM OPENMP_8     aucf   R    3:40:56      2    18  n[35-36]
  26572  mpib40_SIRO    diag8     ulsc   R 3-01:38:32      2    16  n[5-6]
  26534  mpib40_SIRO  gdlSfut     estc   R 3-19:28:17      2    16  n[13-14]
  26799     o3pgeosN geos_ch_     saub  PD       0:00      1     8  (Dependency)
  26800     o3pgeosN geos_ch_     saub  PD       0:00      1     8  (Dependency)
  26801     o3pgeosN geos_ch_     saub  PD       0:00      1     8  (Dependency)
  26802     o3pgeosN geos_ch_     saub  PD       0:00      1     8  (Dependency)
  26924     o3pgeosN geos_ch_     saub   R       2:42      1     8  n225
  26821     o3pgeosN geos_ch_     saub   R   21:21:06      1     8  n232
  26815     o3pgeosN geos_ch_     saub   R   21:23:36      1     8  n233
  26809     o3pgeosN geos_ch_     saub   R   21:27:34      1     8  n223
  26779     o3pgeosN geos_ch_     saub   R 1-01:11:15      1     8  n226
  26771     o3pgeosN geos_ch_     saub   R 1-01:14:32      1     8  n224

JOBID

Tout job est identifié par un entier unique

PARTITION

Nom de la partition où le job est soumis

NAME

Nom de la commande (ou du job si l'option -J <jobname> a été fournie à salloc, srun, sbatch)

USER

Utilisateur propriétaire du job

ST (STATE)

R (RUNNING)

Le job détient une allocation

PD (PENDING)

Le job est en attente d'allocation de ressource : la raison est indiquée dans la colonne NODELIST(REASON)

CF (CONFIGURING)

Le job a obtenu une allocation mais attend que la ressource soit disponible (généralement nœud éteint qui démarre)

CG (COMPLETING)

Le job est en phase de terminaison

TIME

Temps écoulé pour le job dans le format jours-heures:minutes:secondes

NODES

Nombres de nœuds alloués pour le job

CPUS

Nombres de cpus alloués pour le job

NODELIST(REASON)

Liste de nœuds affectées au job si le job n'est pas en attente ou la raison de l'attente, voir ci-dessous

(Resources)

Le job attend que la ressource devienne disponible (utilisée par un autre job)

(Dependency)

Ce job attend qu'un autre job se termine

(Priority)

Un ou plusieurs jobs de priorité plus forte existe pour cette partition

2.1. "squeue -u <user>" : lister les jobs de l'utilisateur <user>

Pour sélectionner les jobs d'un ou plusieurs utilisateurs, utilisez l'option -u suivi d'une liste de "login" séparée par une virgule :

summit2:~> squeue -u gazdi
  JOBID    PARTITION     NAME     USER  ST       TIME  NODES  CPUS  NODELIST(REASON)
  26919     bigmem48     bash    gazdi   R      56:09      1     8  n231

summit2:~> squeue -u gazdi,chajp
  JOBID    PARTITION     NAME     USER  ST       TIME  NODES  CPUS  NODELIST(REASON)
  26922          any diag075.    chajp   R      16:29      2    16  n[201-202]
  26923          any diag075.    chajp   R      16:29      2    16  n[203-204]
  26919     bigmem48     bash    gazdi   R      56:09      1     8  n231

2.2. "squeue -o <format>" et "SQUEUE_FORMAT" : modifier le format de sortie

Comme avec sinfo, vous pouvez adapter a votre convenance le format de sortie de la commande squeue en spécifiant l'option -o suivi d'une chaîne de caractères dont la syntaxe est donnée dans la documentation Unix de squeue : man squeue. Une autre solution consiste à modifier la variable d'environnement SQUEUE_FORMAT en la définissant dans le fichier $HOME/.bashrc sur summit2 :

export SQUEUE_FORMAT="%.7i %.12P %.8j %.8u %.2t %.10M %.6D %.5C %R"

Par défaut, elle contient la chaîne de caractères :

summit2:~> echo $SQUEUE_FORMAT 
%.7i %.12P %.8j %.8u %.2t %.10M %.6D %.5C %R

2.3. "scontrol show job <jobid>" : infos détaillées d'un job

Pour obtenir des informations très détaillées sur un job, comme l'instant de soumission, l'instant de démarrage ou de fin supposé, le nom de la commande, les dépendances, etc..., utilisez la commande :

scontrol show job <jobid> 

{i} La commande "scontrol show job" (sans l'argument <jobid>) affiche le détail de TOUS les jobs gérés par Slurm.

Par exemple, si on l'applique au job 26799 qui se trouve dans l'état Pending pour raison de dépendance, on peut constater qu'il attend la fin du job 26771 comme indiqué sur la ligne JobState :

summit2:~> squeue -u saub
  JOBID    PARTITION     NAME     USER  ST       TIME  NODES  CPUS  NODELIST(REASON)
  26799     o3pgeosN geos_ch_     saub  PD       0:00      1     8  (Dependency)
  26800     o3pgeosN geos_ch_     saub  PD       0:00      1     8  (Dependency)
  26801     o3pgeosN geos_ch_     saub  PD       0:00      1     8  (Dependency)
  26802     o3pgeosN geos_ch_     saub  PD       0:00      1     8  (Dependency)
  26924     o3pgeosN geos_ch_     saub   R       2:42      1     8  n225
  26821     o3pgeosN geos_ch_     saub   R   21:21:06      1     8  n232
  26815     o3pgeosN geos_ch_     saub   R   21:23:36      1     8  n233
  26809     o3pgeosN geos_ch_     saub   R   21:27:34      1     8  n223
  26779     o3pgeosN geos_ch_     saub   R 1-01:11:15      1     8  n226
  26771     o3pgeosN geos_ch_     saub   R 1-01:14:32      1     8  n224

summit2:~> scontrol show job 26799
JobId=26799 Name=geos_ch_nested5.sh
   UserId=saub(1601) GroupId=O3P(600)
   Priority=1 Account=basesummit2 QOS=normal
   JobState=PENDING Reason=Dependency Dependency=afterok:26771
   Requeue=0 Restarts=0 BatchFlag=1 ExitCode=0:0
   RunTime=00:00:00 TimeLimit=10-00:00:00 TimeMin=N/A
   SubmitTime=2012-03-14T15:01:23 EligibleTime=Unknown
   StartTime=Unknown EndTime=Unknown
   PreemptTime=None SuspendTime=None SecsPreSuspend=0
   Partition=o3pgeosN AllocNode:Sid=summit2:4022
   ReqNodeList=(null) ExcNodeList=(null)
   NodeList=(null)
   NumNodes=1 NumCPUs=8 CPUs/Task=8 ReqS:C:T=*:*:*
   MinCPUsNode=8 MinMemoryNode=0 MinTmpDiskNode=0
   Features=(null) Gres=(null) Reservation=(null)
   Shared=OK Contiguous=0 Licenses=(null) Network=(null)
   Command=/home2/saub/Code.v9-01-01_simus/g5_0.5x0.5_v0_nokpp_nested5/run2/geos_ch_nested5.sh
   WorkDir=/home2/saub/Code.v9-01-01_simus/g5_0.5x0.5_v0_nokpp_nested5/run2


CatégorieDocSlurm

WikiSummit2: EtatCluster (dernière édition le 2012-03-19 12:56:00 par DidierGazen)