Condor est le logiciel qui gère le Grid, l'infrastructure de calcul distribué de l'INGI.
Un certain nombre de machines sont dédiées au calcul pour le Grid. Toutes les machines de salles étudiantes sont accessibles via le Grid. Plus d'informations sur les caractéristiques de ces machines est disponible sur la page dédiée au matériel.
Condor vous permet d'exécuter des tâches sur le Grid.
Le noeud principal de Condor est studssh.info.ucl.ac.be
. Pour interagir avec le Grid, vous devez d'abord vous connecter:
ssh LOGIN_INGI@studssh.info.ucl.ac.be
Maintenant que vous êtes sur StudSSH, vous pouvez interagir avec Condor, et donc avec le Grid. Pour lancer un de vos scripts sur le Grid, vous devez tout d'abord créer un fichier de description du travail à effectuer, puis soumettre ce fichier.
Voici un exemple de fichier de description:
#Votre script a exécuter Executable = mandel.py #Le log dans lequel tout sera indiqué Log = mandel.log #Les sorties. $(Process) indique le numéro du processus Output = mandel.outputfile.$(Process) #Permet d'exécuter le job sur les machines en x86_64. Important. requirements = Arch == "X86_64" #Executer 10 fois le script Queue 10
Vous pouvez également rajouter une ligne Input = fichierinput
, qui sera appliqué sur l'input standard de votre script.
Tous les chemins du fichier sont relatifs par rapport au fichier.
Un script de test, mandel.py
, est fourni en bas de cette page.
Sauvegardons donc ce fichier sous le doux nom de job
.
Maintenant que vous avez sauvegardé votre configuration, il vous suffit de la soumettre à Condor:
$ condor_submit job Submitting job(s).......... Logging submit event(s).......... 10 job(s) submitted to cluster 1737074.
Notez qu'il faudra plusieurs minutes avant que le travail sur vos tâches commence, même si la file d'attente est vide.
La commande condor_status permet de voir quelles machines sont utilisées actuellement:
$ condor_status Name OpSys Arch State Activity LoadAv Mem ActvtyTime slot1@amidala.info LINUX X86_64 Unclaimed Idle 0.060 1476 0+01:45:05 slot2@amidala.info LINUX X86_64 Unclaimed Idle 0.000 1476 0+01:45:06 slot3@amidala.info LINUX X86_64 Unclaimed Idle 0.000 1476 0+01:45:07 slot4@amidala.info LINUX X86_64 Unclaimed Idle 0.000 1476 0+01:45:08 ... slot4@yoda.info.uc LINUX X86_64 Owner Idle 0.000 1476 0+00:45:07 slot5@yoda.info.uc LINUX X86_64 Owner Idle 0.000 1476 0+00:45:08 slot6@yoda.info.uc LINUX X86_64 Owner Idle 0.000 1476 0+00:45:09 slot7@yoda.info.uc LINUX X86_64 Owner Idle 0.000 1476 0+00:45:10 slot8@yoda.info.uc LINUX X86_64 Owner Idle 0.000 1476 0+00:45:03 Machines Owner Claimed Unclaimed Matched Preempting X86_64/LINUX 200 17 0 183 0 0 Total 200 17 0 183 0 0
La colonne Activity est la colonne la plus importante : elle indique si la machine est en attente d'un travail (Idle
) ou occupée (Busy
).
Pour voir les tâches en attente et en cours d'exécution, exécutez la commande condor_q
:
$ condor_q -- Submitter: studssh.info.ucl.ac.be : <130.104.78.16:9680> : studssh.info.ucl.ac.be ID OWNER SUBMITTED RUN_TIME ST PRI SIZE CMD 1688394.0 trung 3/4 14:25 0+00:00:31 R 0 0.1 SECAlgo SupportGra 1688415.0 trung 3/4 14:25 0+00:00:00 I 0 0.1 SECAlgo SupportGra ...
La colonne ST
contient le statut actuel de la tâche : R=Running
(en cours),H=Held
(erreur), I=Idle
(en attente).
$ condor_q -submitter LOGIN_INGI
L'argument -bet
(diminutif de -better-analyse
) affiche beaucoup d'informations sur les tâches en attente. Particulièrement utile lorsque votre tâche est Held
.
$ condor_q -submitter pirauxma -bet .... 1737073.002: Run analysis summary. Of 51 machines, 5 are rejected by your job's requirements 0 reject your job because of their own requirements 0 match but are serving users with a better priority in the pool 46 match but reject the job for unknown reasons 0 match but will not currently preempt their existing job 0 are available to run your job Last successful match: Tue Mar 4 15:32:23 2014 The Requirements expression for your job is: ( target.Arch == "X86_64" ) && ( target.OpSys == "LINUX" ) && ( target.Disk >= DiskUsage ) && ( ( target.Memory * 1024 ) >= ImageSize ) && ( TARGET.FileSystemDomain == MY.FileSystemDomain ) Condition Machines Matched Suggestion --------- ---------------- ---------- 1 ( target.Arch == "X86_64" ) 46 2 ( target.OpSys == "LINUX" ) 51 3 ( target.Disk >= 2 ) 51 4 ( ( 1024 * target.Memory ) >= 2 ) 51 5 ( TARGET.FileSystemDomain == "info.ucl.ac.be" ) 51 ...
Il n'est pas grave d'avoir un certain nombre de machines dans la catégorie X match but reject the job for unknown reasons
. Cela signifie simplement que votre tâche n'est pas encore parvenue jusqu'elles. Cela peut prendre plusieurs minutes.
Voici un script python qui tourne assez longtemps, pour vous permettre d'effectuer un test de votre configuration. Il calcule des fractales de Mandelbrot... sur la console.
#!/usr/bin/python # by Daniel Rosengren import os, sys, time stdout = sys.stdout BAILOUT = 16 MAX_ITERATIONS = 100000 class Iterator: def __init__(self): print 'Rendering...' for y in range(-39, 39): stdout.write('\n') for x in range(-39, 39): i = self.mandelbrot(x/40.0, y/40.0) if i == 0: stdout.write('*') else: stdout.write(' ') def mandelbrot(self, x, y): cr = y - 0.5 ci = x zi = 0.0 zr = 0.0 i = 0 while True: i += 1 temp = zr * zi zr2 = zr * zr zi2 = zi * zi zr = zr2 - zi2 + cr zi = temp + temp + ci if zi2 + zr2 > BAILOUT: return i if i > MAX_ITERATIONS: return 0 t = time.time() Iterator() print '\nPython Elapsed %.02f' % (time.time() - t)