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
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 ,