Configuration

Partitions

La partition est une ressource de calcul qui regroupe des nœuds dans une même entité logique définie par une ou plusieurs spécifications données (quelles soient matérielles ou liées à des ressources).

Pour obtenir un aperçu rapide des différentes partitions, on peut utiliser la commande sinfo :

% sinfo
PARTITION       AVAIL  TIMELIMIT  NODES  STATE NODELIST
htc*               up   infinite      1   drng ccwslurm0130
htc*               up   infinite    139    mix ccwslurm[...]
htc*               up   infinite     50  alloc ccwslurm[...]
htc_interactive    up   infinite      1    mix ccwislurm0001
htc_interactive    up   infinite      1   idle ccwislurm0002
htc_highmem        up   infinite      1    mix ccwmslurm0001
gpu                up   infinite      6    mix ccwgslurm[0002,0100-0104]
gpu_interactive    up   infinite      2    mix ccwgislurm[0001,0100]
hpc                up   infinite      2  alloc ccwpslurm[0001-0002]
flash              up   infinite      1    mix ccwslurm0001
htc_daemon         up   infinite      1    mix ccwslurm0001

Il existe trois partitions majeures distinctes : htc, hpc, gpu, ainsi que leurs équivalents pour les jobs interactifs : htc_interactive, hpc_interactive et gpu_interactive. Chacune de ces trois partitions correspond à l’une des trois plateformes de calcul décrites à la page concernant la plateforme de calcul.

La partition flash reserve la totalité d’un worker pour les tests et le debug des jobs. Cette partition est limitée par sa qos à une heure.

La partition htc_highmem est dédiée à des jobs qui ont besoin de beaucoup de mémoire et fournit un ratio mémoire/CPU plus élevé.

La partition htc_daemon permet d’exécuter des jobs sans limite de temps, mais limités à un cœur et 1 GB de mémoire. Cette partition est limitée par sa qos à 10 jobs par utilisateur.

Note

De manière simple, les jobs mono-cœur et multi-cœurs seront exécutés dans la partition htc, les jobs parallèles utilisant l’InfiniBand dans la partition hpc, et l’accès aux GPUs se fera par la partition gpu.

La commande sinfo indique également la restriction en temps pour l’exécution d’un job et les serveurs de calcul et leurs états appartenant à chacune de ces partitions.

Voici les principales options de la commande sinfo :

-a
affiche tous les serveurs de calcul
-d
affiche les serveurs de calcul hors ligne
-l
affiche la sortie dans un format long
-p <partition>
affiche les informations pour une partition spécifique

Pour afficher et consulter la configuration détaillée des partitions on utilisera scontrol :

% scontrol show partition
PartitionName=htc
   AllowGroups=ALL AllowAccounts=ALL AllowQos=ALL
   AllocNodes=ALL Default=YES QoS=N/A
   DefaultTime=NONE DisableRootJobs=YES ExclusiveUser=NO GraceTime=0 Hidden=NO
   MaxNodes=1 MaxTime=UNLIMITED MinNodes=0 LLN=NO MaxCPUsPerNode=UNLIMITED
   Nodes=ccwslurm[0001-0002,0005-0023]
   PriorityJobFactor=1 PriorityTier=1 RootOnly=NO ReqResv=NO OverSubscribe=NO
   OverTimeLimit=NONE PreemptMode=OFF
   State=UP TotalCPUs=1344 TotalNodes=21 SelectTypeParameters=NONE
   JobDefaults=(null)
   DefMemPerCPU=3000 MaxMemPerCPU=3100

   [...]
La commande donne les principales caractéristiques de ces partitions :
  • les groupes groups et comptes accounts autorisés,
  • les qualités de service associées (voir ci-dessous),
  • les ressources disponibles dans la partition,
  • les limites en terme de ressources de la partition.

Il faut distinguer la notion de groupes groups et de comptes accounts. Dans le premier cas, il s’agit du groupe tel que défini à la page intitulée Notions de laboratoire et groupe. Il correspond donc à une expérience ou une collaboration à laquelle l’utilisateur participe, et est le groupe Unix associé à l’utilisateur (groupe principal). Le compte accounts correspond à l’entité à laquelle les ressources utilisées par le job seront imputées. Il s’agira donc d’un groupe auquel l’utilisateur participe, mais qui peut être différent du groupe Unix auquel l’utilisateur est couramment associé.

Pour visualiser le compte account un utilisateur est rattaché, il suffit d’utiliser la commande :

% sacctmgr show user my_username

On peut aussi visualiser l’ensemble des comptes account auxquels un utilisateur est rattaché :

% sacctmgr show user my_username withassoc

avec my_username étant l’identifiant de l’utilisateur.

De manière générale, la commande sacctmgr permet de visualiser et de modifier l’ensemble des informations liées aux comptes accounts.

Pour plus de détails, veuillez vous référer à l’aide de la commande sacctmgr -h.

Note

Dans la pratique, à la soumission d’un job, on pourra spécifier la partition et le compte account à utiliser avec respectivement les options --partition et --account. Sans spécification particulière, Slurm optera pour la partition par défaut, i.e. htc, et le compte account principal de l’utilisateur (voir ci-dessus).

Qualité de service

La qualité de service, ou QoS (pour Quality Of Service), est une règle associée à une partition ou à un job qui permet de l’altérer. Elle peut par exemple modifier la priorité d’un job, ou en limiter les ressources allouées. La commande utilisée ci-dessous scontrol show partitions permettra de visualiser les QoS autorisées sur une partition.

Afin de lister les QoS disponibles, on pourra utiliser de nouveau la commande sacctmgr :

% sacctmgr show qos format=Name,Priority,MaxWall,MaxSubmitPU
    Name   Priority     MaxWall MaxSubmitPU
  ---------- ---------- ----------- -----------
    normal          0  7-00:00:00        3000
     flash          0    01:00:00          10
       gpu          0  7-00:00:00         100
    daemon          0                      10

Ici, on a restreint la sortie aux seuls champs nom, priorité, durée d’exécution et limite maximale de jobs soumis par utilisateur via l’option format.

La QoS normal est appliquée par défaut à tous les jobs. Elle en limite donc la durée d’exécution à 7 jours maximum. La QoS gpu a la même limite de temps mais est limitée à 100 jobs soumis. La QoS flash, quant à elle, limite ce temps d’exécution à 1 heure. Elle est automatiquement associée à la partition flash. Elle sera à privilégier pour effectuer des tests courts pour lesquels on souhaite avoir un résultat rapide. Le nombre de jobs simultanés utilisant cette QoS est toutefois limité à 10 par utilisateur. La QoS daemon est associée à la partition htc_daemon et est adaptée aux processus peu consommateurs de ressources mais devant rester en exécution sur des durées très élevées. Elle est également limitée à 10 jobs par utilisateur. Pour résumer :

normal
est utilisée avec les partitions htc, htc_interactive et hpc.
gpu
est utilisée avec les partitions gpu et gpu_interactive.
flash
est utilisée uniquement avec la partition flash.
daemon
est utilisée uniquement avec la partition htc_daemon.

Note

In fine, il suffit juste de définir une partition dans ses jobs, et la QoS sera définie automatiquement.