> DIO/ Calcul/ Machine de Post-traitement (projet de modification)

07/09/2018 : Page décrivant le futur mode de fonctionnement de la machine Johannes. Une fois le fonctionnement validé, son contenu remplacera celui de la page actuellement disponible à l'adresse : http://dio.obspm.fr/Calcul/posttraitement/

Description générale

Présentation du service

La DIO met à disposition la machine johannes à grande capacité mémoire pour le post-traitement de résultats de simulations numériques et pour le traitement de données.

L'accès à cette machine est ouvert à tous les membres de l'Observatoire néanmoins il est nécessaire d'en faire la demande et de justifier des besoins d'accès à cette machine (nombre de coeurs, taille mémoire). Pour cela envoyez un mail à

admin.dio@obspm.fr

Nous invitons tous les utilisateurs à lire les paragraphes ci-dessous et à suivre ces recommandations. Pour une utilisation optimale de cette machine les utilisateurs doivent soumettre leurs jobs via le système de gestionnaire de tâches SLURM (Simple Linux Utility for Resource Management).

Description et caractéristiques techniques de la machine

48 coeurs Intel(R) Xeon(R) CPU E7-8857 v2 @ 3.00GHz

1,5 To de mémoire partagée entre les coeurs

Espaces de stockage

Chaque utilisateur possède des espaces de stockage suivant qui sont hébergé sur la frontale de la grappe tycho. Il sont décrit sur la page correspondante de la grappe tycho :

/obs/son_login = /home/son_login

/data/son_login

/poubelle/son_login

l'accès à ces espace se fait à travers le réseau et ne sont pas adaptés pour des accès intensifs.

Le utilisateurs faisant partie d'un projet ont accès aux espaces suivant hébergés sur une baie rattaché localement à la machine et peuvent de ce fait être utilisés pour des accès intensifs :

/johannes

/kepler

Le gestionnaire de tâches SLURM

Pour une utilisation optimale des ressources de la machine vous devez utiliser le gestionnaire de taches SLURM que ce soit pour travailler de manière interactive ou batch.

Plusieurs queues de soumission sont disponibles en fonction de vos besoins. Il est impératif de définir le temps et la mémoire souhaités.

La machine fonctionne selon deux modes :

  • projet : les ressources sont réparties entre les projets alma, orage et wibar et les utilisateurs hors projet. Ce mode de fonctionnement garantit un accès aux ressources financées par les projets contributeurs mais ne permet pas à un job d'utiliser plus d'un quart des ressources.

  • réservation : tout utilisateur peut demander à lancer un job utilisant les 2/3 des ressources de la machine. Durant cette période les projets font donc bénéficier des ressources qu'ils ont financées au demandeur de la réservation.

Il est important lancer tous les programme via le gestionnaire de ressources slurm. Autrement il y a risque de sur-utilisation des ressources en particulier de la mémoire et la machine risquerait de swapper et de devenir inutilisable.

Un script de surveillance envoit un mail lorsqu'il détecte de tels processus (plus tard il tuera ces processus).

Par contre il est possible de lancer un éditeur de texte en dehors de slurm.

Fonctionnement en mode projet

Les ressources de la machine sont réparties en 4 partitions : 3 réservées pour des projets et une ouverte aux utilisateurs hors projet.

partition temps max nb coeurs max mémoire max
alma 15 jours 12 coeurs 282 Go
orage 15 jours 12 coeurs 282 Go
wibar 15 jours 12 coeurs 358 Go
pub 15 jours 12 coeurs 512 Go

Une partition de moindre priorité permet d'utiliser plus de coeurs pendant que les partition dédiées aux projets sont partiellement utilisées. Le jobs soumis sur cette partition peuvent être suspendus pour permettre aux jobs soumis sur les partitions projets de démarrer immédiatement.

partition temps max nb coeurs max mémoire max
low 15 jours 36 coeurs 128 Go

Attention : en soumettant un job, il faut tenir compte de la prochaine réservation car un job ne peut démarrer que s'il se termine avant le début de la réservation.

Fonctionnement en mode réservation

S'il en a été fait la demande, une réservation a été mise en place pour le premier vendredi du mois. Durant cette période :

  • le bénéficiaire de la réservation a accès la partiton all :
partition temps max nb coeurs max mémoire max
all 3 jours et 12 heures 32 coeurs 956.6 Go
  • les projets ont accès à leurs partitions mais se partagent les ressources restantes, soit 16 coeurs et 478.2 Go

  • les jobs de la partition pub attendent la fin de la période de réservation pour démarrer

La prochaine réservation est affichée quand on se loggue sur la machine, par exemple :

Prochaine reservation de la machine :
 ReservationName=all StartTime=2016-10-28T19:00:00 EndTime=2016-10-31T06:00:00 Duration=2-12:00:00

L'utilisateur qui bénéficie de la réservation doit lancer son job avec les options suivantes :

--partition=all --reservation=all

On peut afficher toutes les reservations avec la commande :

scontrol show reservation

Interaction entre les deux modes de fonctionnement

La mise en place d'une réservation affecte le lancement des jobs des partitions projet et 'pub' :

  • un job de la partition 'pub' ne pourra démarrer que s'il se termine avant la date de commencement de la réservation

  • un job d'une partition projet ne pourra démarrer que s'il y aura suffisament de ressources disponibles durant la période de réservation.

Conditions concernant la demande et l'utilisation d'une réservation

Tout utilisateur peut demander une réservation pour lancer un job utilisant une fraction significative des ressources de la machine autrement indisponibles en temps ordinaire.

En temps ordinaire, la partition 'pub' acceptant les jobs de 12 coeurs et 512 Go de mémoire, une demande de réservation devra donc être justifiée par l'utilisation de plus de 512 Go.

Le job (ou la série jobs) utilisant la réservation devra être de type mémoire partagée (OpenMP ou multi-thread).

La réservation devra faire l'objet d'une demande à admin.dio@obspm.fr au moins 15 jours à l'avance le temps que les jobs en cours aient le temps de se terminer (il faut de plus tenir compte du temps du traitement de la demande).

La réservation sera mise en place dès que possible et sera effective pour le premier vendredi du mois suivant à 20h.

En cas de demandes concurrentes, la priorité est donnée au demandeur qui en aura le moins bénéficié par le passé.

La mise en place d'une réservation est soumise à l'utilisation significative des ressources mises à disposition par un seul job de type mémoire partagée (par ex. multi-thread ou OpenMP). Ceci sera contrôlé par la DIO a posteriori.

L'utilisation d'une réservation exclut l'utilisation simultanée des ressources restantes pour l'utilisateur ayant fait la réservation.

En cas de conflit concernant l'attribution d'une réservation la DIO demandera un arbitrage à la CIO.

Soumission de jobs de type batch

Des exemples de fichiers de soumission sont disponibles sur la page de la grappe tycho ainsi que la description des commandes SLURM

Un modèle simple de script exemple.slurm :

#!/bin/bash
#SBATCH --job-name=MonProg {Nom du programme}
#SBATCH --partition=pub    {La file d'attente}
#SBATCH --time=1-23:00:00  {Le temps sous la forme J-HH:MM:SS}
#SBATCH -n 12              {Le nombre de coeurs}
#SBATCH --mem=1gb          {La mémoire demandée}
./nom_de_l_executable      {Le programme a lancer}

Le script est à soumettre avec la commande :

sbatch exemple.slurm

Remarque : pour utiliser toute la mémoire disponible sur une partition, il faut préciser la valeur exacte en Mo. Cette valeur peut-être obtenue avec une des commandes :

scontrol show partition [nom_de_la_partition]

Par exemple dans le cas de la partition pub on obtient MaxMemPerNode=524288 il faut donc préciser --mem=524288 dans le script de soumission.

Soumission de jobs interactifs

Pour la réservation de ressources pour travailler de manière interactive il faut utiliser la commande srun

    srun -p [partition] -t [tempsMinute] -J [NomJob] --mem=[memoire] --pty bash

Pour avoir le numero du job qui s'affiche dans le prompt il faut ajouter dans votre fichier ~/.bashrc la ligne

    PS1='\u@\h${SLURM_JOBID:+:$SLURM_JOBID}:\w\$ '

Statistiques d'utilisation

Statistiques pour l'année 2018

Statistiques pour l'année 2017

Statistiques pour l'année 2016