Optimisation de l'allocation des nœuds de calculs au sein d'un cluster SLURM dans le cloud (H/F)

L’objectif du stage est de mieux prendre en compte les contraintes externes connues dans la gestion du cycle de vie des nœuds de calcul dans un cluster Slurm dans le cloud.

ElastiSlurm est une solution de cluster HPC basée sur SLURM réalisée avec le soutien de Google. ElastiSlurm tend vers le “no-ops”, c’est à dire que tout les composants sont déployés à l’aide d’outil permettant de gérer leur cycle de vie et de garantir un haut niveau de disponibilité. ElastiSlurm est aujourd’hui exploité pour la gestion de plusieurs infrastructure pouvant comporter plusieurs centaines de milliers de cœurs.

Un des modes de fonctionnement d’ElastiSlurm permet de s’assurer que le cycle de vie des jobs de calcul correspond au cycle de vie des ressources utilisées (machine virtuelle, système de fichier parallèle, réseau haute performance, etc.). Le composant en charge de cette gestion permet de gérer plusieurs régions cloud (i.e. plusieurs centres de données) en essayant d’allouer les ressources de façon successive dans les différentes régions. Dans certaines situations, il est possible d’anticiper l'échec d’une allocation. Par exemple, des quotas sur la région peuvent limiter le nombre total de machines utilisable dans une région.

L’objectif du stage sera de construire un nouveau module de gestion du cycle de vie des ressources prennant en compte ces différentes données externes. Contrairement à la version actuelle, ce module devra fonctionner dans un process externe à Slurm afin de permettre une meilleure gestion des droits au sein de la plateforme.

Le stagiaire commencera par mettre en place une interface réseau (gRPC ou REST) pour extraire le module de gestion du cycle de vie existant. Il devra ensuite concevoir des algorithmes d’allocation répondant à l’ensemble des contraintes qui auront été identifiées. Une attention particulière sera portée sur la résilience et la reprise sur erreur du module. En effet, la plateforme devra supporter la perte de n’importe quel nœud, dont celui hébergeant le module.

Mots-clés : slurm, hpc-cloud, programmation en mémoire partagée

Pré-requis : Python, bash, développement sous environnements GNU/linux, connaissances système et réseau, programmation parallèle et distribuée

Compétences optionnelles : Terraform, cloud, batch schedulers, CI/CD

Contacts :

Candidater via mail sur recrut’at’aneo.fr

  • Florian Lemaitre - flemaitre’at’aneo.fr
  • Wilfried Kirschenmann - wkirschenmann’at’aneo.fr

Lieu du stage : Boulogne Billancourt

Référence :