Outils pour utilisateurs

Outils du site


slurm:partitions

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
slurm:partitions [2022/12/21 14:06]
montap01 [Partitions ouvertes à tout chercheur]
slurm:partitions [2024/03/15 15:29] (Version actuelle)
montap01 [Partitions ouvertes à tout chercheur]
Ligne 1: Ligne 1:
 ~~SLIDESHOW theme=yatil level=4~~ ~~SLIDESHOW theme=yatil level=4~~
-====== Partitions de CALI-2 ======+====== Partitions de CALI-2, Feature ======
 Cet article décrit deux des notions fondamentales de l'ordonnanceur de travaux //slurm// :  Cet article décrit deux des notions fondamentales de l'ordonnanceur de travaux //slurm// : 
   * les //partitions//   * les //partitions//
Ligne 22: Ligne 22:
 ==== Partitions ouvertes à tout chercheur ==== ==== Partitions ouvertes à tout chercheur ====
 === Liste ==== === Liste ====
-^Partition ^Noeuds ^Durée max / job ^# noeuds max / job ^# CPU Max actives / User ^ Priorité ^ Infiniband ^ Pré-emptible ? ^ +^Partition ^Noeuds ^Durée max / job ^# noeuds max / job ^# CPU Max actives / User ^# Max Jobs actif (soumis) / User ^ Infiniband ^ Pré-emptible ? ^ 
-^rapide    |tous sauf GPU        | 1 H   |  N/A |  100| 32| Selon placement | Selon placement | +^rapide    |tous sauf GPU       1 H|  -|  32|   2 (10)|  Selon placement | Selon placement | 
-^normal    |tous sauf GPU        | **2 J**  |  N/A    50| 96| Selon placement | Selon placement | +^normal    |tous sauf GPU   **2 J** -|  120 - (400) Selon placement | Selon placement | 
-^cluster   |tous sauf GPU        | 45 J  |  1 |     196| Selon placement | Selon placement | +^cluster   |tous sauf GPU      45 J|  1|  120 - (400) Selon placement | Selon placement | 
-^gpu       |Ceux avec GPU        | 2 J   |  N/A    10| -| Non | Selon placement | +^gpu       |Ceux avec GPU       2 J|  -  - (400) Non | Selon placement |
- +
-==== Autres limites ==== +
-  * D'autres limites sont établies sur ces partitions à travers les QoS +
-  * Vous devez donc consulter ci-après la liste des QoS pour en prendre connaissance et bien comprendre la différence entre les partitions+
  
 +Pour ceux qui veulent en savoir plus, les //limites// ci-dessus sont imposées à travers plusieurs mécanismes : 
 +  * les limites des partitions proprement dites
 +  * le choix d'une //QoS// utilisateur qui est faite __automatiquement__ lors de la soumission d'un travail
 ==== Quelle partition choisir ? ==== ==== Quelle partition choisir ? ====
 Le principe général est le suivant :  Le principe général est le suivant : 
   * pour la mise au point de code, jobs très courts : ''rapide''   * pour la mise au point de code, jobs très courts : ''rapide''
-  * pour les jobs "normaux" +  * pour les jobs "normaux" : ''normal'' 
-    * ''normal'' -> mais ils doivent **durer moins de 2 jours** +    * point notable : **durée limitée à 2 jours** 
-    * ''cluster-e5v4'' -> ils doivent **durer moins de 2 jours** et ils peuvent être pré-emptés (voir ci-après) +  * pour les jobs "longs" : ''cluster'' 
-  * pour les jobs "longs" qui ne doivent pas être interrompus (MPI distribués par exemple) : ''cluster-nopreempt''. Mais les ressources disponibles sont limitées +    point notable limité à **un noeud max par job** (pas de job réparti sur plusieurs noeuds)
-  pour les jobs "longs" qui peuvent être pré-emptés ''cluster''. Mais un job ne pourra pas s'étendre sur plus d'un nœud (code séquentiel ou threadé ou MPI en mode shared memory)+
  
-=== Danger des jobs longs ===+=== Danger des jobs longs (partition cluster) ===
 Les jobs longs (plusieurs jours) sont à éviter autant que possible : Les jobs longs (plusieurs jours) sont à éviter autant que possible :
   * Les nœuds de calculs ne sont pas "hautement disponibles", ils peuvent être arrêtés inopinément. Si vous perdez 40 jours de calcul ... vous devrez patienter !   * Les nœuds de calculs ne sont pas "hautement disponibles", ils peuvent être arrêtés inopinément. Si vous perdez 40 jours de calcul ... vous devrez patienter !
   * L'ordonnanceur réalise un meilleur travail de placement et de répartition des ressources avec des jobs de courte durée   * L'ordonnanceur réalise un meilleur travail de placement et de répartition des ressources avec des jobs de courte durée
  
-=== Bonus / Malus sur cluster-e5v4 ==== +==== Partitions "privatives" (à accès restreint====
-La partition ''cluster-e5v4'' contient des nœuds de calcul acquis par deux laboratoires. Vos jobs peuvent être pré-emptés (par arrêt/relance) pour libérer des ressources pour les laboratoires qui les ont financés. +
- +
-Afin de vous inciter à l'utiliser, la QoS appliquée dessus possède un //facteur d'usage// nul, ce qui signifie que le temps CPU consommé sur cette partition ne sera pas comptabilisé lors du calcul de la priorité de vos jobs. +
- +
-==== Partitions à accès restreint ====+
 === Principe === === Principe ===
-Certains noeuds de calcul ont été financés spécifiquement par des laboratoires :+Certains noeuds de calcul ont été financés spécifiquement par des laboratoires ou groupes de chercheurs :
   * ces parties "privatives" peuvent être utilisées par tout le monde   * ces parties "privatives" peuvent être utilisées par tout le monde
-  * mais le laboratoire propriétaire sera hautement prioritaire lorsqu'il en aura besoin+  * mais le laboratoire propriétaire sera prioritaire lorsqu'il en aura besoin
  
-Pour répondre à ce besoin, les noeuds sont regroupés dans des partitions de très haute priorité, utilisables uniquement par le laboratoire propriétaire. +Autrement dit :  
 +  * les noeuds sont regroupés dans des partitions de haute priorité, utilisables uniquement par le laboratoire propriétaire. 
 +  * si des jobs d'autres partitions sont en cours d'utilisation, ils seront gelés pour laisser de la place
  
 === Utilisation === === Utilisation ===
 Afin d'utiliser une partition privative, un membre du laboratoire doit simplement changer le nom de la partition (''%%--partition%%''). Afin d'utiliser une partition privative, un membre du laboratoire doit simplement changer le nom de la partition (''%%--partition%%'').
- 
-Il est à noter qu'une QoS différente sera automatiquement sélectionnée :  
-  * pour ne pas pénaliser la priorité de l'équipe de recherche sur le reste du cluster 
-  * comme mesure de //contrôle d'accès// à la ressource 
-  * avec un facteur d'usage nul (ne compte pas dans le calcul de priorité pour la partie commune du cluster) 
  
 === Liste === === Liste ===
-^Partition           ^Noeuds  ^ Durée max      ^ Priorité+^Partition           ^Noeuds  ^ Durée max      ^ 
-^cluster-e5v4-umr850  |node46-57 (2016) |30 J |100 +^cluster-e5v4-umr850        |node46-57 (2016) |30 J | 
-^gpu-umr850  |node58 (2016) |30 J |100 +^gpu-umr850                 |node58 (2016)    |30 J | 
-^cluster-e5v4-xlim-electro  |node59-62 (2016) |30 J |100 +^cluster-e5v4-xlim-electro  |node59-62 (2016) |30 J | 
-^gpu-umr1248-gtx1080  |node63-64 (2018) |30 J |100 +^gpu-umr1248-gtx1080        |node63-64 (2018) |30 J | 
-^gpu-ircer-gtx1080  |node65 (2018) |30 J |100 +^gpu-ircer-gtx1080          |node65 (2018)    |30 J | 
-^xlim-cc  |node66 (2019) |30 J |100 |+^xlim-cc                    |node66 (2019)    |30 J | 
 + 
 + 
 +===== Les "Features" : contrôler le placement des jobs, éviter la pré-emption ===== 
 +==== Principe ==== 
 +Chaque //noeud// est marqué avec des //features//. Lorsqu'on lance un job, il est possible de demander son placement sur des noeuds possédant certaines //features//, avec par exemple l'option ''%%--constraint%%'' 
 + 
 +Sur CALI, vous pouvez utiliser les //features// pour plusieurs usages : 
 +  * demander un type de processeur 
 +  * demander des noeuds **qui ne sont pas soumis à la pré-emption** 
 +  * demander des noeuds **qui ont le réseau Infiniband** 
 + 
 +==== Eviter la pré-emption ==== 
 +Nous avons déjà vu que certains noeuds sont à la fois dans des partitions ouvertes à tout le monde, et dans des partitions //privatives//, prioritaires. Si un job est lancé dans la partition prioritaire, slurm va, si nécessaire, "libérer" des ressources via le mécanisme de //pré-emption// (gel des jobs en cours).  
 + 
 +Pour éviter ce mécanisme, appelez la //feature// ''NoPreemption''. Par exemple, ajouter : 
 +<file bash> 
 +#SBATCH --constraint=NoPreemption 
 +</file> 
 + 
 +__Inconvénient__ le job sera limité aux noeuds les plus anciens de CALI, il ne pourra pas s'exécuter sur les processeurs les plus puissants 
 + 
 +==== Choisir un type de processeur ==== 
 +Les partitions communes sont hétérogènes. Vous pouvez spécifier sur quel processeur vous voulez exécuter le job. 
  
 +Liste des //feature// déclarés (correspondant au nom du processeur) : 
 +  * ''Xeon-E5-2650-v2''
 +  * ''Xeon-E5-2630-v4''
 +  * ''Xeon-4108''
  
 +Pour que le job se lance sur des processeurs E5-2630-v4, il faut par exemple ajouter: 
 +<file bash>
 +#SBATCH --constraint=Xeon-E5-2630-v4
 +</file>
  
-===== QoS ===== +Consultez la page [[:materiel-cali2]] pour connaître le nombre de noeuds disponibles pour chaque type de processeur.
-La QoS, ou //Quality of Service //, est dans slurm une notion orthogonale aux partitions. En pratique, les QoS sont utilisés sur CALI-pour +
-  * imposer des limites, qu’on ne peut pas donner au niveau des partitions : nombre de job en cours par utilisateur, nombre de CPU, etc. +
-  * ou pour contrôler l'accès aux partitions privatives tout en ne comptabilisant pas le temps d'exécution sur ces partitions pour le calcul général du //fair-share//+
  
-==== Choix de la QoS ==== +==== Réseau Infiniband ==== 
-  * Dans notre configuration, une seule QoS est utilisée avec une partition +Tous les noeuds n'ont pas de réseau Infiniband
-  * Par simplicité, elle porte le même nom que la partition associée (sauf pour les "gold"+
-  * La QoS est **automatiquement sélectionnée** par rapport à la partition choisie, **vous n'avez donc pas besoin de la spécifier** +
-  * La liste ci-après vous permet de connaître les limites imposées par les QoS associées aux partitions +
-==== Liste ==== +
-^ QoS ^ # CPU max ^ # Noeuds max ^ # CPU max / util. ^ # job max actif / utilisateur ^ # job max en file / utilisateur ^ Facteur d'usage +
-^ rapide |                  |  32|  2|  10|  1.0| +
-^ normal |                  |  96|      |  1.0| +
-^ cluster|                  |  96|      |  1.0| +
-^ cluster-nopreempt |  88|  14|    |      |  1.0| +
-^ cluster-e5v4      |    |    |    |      |  0.0| +
-^ gold-geist-lcsn      |    |    |      |  0.0| +
-^ gold-geist-genolim|    |    |    |      |  0.0| +
-^ gold-geist-umr850 |    |    |    |      |  0.0| +
-^ gold-ipam-spcts      |    |    |      |  0.0|+
  
-==== S'informer sur les QoS ==== +En pratique, seuls 4 noeuds, dont 3 dédiés GPU, ne sont pas équipés. Si vous voulez être certains que votre job disposera du réseau Infiniband (utile pour les calculs distribués MPI), utilisez la //feature// ''Infiniband'' 
-  * Lister les QoS : ''sacctmgr list qos'' +<file bash
-  * Connaître les //QoS// avec lesquelles vous pouvez soumettre des travaux<code+#SBATCH --constraint=Infiniband 
-sacctmgr list user $(whoami) WithAssoc Format=User%18,Account%20,QoS%100 +</file>
-</code> +
-  * Lister les usagers autorisés pour une QoS <code> +
-sacctmgr list user  WithAssoc Format=User%18,Account%20,QoS%60 | grep QOS_CHERCHEE +
-</code>+
  
-===== Références ===== 
-  * http://slurm.schedmd.com/qos.html 
slurm/partitions.1671627992.txt.gz · Dernière modification: 2022/12/21 14:06 de montap01