Utilisation des clusters de calcul

Avertissement

L’utilisation de OAR est obligatoire sur les clusters de la Plateforme DISC

Introduction

Vous souhaitez lancer un calcul (séquentiel ou parallèle) nécessitant une certaine quantité de ressources (coeurs, noeuds …) et de mémoire. Il faut vous connecter en SSH sur un des clusters de calcul de DISC, et utiliser OAR

C’est Quoi OAR ?

OAR est un « JOB SCHEDULER » ou un gestionnaire de ressources

il sert à gérer les ressources d’une machine multi-utilisateurs multi-taches en permettant:

  • de choisir les ressources physiques à utiliser

  • de planifier le lancement des calculs (heure de départ, durée limite …)

  • de réserver les ressources nécessaire au bon déroulement d’un calcul

  • d’ordonnancer les « JOB » lancés par les utilisateurs

OAR est un outil indispensable

Lancer un travail sur le cluster

Que faire ?

Sur le frontal du cluster, lancer votre calcul dans un environnement OAR (via oarsub) en précisant vos besoins en termes de ressources (coeurs, noeuds …), d’heure de démarrage et de durée.

Cela vous garantie notamment que votre calcul sera seul sur les ressources allouées et donne plus de sens au temps de calcul observés.

Comment le faire ?

avec oarsub

Deux modes principaux de fonctionnement sont possibles :

  • interactif (option -I), l’appel à oarsub réserve les ressources demandées et ouvre une session sur un noeud du cluster. L’utilisateur a ensuite la main pour lancer son application ou tout autre commande. Dès lors que l’utilisateur quitte sa « session OAR » il libère automatiquement les ressources.

Voir les nombreux exemples du paragraphe « Lancement d’un job en interactif ».

  • batch (option -S), les ressources requises, la durée du calcul, le(s) job(s) à lancer sont décrits dans un script, lancé en tâche de fond. Les ressources seront libérés à la fin du « walltime » fixé ou par la suppression du job (oardel).

Le mode batch utilize la même notation que le mode interactif à ceci près qu’il faut renseigner les ressources dans le script.

Voici les commandes de bases necessaire pour utiliser OAR.

Lancement d’un job en interactif : option -I

Demander un seul coeur, n’importe ou

oarsub -I

Demander un noeud en entier (l’ensemble des coeurs et de la mémoire)

oarsub -I -l /nodes=1

Demander quatre coeurs sur un même processeur (sur un seul noeud)

oarsub -I -l /cpu=1/core=4

Demander quatre coeurs, répartis sur deux processeurs du même noeud

oarsub -I -l /nodes=1/cpu=2/core=2

Demander quatre coeurs, répartis sur deux noeuds, un seul processeur par noeud

oarsub -I -l /nodes=2/cpu=1/core=2

Demander quatre coeurs, répartis sur deux noeuds, un seul coeur par processeur

oarsub -I -l /nodes=2/cpu=2/core=1

Demander la machine agui005 en entier

oarsub -I -p "network_address = 'agui005'"

Demander deux coeurs sur chaque processeur de la machine ’agui001’

oarsub -I -p "network_address = 'agui001'" -l /cpu=2/core=2

Demander deux coeurs sur un même processeur sur la machine agui005

oarsub -I -l "{host = 'agui005'}"/cpu=1/core=2

Lancement d’un travail en batch : option -S

Dans ce cas, les ressources requises sont décrites dans un script.

Lancer un travail

oarsub -S ./oarscript.sh

Demander un ensemble de ressources décrites dans un script, avec placement sur un noeud particulier

oarsub -S -p "network_address = 'agui005'" ./mon_script_oar.sh

Demander des ressources pour le 5 juillet 2019 à 13h45

oarsub -S -r "2019-07-05 13:45:00" ./oarscript.sh

Lancer un job en mode best-effort

oarsub -S  ./oarscript.sh -t besteffort

Etre raisonnable: le walltime

La variable denvironnement OAR_JOB_WALLTIME contient la durée maximum du job. Par défaut, le walltime dun job est à 2 heures dans le format suivant: 02:00:00

Il est également possible de fixer le walltime en passant en paramètre la valeur souhaitée:

Pour le mode interactif, à travers loption « -l walltime= »

`oarsub -I -l /core=1,walltime=05:00:00`

Pour le mode batch, en modifiant la ligne du script suivante

`#OAR -l /core=1,walltime=05:00:00`

Gérer ses travaux lancés sur le cluster

Obtenir la liste des jobs tournant sur la machine

oarstat:

Job id     Name           User           Submission Date     S Queue
---------- -------------- -------------- ------------------- - ----------
12281      coral_32BCtb   chetrit        2014-04-28 10:05:28 R default

Supprimer un travail en cours

oardel Jobid

oardel 12281

les fichiers en sorties d’OAR

Lors de l’appel à oarsub, deux fichiers sont générés dans le répertoire courant :

  • OAR.jobname.jobid.err : listes des erreurs lors de l’appel à oarsub. C’est le premier fichier à vérifier pour être sur que tout s’est bien passé. S’il n’est pas vide, inutile d’aller plus loin …

  • OAR.jobname.jobid.out : sortie standart du job.

    jobname est le nom du job en cours (donné par exemple dans le script OAR) et jobid son identifiant (oarstat).

Séquence de calcul « standard »

pour soumette un travail en mode BATCH sur le cluster il faut au minimum:

  • écrire le script de soumission monscript.oar

  • soumettre le batch: oarsub -S ./monscript.oar

  • vérifier le fichier d’erreur de OAR.jobname.jobid.err

  • Suivre son déroulement (oarstat, ….)

  • vérifier les résultats

  • nettoyer impérativement l’espace de travail (suppression fichier de travail et intermediares, l’espace disque n’est pas infini, pensez au autres ..)

Les principales fonctionnalités

Lister l’état des ressources du cluster: oarnodes

La commande oarnodes permet de connaitre l’état des resources d’un cluster ou d’une machine

oarnodes:

[chetrit@agui ~]$ oarnodes
network_address : agui001
resource_id : 1
state : Alive
properties : core=1, deploy=NO, besteffort=YES, cpuset=0, desktop_computing=NO, nbcores=8,
available_upto=2147483647, cpu=1, host=agui001, network_address=agui001, freq=3000,
cputype=X5365, last_available_upto=0, mem=16, type=default

network_address : agui002
resource_id : 10
state : Alive
properties : core=10, deploy=NO, besteffort=YES, cpuset=2, desktop_computing=NO,
nbcores=8, available_upto=2147483647, cpu=3, host=agui002, network_address=agui002,
freq=3000, cputype=X5365, last_available_upto=0, mem=16, type=default

...

Il peut également être utile de connaitre plus succintement l’état de chacune des ressources. On entend ici « ressources » au sens « coeur », mais il peut exister bien d’autres types de ressources (espace disque, mémoire, etc…). Pour cela, nous utilisons l’option -s de cette même commande :

oarnodes -s:

[chetrit@agui ~]$ oarnodes -s
agui001
    1 : Alive
    2 : Alive
    3 : Alive
    4 : Alive
    5 : Alive
    6 : Alive
    7 : Alive
    8 : Alive
agui002
    10 : Alive
    11 : Alive
    12 : Alive
    13 : Alive
    14 : Alive
    15 : Alive
    16 : Alive
    9 : Alive
agui003
    17 : Alive
    18 : Alive
    19 : Alive
    20 : Alive
    21 : Alive

Lister l’état des travaux en cours : oarstat

La commande oarstat permet d’avoir une vue de la file d’attente des jobs et de leur état.

oarstat:

chetrit@agui ~]$ oarstat
Job id     Name           User           Submission Date     S Queue
---------- -------------- -------------- ------------------- - ----------
12281      coral_32BCtb   chetrit        2014-04-28 10:05:28 R default

Il est également possible de connaître les détails d’un job (ressources utilisés, état, dead-line, etc…) en utilisant les options -fj :

oarstat -fj jobid:

chetrit@agui ~]$ oarstat -fj 12281
Job_Id: 12281
    job_array_id = 12281
    job_array_index = 1
    name = coral_32BCtb
    project = default
    owner = chetrit
    state = Running
    wanted_resources = -l "{type = 'default'}/host=1/cpu=1/core=5,walltime=24:0:0"
    types =
    dependencies =
    assigned_resources = 49+50+51+52+53
    assigned_hostnames = agui007
    queue = default
    command = ./testsaxs.oar
    launchingDirectory = /home/chetrit/testsaxs
    stdout_file = coral_32BCtb_12281.log
    stderr_file = coral_32BCtb_12281.log
    jobType = PASSIVE
    properties = (mem>36) AND desktop_computing = 'NO'
    reservation = None
    walltime = 24:0:0
    submissionTime = 2014-04-28 10:05:28
    startTime = 2014-04-28 10:05:30
    cpuset_name = chetrit_12281
    initial_request = oarsub -S ./testsaxs.oar; #OAR -l host=1/cpu=1/core=5,
    walltime=24:00:00; #OAR -p mem>36; #OAR -n coral_32BCtb; #OAR -O
    coral_32BCtb_%jobid%.log; #OAR -E coral_32BCtb_%jobid%.log;
    #OAR --notify mail:bernard.chetrit@inserm.fr
    message = Karma = 0.208
    scheduledStart = 2014-04-28 10:05:30
    resubmit_job_id = 0
    events = [2014-04-28 10:05:30] USER_MAIL_NOTIFICATION:[Judas]
    Send a mail to bernard.chetrit@inserm.fr --> RUNNING ,

Supprimer un travail : oardel

Seul. Pour supprimer un job et ainsi libérer les ressources liées, il suffit de lancer la commande : oardel numero_du_job

Pour tout renseignement vous pouvez contacter l’équipe DISC .