tech:notes_ordonnanceur_cluster_grid_batch_scheduler_slurm
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédente | |||
| tech:notes_ordonnanceur_cluster_grid_batch_scheduler_slurm [2026/03/19 17:16] – Jean-Baptiste | tech:notes_ordonnanceur_cluster_grid_batch_scheduler_slurm [2026/06/07 19:12] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | < | ||
| + | {{tag> | ||
| + | |||
| + | # Notes ordonnanceur cluster grid batch scheduler slurm | ||
| + | |||
| + | ## Slurm | ||
| + | |||
| + | Liens : | ||
| + | * http:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * https:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * http:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * https:// | ||
| + | * http:// | ||
| + | * https:// | ||
| + | * http:// | ||
| + | * https:// | ||
| + | |||
| + | API | ||
| + | * http:// | ||
| + | |||
| + | Voir aussi : | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | |||
| + | ## A faire | ||
| + | |||
| + | MPI with Slurm | ||
| + | * http:// | ||
| + | * openmpi | ||
| + | * https:// | ||
| + | * hwloc-nox (Portable Linux Processor Affinity (PLPA)) | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * http:// | ||
| + | * https:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | |||
| + | |||
| + | ## Install | ||
| + | |||
| + | Slurm utilisant par défaut **munge** pour faire le lien entre les comptes des machines **il faut que toutes les machines aient l' | ||
| + | |||
| + | Manager : | ||
| + | ~~~bash | ||
| + | apt-get install slurm-wlm | ||
| + | ~~~ | ||
| + | |||
| + | Nœuds : | ||
| + | ~~~bash | ||
| + | apt-get install -y slurmd slurm-wlm-basic-plugins | ||
| + | ~~~ | ||
| + | |||
| + | Manager et Nœuds | ||
| + | ~~~bash | ||
| + | systemctl enable munge.service | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | zcat / | ||
| + | ~~~ | ||
| + | |||
| + | Il faut adapter slurm.conf, il peut-être généré à partir de : | ||
| + | * / | ||
| + | * / | ||
| + | * https:// | ||
| + | |||
| + | On copie le même fichier de conf sur les nœuds (le même fichier sur le manager que sur les nœuds) | ||
| + | ~~~bash | ||
| + | scp -3 vmdeb1:/ | ||
| + | scp -3 vmdeb1:/ | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | Lister les " | ||
| + | ~~~bash | ||
| + | scontrol show daemons | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | Sur le maître (ControlMachine) : slurmctld slurmd \\ | ||
| + | Sur les nœuds : slurmd | ||
| + | |||
| + | `/ | ||
| + | ~~~ini | ||
| + | # slurm.conf file generated by configurator easy.html. | ||
| + | # Put this file on all nodes of your cluster. | ||
| + | # See the slurm.conf man page for more information. | ||
| + | # | ||
| + | ControlMachine=vmdeb1 | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | MpiDefault=openmpi | ||
| + | MpiParams=ports=12000-12999 | ||
| + | # | ||
| + | # | ||
| + | Proctracktype=proctrack/ | ||
| + | SlurmctldPidFile=/ | ||
| + | # | ||
| + | SlurmdPidFile=/ | ||
| + | # | ||
| + | SlurmdSpoolDir=/ | ||
| + | SlurmUser=slurm | ||
| + | # | ||
| + | |||
| + | #UsePAM=1 | ||
| + | DisableRootJobs=YES | ||
| + | EnforcePartLimits=YES | ||
| + | JobRequeue=0 | ||
| + | ReturnToService=1 | ||
| + | # | ||
| + | |||
| + | # Must be writable by user SlurmUser. The file must be accessible by the primary and backup control machines. | ||
| + | # On NFS share !? See http:// | ||
| + | StateSaveLocation=/ | ||
| + | |||
| + | SwitchType=switch/ | ||
| + | # | ||
| + | # | ||
| + | TaskPlugin=task/ | ||
| + | |||
| + | # | ||
| + | # | ||
| + | # TIMERS | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | |||
| + | Waittime=0 | ||
| + | # | ||
| + | # | ||
| + | # SCHEDULING | ||
| + | FastSchedule=1 | ||
| + | SchedulerType=sched/ | ||
| + | # | ||
| + | SelectType=select/ | ||
| + | # | ||
| + | # | ||
| + | # LOGGING AND ACCOUNTING | ||
| + | ClusterName=cluster1 | ||
| + | # | ||
| + | JobAcctGatherType=jobacct_gather/ | ||
| + | # | ||
| + | SlurmctldLogFile=/ | ||
| + | # | ||
| + | SlurmdLogFile=/ | ||
| + | SlurmSchedLogFile=/ | ||
| + | |||
| + | # | ||
| + | # | ||
| + | JobCompType=jobcomp/ | ||
| + | JobCompLoc=/ | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | AccountingStorageType=accounting_storage/ | ||
| + | AccountingStoreJobComment=YES | ||
| + | DefaultStorageType=accounting_storage/ | ||
| + | # | ||
| + | AccountingStoragePort=6819 | ||
| + | AccountingStorageEnforce=associations | ||
| + | # | ||
| + | # | ||
| + | NodeName=vmdeb1 | ||
| + | |||
| + | # COMPUTE NODES | ||
| + | NodeName=DEFAULT | ||
| + | PartitionName=DEFAULT MaxTime=INFINITE State=UP | ||
| + | |||
| + | NodeName=vmdeb2 CPUs=1 RealMemory=494 State=UNKNOWN | ||
| + | NodeName=vmdeb3 CPUs=2 RealMemory=494 TmpDisk=8000 State=UNKNOWN | ||
| + | PartitionName=debug Nodes=vmdeb[2-3] Default=YES MaxTime=INFINITE | ||
| + | ~~~ | ||
| + | |||
| + | ### Install de slurmdbd | ||
| + | |||
| + | Il est recommandé d' | ||
| + | |||
| + | Ici on part du principe que vous avez déjà une base de donnés MySQL et compte et droits crée. | ||
| + | |||
| + | ~~~bash | ||
| + | apt-get install slurmdbd | ||
| + | zcat / | ||
| + | ~~~ | ||
| + | |||
| + | On adapte le fichier slurmdbd.conf | ||
| + | Puis | ||
| + | |||
| + | ~~~bash | ||
| + | service slurmdbd restart | ||
| + | ~~~ | ||
| + | |||
| + | On test | ||
| + | |||
| + | ~~~ | ||
| + | sacct | ||
| + | | ||
| + | ------------ ---------- ---------- ---------- ---------- ---------- -------- | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Pb | ||
| + | |||
| + | ~~~bash | ||
| + | munge -n | ssh vmdeb1 | ||
| + | ~~~ | ||
| + | |||
| + | ~~~ | ||
| + | STATUS: | ||
| + | ~~~ | ||
| + | |||
| + | Solution : | ||
| + | ~~~bash | ||
| + | ntpdate -u pool.ntp.org | ||
| + | ~~~ | ||
| + | |||
| + | ~~~ | ||
| + | sudo -u slurm -- / | ||
| + | / | ||
| + | |||
| + | -c : Clear : Efface l'etat précedent, purge les jobs... | ||
| + | -D : Deamon : Lancement en arrière plan. Logs sur STDOUT | ||
| + | -v : Verbose : Mode bavare. Mettre plusieurs " | ||
| + | |||
| + | slurmd -C | ||
| + | Affiche la configuration de l' | ||
| + | |||
| + | |||
| + | Aide | ||
| + | |||
| + | Le **man** | ||
| + | et | ||
| + | commande --help | ||
| + | commande --usage | ||
| + | |||
| + | Variables : | ||
| + | SQUEUE_STATES=all for the squeue command to display jobs in any state. (y compris les job en COMPLETED et CANCELLED) | ||
| + | |||
| + | Commande : | ||
| + | sbatch | ||
| + | salloc | ||
| + | srun | ||
| + | sattach | ||
| + | |||
| + | srun -l --ntasks-per-core=1 --exclusive -n 2 hostname | ||
| + | sinfo --Node | ||
| + | scontrol show partition | ||
| + | scancel --user=test --state=pending | ||
| + | scontrol show config | ||
| + | scontrol show job | ||
| + | scancel -i --user=test | ||
| + | |||
| + | # The Slurm -d singleton argument tells Slurm not to dispatch this job until all previous jobs with the same name have completed. | ||
| + | |||
| + | sbatch -d singleton simple.sh | ||
| + | |||
| + | scontrol ping | ||
| + | sinfo -R | ||
| + | |||
| + | # Afficher egalement les jobs terminés | ||
| + | squeue -t all | ||
| + | |||
| + | #A/I/O/T = " | ||
| + | sinfo -l | ||
| + | |||
| + | # | ||
| + | sinfo -Nle -o '%n %C %t' | ||
| + | ~~~ | ||
| + | |||
| + | ### Astuce | ||
| + | |||
| + | #### Lancer une commande **srun** sans attendre | ||
| + | |||
| + | Normalement | ||
| + | ~~~ | ||
| + | $ srun -N2 -l hostname | ||
| + | srun: job 219 queued and waiting for resources | ||
| + | ~~~ | ||
| + | |||
| + | Solution (compte root ou le " | ||
| + | ~~~ | ||
| + | # sinfo --noheader -o %N | ||
| + | vmdeb[2-3] | ||
| + | ~~~ | ||
| + | |||
| + | ~~~ | ||
| + | # srun -N2 --no-allocate -w vmdeb[2-3] hostname | ||
| + | ~~~ | ||
| + | |||
| + | ------- | ||
| + | |||
| + | Cancel / terminate a job in " | ||
| + | |||
| + | ~~~bash | ||
| + | scontrol update nodename=node4-blender state=down reason=hung | ||
| + | scontrol update nodename=node4-blender state=idle | ||
| + | ~~~ | ||
| + | |||
| + | Il faudra aussi tuer le processus ' | ||
| + | Problème de flux réseaux : Node => Manager: | ||
| + | |||
| + | PB | ||
| + | |||
| + | </code -> | ||
| + | "srun: error: Application launch failed: User not found on host" | ||
| + | ~~~ | ||
| + | |||
| + | Solution : | ||
| + | Il faut que le même utilisateur ai le même UID sur les nœuds ainsi que sur le manager. Apparemment c'est lié à **munge** | ||
| + | Il peut être intéressant d' | ||
| + | |||
| + | |||
