Condor Programs for parallel usage

12
Lucrare de Laborator NR 1. Aplicaţia midlleware CONDOR 1 Obiectivele lucrări 1. Cunoaşterea suitei de aplicaţii CONDOR şi modul de folosire 2. Cunoaşterea modurilor de rulare a diverselor tipuri de aplicaţi în condor 2 Breviar teoretic Condor este un sistem de management al încărcării. Condor seamănă cu sistemele de tip consolă. Condor asigură: - mecanisme pentru cozi de joburi, - politici de programare, - scheme de prioritate, - monitorizarea resurselor, - managementul resurselor. Avantaje: 1. La fel ca la sistemele consolă, utilizatorii trimit jobul lor(serial sau paralel) către Condor, Condor îl va pune în coadă, va alege unde şi când să fie executat pe baza politicilor stabilite, monitorizează progresul şi în final informează utilizatorul despre terminarea procesului. 2. Un alt avantaj major al lui Condor este că oferă posibilitatea de a folosi cicli de procesor nefolosiţi de la calculatoare. Condor poate fi configurat să folosească un calculator când nu se înregistrează

description

Condor programs for parallel computing

Transcript of Condor Programs for parallel usage

Lucrare de Laborator NR 1.

Aplicaia midlleware CONDORObiectivele lucrri1. Cunoaterea suitei de aplicaii CONDOR i modul de folosire2. Cunoaterea modurilor de rulare a diverselor tipuri de aplicai n condorBreviar teoreticCondor este un sistem de management al ncrcrii. Condor seamn cu sistemele de tip consol. Condor asigur: mecanisme pentru cozi de joburi, politici de programare, scheme de prioritate, monitorizarea resurselor, managementul resurselor.

Avantaje:1. La fel ca la sistemele consol, utilizatorii trimit jobul lor(serial sau paralel) ctre Condor, Condor l va pune n coad, va alege unde i cnd s fie executat pe baza politicilor stabilite, monitorizeaz progresul i n final informeaz utilizatorul despre terminarea procesului. 2. Un alt avantaj major al lui Condor este c ofer posibilitatea de a folosi cicli de procesor nefolosii de la calculatoare. Condor poate fi configurat s foloseasc un calculator cnd nu se nregistreaz activitate de la tastatur i mouse o perioad configurabil. n plus Condor are un mecanism care detecteaz renceperea activitii pe un computer i n cele mai multe cazuri reuete s transfere jobul pe alt calculator nefolosit. Pentru transferul de fiiere Condor nu necesit sistem de partajare ntre calculatoare i componen. Condor transmite de la calculator napoi la cel care a transmis jobul i astfel Condor reuete s combine toate resursele de calcul ntr-o singur resurs.3. Mecanismul ClassAd folosit de Condor asigur posibilitatea de a folosi mecanisme care s specifice cerinele jobului referitoare la resurse i mecanisme pentru oferirea resurselor. Descrierea unui job poate s conin att informaii despre necesarul resurselor ct i despre preferine ale jobului. De asemenea sunt mecanisme care s defineasc preferine i disponibiliti despre joburile care sunt rulate. Aceast opiune face ca meta-schedulerul Condor s fie unul dorit n sisteme Grid. Totui n colaborarea cu alte sisteme Grid, este posibil doar prin modificri ale codului Condor (23).Condor este produs de Condor Research Project din cadrul University of Wisconsin-Madison (UW-Madison) i prima sa instalare a fost n cadrul departamentului UW-Madison Department of Computer Sciences. Actualmente n cadrul aceluiai departament gestioneaz peste 1000 de calculatore cu o medie de 650 de zile de procesare pe zi i a devenit un sistem folosit de mai multe instituii guvernamentale i academice. n timp a aprut nevoia pentru o putere mare de calcul pentru o perioad lung de timp. Un mediu care ofer acest lucru se numete High-Throughput Computing (HTC). Condor este un astfel de mediu. Vechile sisteme aveau un cost ridicat i achiziionarea lor se fcea n comun de mai muli indivizi sau chiar grupuri de indivizi, dar acest fapt crea neajunsuri. Cei care l achiziioneaz trebuie s l foloseasc cu rndul pentru o perioad de timp limitat. Condor rezolv aceast nemulumire deoarece fiecare i achiziioneaz propriile sisteme pe care le folosete cnd dorete i toate celelalte sisteme libere.Un alt avantaj este acela de a nu fi nevoit s rescrii codul de aplicaii vechi pentru a putea folosi aceast tehnologie. Relinkarea vechilor aplicaii cu librriile Condor capt dou proprieti noi: puncte de control, posibilitatea de a efectua apeluri de sistem la distan.Punctul de control este un set complet de informaii despre starea unui program. Un program poate s fie reluat cu ajutorul unui punct de control. n cazul joburilor de durat poate salva o perioad de timp considerabil. Condor salveaz puncte de control periodic sau n momentul n care maina devine indisponibil pentru continuarea execuiei jobul. Jobul poate fi continuat pe o alt main dar care trebuie s aib aceeai arhitectur n cadrul procesului denumit migrare.

Figura1.1 Numrul de calculatoare Condor (24)Securitatea mainilor pe care se ruleaz la distan este foarte puin afectat datorit apelurilor de sistem la distan. Atunci cnd un job face un apel de sistem(funcii I/O) sunt transmise sistemului care a iniiat jobul.Condor poate fi instalat pe o mare varietate de platforme ca: Linux i386/IA64, Windows 2k/XP, MacOS, Solaris, IRIX, HP-UX, Compaq Tru64 i altele.Condor poate fi folosit mpreun cu alte tehnologii Grid cum ar fi: Globus: GT2, GT4, NorduGrid, UNICORE, Condor, PBS, LSF, EC2, NQS.Se estimeaz c un sistem Condor poate s creasc pn la aproximativ 1 milion de noduri. Se dorete creterea la aproximativ 10 milioane.Condor poate fi preferat fa de alte tehnologi:-datorit maturiti, - este printre puinele tehnologi care ofer suport pentru Windows, - simplu de folosit, - scalabil i flexibil, - este gratis i are o comunitate activ.n Figura1.1 este prezentat prezena Condor pe mapamond.

Desfurarea lucrriPe toate staiile de lucru din laborator este instalat Condor. Pe fiecare calculator este configurat s ruleze i s accepte joburi, iar joburile vor fi rulate instant. Atenie cu joburile netestate care pot bloca comunicaia sau chiar calculatoarele.Regsii condor n memoria calculatorului printr-o serie de executabile: condor_master: ruleaz continuu cu scopul de a supraveghea componentele condor, dac una din ele se blocheaz sau evalueaz va fi restartat; condor_collector: este component a Condor central manager i se ocup cu colectarea informaiilor despre calculatoare, utilizatori i joburi rulate; condor_negotiator: face parte din Condor central manger i decide unde sunt rulate joburile; condor_startd: este prezent doar pe staiile unde se pot rula joburi i are ca rol pornirea joburilor i raportarea calculatorului ctre Condor central manager; condor_schedd: este prezent doar pe staiile care au dreptul care adaug joburi n cluster; condor_shadow: cte o instan a acestui program va fi generat pentru fiecare job adugat de pe acea staie.

Comenzi condorcondor_qComanda condor_qva afia joburile adugate de la staia curent. Rezultatul va conine urmtoarele cmpuri:-id o pereche de numere separate prin .. Primul numr semnific numrul clusterului i al doilea numrul jobului;- owner utilizatorul care a adugat jobul;- submitted data la care a fost adugat;- run_time timpul de rulare al jobului;-st starea jobului care poate fi I sau R de la Idle sau Run;- pri memoria consumat de job;-cmd programul care se execut.

-- Submitter: Statia5 : : Statia5 ID OWNER SUBMITTED RUN_TIME ST PRI SIZE CMD

0 jobs; 0 idle, 0 running, 0 heldcondor_statusComanda condor_statusva afia toate staiile din cluster. Rezultatul va conine urmtoarele cmpuri: name numele staiei, care poate fi limitat ca lungime; OpSys sistemul de operare, Ex Linux; Arch arhitectur staie, Ex Intel; State starea staiei, Ex Unclaimed=liber, Claimed=ruleaz un job; Activity poate fi Idle sau Busy; LoadAv ncrcarea medie a staiei; Mem memoria calculatorului n megabii; ActvityTime de ct timp staia face activitatea curent.

Name OpSys Arch State Activity LoadAv Mem ActvtyTime

slot1@Statia2 WINNT51 INTEL Unclaimed Idle 0.000 507 0+05:05:07slot2@Statia2 WINNT51 INTEL Unclaimed Idle 0.000 507 0+01:05:05slot1@Statia4 WINNT51 INTEL Unclaimed Idle 0.000 507 0+01:00:04slot2@Statia4 WINNT51 INTEL Unclaimed Idle 0.000 507 0+01:00:05slot1@Statia5 WINNT51 INTEL Unclaimed Idle 0.010 507 0+01:45:05slot2@Statia5 WINNT51 INTEL Unclaimed Idle 0.000 507 0+01:45:06slot1@Statia7 WINNT51 INTEL Unclaimed Idle 0.000 507 3+05:05:56slot2@Statia7 WINNT51 INTEL Unclaimed Idle 0.000 507 0+01:00:05slot1@Statia8 WINNT51 INTEL Unclaimed Idle 0.000 507 0+06:05:09slot2@Statia8 WINNT51 INTEL Unclaimed Idle 0.000 507 0+02:05:06slot1@Statia9 WINNT51 INTEL Unclaimed Idle 0.000 507 0+06:00:12slot2@Statia9 WINNT51 INTEL Unclaimed Idle 0.000 507 0+02:00:06slot1@t209-statia3 WINNT51 INTEL Unclaimed Idle 0.000 507 0+02:00:04slot2@t209-statia3 WINNT51 INTEL Unclaimed Idle 0.010 507 0+02:00:05

Total Owner Claimed Unclaimed Matched Preempting Backfill

INTEL/WINNT51 14 0 0 14 0 0 0

Total 14 0 0 14 0 0 0

Adugarea unui jobnainte de a aduga un job avem nevoie de job. S presupunem urmtorul program:

#include main(int argc, char **argv){ int sleep_time; int input; int failure;

if (argc != 3) { printf("Usage: simple \n"); failure = 1; } else { sleep_time = atoi(argv[1]); input = atoi(argv[2]);

printf("Thinking really hard for %d seconds...\n", sleep_time); sleep(sleep_time); printf("We calculated: %d\n", input * 2); failure = 0; } return failure;}

Denumii programul simple.c i compilai programul. Pentru a aduga jobul trebuie creat un fiier cu descrierea jobului n felul urmtor:

Universe = vanillaExecutable = simple.exeArguments = 4 10Log = simple.logOutput = simple.outError = simple.errorshould_transfer_files = YES when_to_transfer_output = ON_EXITQueue

Universe specific universul de rulare, vanilla este cel standard mai trziu vom ntlni i altele; Executable numele programului rulat; Arguments argumentele pentru programul dat anterior; Log nu este cmp obligatoriu, el specific fiierul n Condor va scrie un log despre actuala execuie Output specific numele fiierului n care Condor va depune rezultatul; Error fiierul n care vor fi scrise eventualele erori; Should_transfer_files specific dac sunt sau nu transferate fiiere, necesar n cazul n care nu se folosesc locaii partajate n reea; When_to_transffer_output cnd trebuie transferat coninutul ieirii.

Adugarea jobului se face cu comnada:

condor_submit submitSubmitting job(s).Logging submit event(s).1 job(s) submitted to cluster 4.

Vizualizarea stri jobului:

condor_q

-- Submitter: Statia5 : : Statia5 ID OWNER SUBMITTED RUN_TIME ST PRI SIZE CMD 4.0 Administrator 2/8 15:46 0+00:00:17 I 0 0.0 simple.exe 4 10

1 jobs; 1 idle, 0 running, 0 heldFiier de log

Fiierul out

Adugarea unui job parametrizatDac folosim Condor pentru a aduga cte un job cel mai probabil nu avem nevoie de Condor. Urmtorul exemplu prezint un fiier care definete 3 joburi:

Universe = vanillaExecutable = simpleArguments = 4 10Log = simple.logOutput = simple.$(Process).outError = simple.$(Process).errorshould_transfer_files = YES when_to_transfer_output = ON_EXITQueue

Arguments = 4 11Queue

Arguments = 4 12QueueSe poate observa prezena $(Process) care la momentul rulri va fi nlocuit id-ul jobului. Fiierele de ieire vor arta sub forma urmtoare:simple.1.out, simple.2.out, ect.

Adugare unui job JavaFolosirea programelor n Java este util n momentul n care avem un cluster format din mai multe arhitecturi. Paii:1. Se editeaz programul Java:

public class simple{ public static void main(String[] args) { if (args.length != 2) { System.out.println("Usage: simple.java "); } Integer arg_sleep_time; Integer arg_input;

arg_sleep_time = new Integer(args[0]); arg_input = new Integer(args[1]);

int sleep_time; int input;

sleep_time = arg_sleep_time.intValue(); input = arg_input.intValue();

try { System.out.println("Thinking really hard for " + sleep_time + " seconds..."); Thread.sleep(sleep_time * 1000); System.out.println("We calculated: " + input * 2); } catch (InterruptedException exception) { ; } return; }}

2. Se compileaz programul:

javac simple.java

3. Fiierul de adugare al jobuluiUniverse = javaExecutable = simple.classArguments = simple 4 10Log = simple.logOutput = simple.outError = simple.errorjava_vm_args = -Xmx500mshould_transfer_files = YESwhen_to_transfer_output = ON_EXITQueue

Adugrea unui job DAGDAG este utilizat pentru a defini secvene de joburi. S considerm exemplul din figura 1.2:

Figura 1.2 Graf secvene de joburi

n acest caz avem o serie de joburi n paralel dar avem i un job care pregtete date pentru rulare i la sfrit unul care le centralizeaz.Pentru a putea alctui un graf de rulare ca cel de mai sus mai nti trebuie s avem fiiere submit pentru fiecare job n parte.

job.setup.submitjob.work1.submitjob.work2.submitjob.finalize.submit

Copiai fiierul de mai sus cu numele indicate. Fiecare fiier trebuie editat pentru a schimba fiiere de ieire i de eroare nu dorim ca el s i suprascrie rezultatul. Fiierul de log va rmne acelai.

Se poate crea fiierul Dag:

Job Setup job.setup.submitJob Work1 job.work1.submitJob Work2 job.work2.submitJob Final job.finalize.submit

PARENT Setup CHILD Work1 Work2PARENT Work1 Work2 CHILD Final

Denumii fiierul simple.dag. Adugai fiierul n Condor cu urmtoarea comand:

condor_submit_dag simple.dag

Verificaii periodic coada de joburi Condor pentru a observa ordinea de execuie.Analizai cele 4 fiiere de ieire i fiierul log. Adiional vei mai gsi i fiierul de log DAG

simple.dag.dagman.outCerine1. Testai toate programele i toate tipurile de adugare a joburilor n Condor;2. Analizai fiiere de log i cele cu rezultate;3. tergei un job din list;4. Observai starea staiilor n momente de timp cnd execut i colegii votri programe.