+ All Categories
Home > Documents > Raport Stintifico-Tehnic 1

Raport Stintifico-Tehnic 1

Date post: 30-Dec-2016
Category:
Upload: docong
View: 230 times
Download: 0 times
Share this document with a friend
14
RAPORTUL STIINTIFIC SI TEHNIC (RST) ETAPA DE EXECUTIE NR. : 1 CU TITLUL : Studiul sistemelor de procesare distribuita si evaluarea eficientei de utilizare in analiza datelor provenite din experimente HEP RST - Raport stiintific si tehnic in extenso* 1. Cuprins : Notiuni tehnologice privind High Performance Computing (HPC) Arhitecturii Calcul paralel Procesare distribuita si procesare paralela : atomicitate si interdependenta Tehnologii software de procesare in HPC : monitorizare de resurse si brokeraj Tehnologii de procesare distribuita implementate la nivelul software : PROOF Implementarea unui schelet abstract de analiza in AliROOT : AliAnalysis 2. Obiectivele generale; O1 : Identificarea si validarea unei solutii hardware si software optime pentru necesitatile de procesarea paralela in scopul prelucrarii de date experimentale si simulate la energiile LHC-ului. O2 : Proiectarea si validarea unui model software de programare ( framework de programare) care sa permita standardizarea procesului de analiza a datelor intr-un mod facil si putin susceptibil la erori . O3 : Folosirea rezultatelor de la obiectivele anterioare pentru activitatea stiintifica de simulare si prelucrare a datelor specifice interactiilor proton-proton si Pb-Pb corespunzatoare parametrilor si caracteristicilor detectorului ALICE si pentru analiza aparitiei si caracteristicilor fenomenului de jeturi in evenimentele amintite. 3. Obiectivele etapei de executie; O1 : Identificarea si validarea unei solutii hardware si software optime pentru necesitatile de procesarea paralela in scopul prelucrarii de date experimentale si simulate la energiile LHC-ului.
Transcript
Page 1: Raport Stintifico-Tehnic 1

RAPORTUL STIINTIFIC SI TEHNIC (RST)

ETAPA DE EXECUTIE NR. : 1

CU TITLUL : Studiul sistemelor de procesare distribuita si evaluarea eficientei de utilizare in analiza datelor provenite din experimente HEP

✔ RST - Raport stiintific si tehnic in extenso*

1. Cuprins : Notiuni tehnologice privind High Performance Computing (HPC)

ArhitecturiiCalcul paralel

Procesare distribuita si procesare paralela : atomicitate si interdependentaTehnologii software de procesare in HPC : monitorizare de resurse si brokeraj

Tehnologii de procesare distribuita implementate la nivelul software : PROOFImplementarea unui schelet abstract de analiza in AliROOT : AliAnalysis

2. Obiectivele generale;

O1 : Identificarea si validarea unei solutii hardware si software optime pentru necesitatile de procesarea paralela in scopul prelucrarii de date experimentale si simulate la energiile LHC-ului.

O2 : Proiectarea si validarea unui model software de programare ( framework de programare) care sa permita standardizarea procesului de analiza a datelor intr-un mod facil si putin susceptibil la erori .

O3 : Folosirea rezultatelor de la obiectivele anterioare pentru activitatea stiintifica de simulare si prelucrare a datelor specifice interactiilor proton-proton si Pb-Pb corespunzatoare parametrilor si caracteristicilor detectorului ALICE si pentru analiza aparitiei si caracteristicilor fenomenului de jeturi in evenimentele amintite.

3. Obiectivele etapei de executie; O1 : Identificarea si validarea unei solutii hardware si software optime pentru necesitatile de procesarea paralela in scopul prelucrarii de date experimentale si simulate la energiile LHC-ului.

Page 2: Raport Stintifico-Tehnic 1

4. Rezumatul etapei (maxim 2 pagini); Acesta etapa de documentare a fost executata prin indeplinirea urmatoarelor activitati

Activitate I.1 : CO : Examinarea detaliata a solutiilor de analiza folosite in marile experimente de energii inalte.Activitate I.2 : P2 : Studiul comparativ al performantei sistemelor de analiza de date

Au fost prezentate notiuni tehnologice privind High Performance Computing (HPC) prezentindu-se tipurile de arhitecturi si sistemele de calcul paralel.

In continuare au fost investigate sistemele software de procesare distribuita si procesare paralela si a fost investigata interdependenta componentelor software si alegerea unui sistem paralel de calul distribuit avind in vedere situatia particulara a atomicitatea datelor folosite.

Au fost studiate tehnologiile software de procesare in HPC si anume software-ul de monitorizare de resurse si brokeraj ce constituie partea centrala a unui cluster folosit in HEP.

Au fost cautate tehnologii de procesare distribuita implementate la nivelul software si a fost ivestigat sitemul PROOF al cadrului de analiza ROOT dezvoltat la CERN.

Studiindu-se nivelul la care se analizeaza datele in experimentul ALICE au fost trase concluzii privind atomicitatea ce fiind la nivelul structurii de Eveniment sistemul PROOF a reiesit ca solutie optima in aceste activitati de analiza a datelor.

In scopul facilitarii folosirii mecanismului PROOF de prelucrare distribuita a datelor a for studiat si implementat un schelet abstract de analiza in AliROOT : AliAnalysis. Aceasta structura permite folosirea facila a unor facilitati programatice ce pun la indemina fizicianului obiectele ce ii permit crearea si rularea unor programe ce, prin structura lor, vor folosi sistemul de prelucrare distribuita PROOF pe cluster-ul avut la dispozitie

5. Descrierea stiintifica si tehnica, cu punerea in evidenta a rezultatelor etapei si gradul de realizare a obiectivelor; (se vor indica rezultatele)

5.1 Notiuni tehnologice privind High Performance Computing (HPC)

Calculul distribuit se ocupa de sisteme software si hardware continind mai mult de un element de procesare sau element de stocare, procese concurente sau programe multiple, rulind sub un regim controlat mai mult sau mai putin strict.

In calculul distribuit un program e impartit in mai multe parti ce ruleaza simultan pe mai multe calculatoare, comunicind in retea. Calculul distribuit este o forma de calcul paralel, dar calculul paralel este mai mult folosit in a descrie parti de program ce ruleaza simultan pe mai multe procesoare pe acelasi calculator. Ambele tipuri de procesare necesita impartirea unui program in parti ce pot rula simultan, dar programele distribuite in cele mai multe cazuri interactioneaza cu medii diferite, conexiuni de retea cu latente diferite si cu erori imprevizibile a retelei sau a calculatoarelor.

Depanarea si diagnosticarea problemelor intr-un sistem distribuit poate deveni dificila datorita faptului ca analiza poate necesita conectarea la noduri sau inspectia comunicarii intre acestea.Multe tipuri de calcul nu sunt potrivite pentru medii distribuite, tipic datorita cerintelor mari de comunicare in retea sau sincronizare ce ar fi necesara intre noduri. Daca latimea de banda, latenta sau cerintele de comunicare sunt prea mari atunci beneficiile calcului distribuit pot fi negate si perfomantele pot fi mai scazute decit intr-un mediu ne-distribuit.

Arhitectura

Diverse arhitecturi software si hardware sunt folosite pentru calculul distributit. La un nivel jos

Page 3: Raport Stintifico-Tehnic 1

este necesara interconectarea a mai multor procesoare cu in tip de retea, indiferent de modalitatea de implementare a acestei conexiuni (placa imprimata sau cabluri si dispozitive cuplate). La un nivel superior este necesara interconectarea proceselor ce ruleaza pe acele procesoare prin intermediul unui sistem de comunicare.

Programarea distribuita, tipic, se imparte in una din urmatoarele arhitecturi de baza sau categorii : Client-server, arhitectura 3-tier , arhitectura N-tier , obiecte distribuite , cuplaj lejer sau cuplaj strans.

• Client-server – Codul client contacteaza server-ul pentru date, apoi formateaza si le prezinta utilizatorului. Input-ul la nivelul clientului este transmis inapoi la server cind reprezinta o modificare permanenta.

• Arhitectura 3-tier — Sistemele cu 3 tier-uri muta procesele clientului pe un tier de mijloc astfel incit clienti fara parametrii de stare pot fi folositi. Aceasta simplifica desfasurarea aplicatiilor. Cele mai multe aplicatii web sunt 3-Tier.

• N-tier architecture — N-Tier tipic, se refera la aplicatii web ce transmit cererile la servicii “enterprise”. Acest tip de aplicatie este cel responsabil de succesul serverelor de aplicatii.

• Cuplaj strans (“clustered”) — tipic se refera la un set de masini ce lucreaza impreuna rulind un process comun in paralel. Sarcina e impartita in portiuni ce se proceseaza fiecare separat si apoi rezultatele puse laolalta pentru a obtine rezultatul final.

• Peer-to-peer — o arhitectura unde nu sunt masini speciale ce sa ofere un serviciu sau sa administreze resursele de retea. Toate responsabilitatile sunt impartite uniform intre toate masinile ce pot actiona in roluri de servere cat si de clienti.

• Bazata pe Spatiu — se refera la o infra-structura ce creeaza iluzia (virtualizarea) unui singur spatiu de adrese. Datele sunt replicate transparent dupa cum are nevoia aplicatia. Decuplarea in timp, spatiu si referinta este atinsa.

Alt aspect de baza al arhitecturii de calcul distribuit este metoda de comunicare si coordonare a muncii intre procesele concurente. Prin diverse protocoale de transmitere a mesajelor, procesele pot comunica direct intre ele, de obicei in relatie de tip stapin/sclav. Alternativ, se poate folosi o arhitectura de tip “baza de date centrala” ce ar permite calculul distribuit sa fie executat fara nici o forma de comunicare intre procese.

Clustere de computere

Un cluster este constituit din mai multe masini de sine statatoare actionind in paralel intr-o retea locala de mare viteza. Calculul distribuit difera de calculul in cluster prin faptul ca computerele in mediile de calcul distribuit de obicei nu ruleaza sarcini de grup, pe cind in clustere computerele sunt de obicei mai puternic cuplate. Calculul distribuit de obicei e constituit din masini ce sunt puternic separate geografic.

Grid computingO retea foloseste resuresele a multor computere separate, lejer legate intr-o retea (de obicei retea),

pentru a rezolva probleme computationala la scala mare. Retelele publice pot folosi timpul de procesare nefolosit pe multe mii de calculatoare din lume. Aceste aranjamente permit o prelucrare a datelor ce altcumva ar cere puterea unor supercalculatoare foarte scumpe sau ar fi imposibil de analizat.

Calcul paralel

Calculul paralel este o forma de calcul in care o mare parte din calcul e executat simultan, functionind pe principiu ca marile probleme pot fi deseori impartite in parti mai mici, ce apoi sunt rezolvate concurential (paralel). Sunt mai multe forme de calcul paralel : la nivelul bitului , instructiunii, a datelor si a proceselor. Paralelismul a fost folosit pentru multi ani mai ales in calculul de mare performanta, dar interesul in acesta a crescut in ultimul timp datorita barierelor fizice ce impiedica scalarea in frecventa.

In ultimii ani consumul de putere a calculatoarelor a crescut in ultimii ani devenind un subiect ingrijorator, calculul paralel a devenit paradigma dominanta in arhitectura calculatoarelor, mai ales in

Page 4: Raport Stintifico-Tehnic 1

forma procesoarelor cu mai multe nuclee.Calculatoarele paralele pot fi clasificate in mare conform nivelului la care hardware-ul suporta

paralelismul – calculatoare cu mai multe nuclee si mai multe procesoare avind mai multe elemente de procesare in cadrul unei singure masini, in timp ce cluster-ele si grid-urile folosesc mai multe calculatoare sa execute aceiasi sarcina. Arhitecturi specializate de calculatoare paralele sunt folosite uneori alaturi de procesoare traditionale pentru accelerarea unor sarcini specifice.

Programele de calculatoare paralele sunt mai dificil de scris decit cele secventiale intru-cit concurenta introduce mai multe clase noi de potentiale defecte de software din care conditiile de cursa (“race conditions”) sunt cele mai comune. Comunicarea si sincronizarea intre diferitele subtaskuri este tipic una dintre cele mai dificile probleme pentru a obtine un bun program paralel.

5.1.1 Procesare distribuita si procesare paralela : atomicitate si interdependenta

Tipuri de paralelism

Paralelism la nivelul de bit

De la aparitia tehnologiilor de fabricatie a chipurilor in tehnologie VLSI (very-large-scale integration)in anii 1970 – 1986 , cresterile de viteza in arhitectura calculatoarelor au fost generate de dublarea marii “cuvintului” computerului – cantitatea de informatie ce poate fi executata de procesor intr-un ciclu. Cresterea marimii “cuvintului” reduce numarul de instructiuni pe care procesorul trebuie sa le execute pentru a executa o operatie asupra variabilelor a caror marimi sunt mai mari ca marimea “cuvintului”Istoric, procesoarele pe 4-bit au fost inlocuite cu 8-bit apoi 16-bit si 32-bit. Aceasta tendinta in general a ajuns la stop pentru 2 decade pina cind in anii 2003-2004 au fost introduse procesoarele x86_64 pe 64 de biti.

Paralelism la nivelul instructiunilor

Un program de calculator e in esenta un sir de instructiuni executat de un procesor. Aceste instructiuni pot fi re-ordonate si combinate in grupuri ce apoi sunt executate in paralel fara a schimba rezultatul programului. Aceasta e cunoscut ca paralelism la nivelul instructiunilor. Imbunatatiri la nivelul acestui paralelism domina arhitectura calculatoarelor de mijlocul anilor 1980 pina in mijlocul anilor 1990.

Procesoarele moderne au conducte de instructiuni cu mai multe stagii. Fiecare stagiu intr-o conducta corespunde unei diferite actiuni ce e executata de procesor asupra acelei instructiuni la acea etapa; un procesor cu o conducta de N-stagii poate avea pina la N diferite instructiuni in diferite stari de executie.

Exemplu de baza e procesorul RISC ce are 5 stagii de executie : preluarea instructiunii, decodarea, executia, accesul memoriei si scrierea rezultatelor. Procesorul Pentium 4 avea conducta de procesare de 35 de stagii.

In plus fata de paralelismul la nivelul instructiunii din folosirea tehnologiei de conducta, unele procesoare pot porni mai mult de o instructiune odata. Acestea sunt cunoscute ca procesoare super scalare. Instructiunile pot fi grupate impreuna numai daca nu exista dependenta de date intre ele.

Data parallelism

Paralelismul datelor este paralelismul inerent in buclele programului ce se concentreaza pe distribuirea datelor catre diverse noduri de calcul pentru a fi procesate in paralel. Paralelizarea buclelor de obicei duce la operatiuni sau functii similare (nu necesar identice) cu cele executate asupra elementelor unei mari structuri de date. Multe aplicatii stiintifice si de inginerie se folosesc de paralelismul datelor (vezi PROOF)

Paralelismul sarcinilor

Page 5: Raport Stintifico-Tehnic 1

Paralelismul sarcinilor este caracteristic unui program in care calcule diferite pot fi aplicate fie asupra aceluiasi set de date fie asupra unuia diferit. Aceasta contrasteaza cu paralelismul datelor unde acelasi calcul era executat pe acelasi sau diverse seturi de date. Paralelismul sarcinilor de obicei nu se scaleaza cu marimea problemei.

Clasele de calculatoare paralele

Calculatoarele paralele pot fi clasificate in mare conform nivelului la care hardware-ul suporta paralelismul. Aceasta calsificare este in mare analoaga cu distanta intre nodurile de calcul de baza. Acestea nu sunt mutual exclusive; de exemplu clusterele de multi-procesoare simetrice sunt foarte comune.

Calculul multi-nucleu

Un procesor multi-nucleu e un procesor ce include mai multe unitati de executie (nucelee). Aceste procesoare difera de procesoarele superscalare ce pot comanda mai multe instructiuni pe ciclu pornind de la un singur sir de instructiuni (thread); spre diferenta un procesor multi nucleu poate porni mai multe instructiuni pe ciclu pornind de la mai multe siruri de instructiuni. Fiecare nucleu intr-un procesor multi-nucleu poate fi potential super-scalar – adica la fiecare ciclu fiecare nucleu poate comanda mai multe instructiuni dintr-un singur sir de instructiuni.

Multi-threading-ul simultan a fost o timpurie forma de pseudo-multi-nucleu. Un procesor capabil de multi-threading simultan are o singura unitate de executie (nucleu) dar cind acea unitate nu are activitate (ca de ex un “cache miss”) foloseste acea unitate de executie pentru a procesa un al doilea thread. Familiile de procesoare Core si Core 2 sunt primele arhitecturi multi-nucleu de la Intel. Un alt procesor semnificativ multi-core e procesorul IBM Cell.

Multiprocesare simetrica.

Un system cu multiprocesare simetrica (SMP) este un sistem cu mai multe procesoare identice ce impart memoria si se conecteaza printr-un “bus” de comunicatie. Saturarea acestei conexiuni impiedica scalarea unui astfel de sistem astfel ca in general un sistem SMP nu contine mai mult de 32 de procesoare.Datorita marimii mici a acestor procesoare si a reducerii semnificative a cerintelor de latime de banda datorata “cache”-urilor mari, aceste sisteme SMP sunt foarte eficiente din puntul de vedere al pretului cu conditia ca o suficienta latime de banda la memorie exista.

Distributed computingUn computer distribuit (cunoscut si ca multiprocesor cu memorie distribuita) este un sistem

computational cu memorie distribuita in care elementele de procesare sunt conectate printr-o retea. Sistemele distribuite sunt foarte scalabile.

Cluster computing Beowulf cluster

Un “cluster” este un grup de calcualtoare lejer cuplate ce lucreaza impreuna, astfel incit in unele aspecte acest sistem poate fi considerat in singur calculator. Clusterele sunt compuse din multe masini de sine statatoare conectate de o retea. Masinile ce le compun nu trebuie sa fie simetrice dar problematica impartirii incarcarii (load-balancing) se complica daca nu sunt. Cel mai comun tip de cluster Beowulf este cluster-ul format din calculatoare obisnuite, comerciale, legate printr-o retea locala Ethernet via TCP/IP.Tehnologia Beowulf a fost original dezvoltata de Thomas Sterling si Donald Becker. Marea majoritate a super-computerelor din TOP500 sunt clustere.

Procesare masiv paralelaUn sistem masiv paralel (MPP) e un singur computer cu multe procesoare legate in retea. MPP-

Page 6: Raport Stintifico-Tehnic 1

urile au multe din aceleasi caracteristici ale cluster-elor dar MPP-urile au retele de interconectare specializate (in timp ce clusterele folosesc hardware comun pentru retea). De asemeni MPP-urile tind sa fie mai mari decit cluster-ele.

Grid computingSistemul GRID este cea mai distribuita forma de calcul paralel. Se foloseste de calculatoarele ce

comunica prin Internet pentru a lucra la o anumita problema. Datorita latimii de banda scazuta si latentei mari specifice Internetului, calculul in GRID in general se ocupa de probleme deosebit de paralele. Cele mai multe aplicatii de grid folosesc “middleware”, software ce sta intre sistemul de operare si aplicatia de administrat resursele in retea si standardizeaza interfata software.

5.2 Tehnologii software de procesare in HPC : monitorizare de resurse si brokeraj

Un planificator de job-uri este o aplicatie software ce se ocupa de executiile nesupravegheate in “backgorund” si este cunoscut istoric ca procesare in stiva (“batch processing”)

Sinonime sunt : system stiva (“batch system”), System de Management a Resurselor Distribuite (Distributed Resource Management System (DRMS)) sau Manager de Resurse Distribuite (DRM). Planificatoarele de sarcini din ziua de azi pun la dispozitie interfate utilizator grafice si puncte de control singulare pentru definitia si monitorizarea executilor in background in o retea de calculatoare distribuite.Din ce in ce mai mult aceste aplicatii sunt necesare pentru a orchestra integrarea activitatilor in timp real de afaceri cu fondul traditional de procesare IT, acoperind diferite plaforme de sisteme de operare si medii de aplicatii de afaceri.

Caracteristicile de baza de asteptat la un software de planificare de sarcini sunt :• Interfete ce ajuta definirea sarcinilor si a dependentelor lor• Trimiterea automata a executiilor• Interfete pentru monitorizarea executiilor • Prioritatile si/sau cozile pentru controlul ordinii executiei a sarcinilor independente

Daca un software dintr-o arie complet diferita include toate aceste caracterstici, se considera ca acest software are capabilitati de planificare de sarcini.

Cele mai multe plaforme de sisteme de operare ca Unix si Windows ofera capabilitati de baza pentru planificarea sarcinilor (de exemplu Cron). Multe programe ca DBMS, backup, etc.. includ capabilitati relevante de planificare de joburi. Organizatiile ce au nevoie pentru automatizarea unor incarcari foarte complexe se vor astepta la caracteristici mai avansate de la un planificator de sarcini , ca :

• Planificare in timp real bazat pe evenimente exterioare , nepredictibile• Restartare si recupare automata in caz de erori• Alertare si notificare a personalului operational• Generarea de raporturi in cazul incidentelor• Auditare pentru conformarea cu regulamente

Aceste capabilitati avansate pot fi scrise de catre dezvoltatorii ce le necesita dar sunt mai des oferite de catre ofertanti ce se specializeaza in software de managementul sistemelor.

Concepte principale

Sunt multe concepte ce sunt centrale fiecarui implementari a unui planificator de sarcini si care sunt larg recunoscute cu variatii minimale:

• Servicii (Jobs) • Dependinte • Siruri de servicii • Utilizatori

Page 7: Raport Stintifico-Tehnic 1

Dincolo de uneltele de unica instanta in sistemul de operare, exista doua mari arhitecturi pentru software-ul de planificare de sarcini:

• Arhitectura Master/Agent — arhitectura istorica pentru software-ul de planificare a sarcinilor. Software-ul e instalat pe o singura masina (Master) in timp ce pe masinile de productie numai o mica componenta software(Agent) este instalata si asteapta comenzi de la Master, le executa, si apoi reda controlul Master-ului.

• Arhitectura cooperativa — un model de-centralizat unde fiecare masina e capabila de a ajuta cu planificarea si poate trimite la alte masini sarcini planificate pe respectiva masina. Aceasta permite echilibrarea incarcari in mod dinamic pentru maximizarea utilizarii resurselor hardware si disponibilitatea pentru asigurarea distributiei de servicii.

Planificarea temporala reprezinta un concept cheie atat in proiectarea sistemelor de operare multitasking si multiprocesare, cat si in designul sistemelor de operare in timp real. Se refera la modalitatea prin care proceselor le sunt atribuite prioritati atunci cand sunt in coada de asteptare. Aceasta atribuire este indeplinita de catre un software cunoscut ca planificator.

Acest planificator este destinat in principal pentru:• Utilizarea CPU – pentru a tine CPU extrem de ocupat.• Outputul relativ la input (Engl. - throughput) – numarul de procese care incheie executia per

unitatea de timp.• Timpul de intoarcere (engl. - turnaround) – timpul necesar pentru ca un proces anume sa fie

executat.• Timpul de asteptare – timpul pe care un proces il petrece in coada de asteptare.• Timpul de raspuns – timpul care se scurge din momentul cand o cerere e submisa pana cand apare

primul raspuns.In mediile in timp real, cum ar fi dispozitivele automate pentru controlul automat in industrie (de

ex.: robotica), planificatorul trebuie de asemenea sa asigure ca procesele isi respecta termenele limita; acest lucru este crucial pentru conservarea stabilitatii sistemului. Sarcinile de lucru planificate sunt trimise catre dispozitivele mobile si prelucrate printr-o terminatie administrativa.

Tipurile de planificatoare ale sistemelor de operare:

In cadrul sistemelor de operare se pot distinge pana la 3 tipuri distincte de planificatoare: un planificator pe termen lung (cunoscut de asemenea ca planificatorul de admitere sau de nivel inalt), unul pe termen mediu si unul pe termen scurt (cunoscut de asemenea ca dispecer). Numele sugereaza frecventa relativa cu care aceste functii sunt indeplinite.

Planificatorul pe termen lung:

Planificatorul pe termen lung sau de admitere decide care joburi sau procese trebuie sa fie admise catre coada de asteptare; adica, atunci cand se face o incercare de a executa un program, admiterea sa in setul de procese care se executa este ori autorizata sau intarziata. Astfel, acest planificator dicteaza atat care procese vor rula pe un sistem, cat si gradul de concurenta intampinat la orice moment de timp: daca o cantitate mare sau mica de procese trebuie sa fie executata in mod concomitent si cum poate fi rezolvata sciziunea dintre procesele intensive IO si CPU. In mod tipic pentru un calculator desktop, nu exista planificator pe termen lung, iar procesele sunt admise in sistem in mod automat. Cu toate acestea, acest tip de planificare este foarte important pentru un sistem de operare in timp real, intrucat abilitatea sistemului de a respecta termenele limita ale proceselor poate fi compromisa de incetiniri si disputa rezultata din admiterea a mai multe procese decat poate rezolva sistemul fara probleme. [Stallings, 399].

Planificatorul pe termen mediu:

Planificatorul pe termen mediu, prezent in cadrul tuturor sistemelor cu memorie virtuala, inlatura temporar procese din memoria de baza si le plaseaza in memoria secundara (cum ar fi disk drive-ul) sau viceversa. In mod curent aceasta este descrisa ca fiind schimbarea spre exterior (engl. - "swapping out")

Page 8: Raport Stintifico-Tehnic 1

sau schimbarea spre interior (engl. - "swapping in"). Planificatorul pe termen mediu poate decide de a inlatura temporar un proces care nu a fost activ pentru un anumit timp, un proces care poseda o prioritate joasa, un proces care in mod frecvent acceseaza un bloc de memorie nemapat pe memoria fizica sau un proces care ocupa o cantitate mare de memorie pentru a elibera memoria de baza pentru alte procese, permutand procesul inapoi ulterior cand va fi disponibila mai multa memorie sau cand procesul a fost deblocat si nu mai asteapta nicio resursa. [Stallings, 396] [Stallings, 370]

In prezent in multe sisteme (acelea care suporta maparea spatiului de adrese virtuale in stocarea secundara – alta decat fisierul de swap) – planificatorul pe termen mediu poate de fapt realiza rolul planificatorului pe termen lung, prin tratarea fisierelor binare ca fiind "procese schimbate spre exterior" pana la executarea lor. In acest mod, cand un segment binar este solicitat, acesta poate fi schimbat spre interior la cerere, sau, asa cum se zice: e "lenes incarcat". [Stallings, 394]

Planificatorul pe termen scurt:

Planificatorul pe termen scurt (de asemenea cunoscut ca dispecer) decide care dintre procesele din memorie vor fi executate (alocate unui CPU) in momentele ulterioare unei intreruperi de ceas, de IO, ale unui apel al sistemului de operare sau ale unei alte forme de semnal. Astfel, planificatorul pe termen scurt ia deciziile de planificare mult mai frecvent decat cele pe termen lung sau pe termen mediu – o decizie de planificare trebuie sa fie luata dupa fiecare interval temporal elementar, iar acestea sunt foarte scurte. Acest planificator poate avea actiune de prevenire, implicand ca este capabil sa inlature procesele in mod fortat dintr-un CPU cand decide sa aloce acel CPU unui alt proces, sau de neprevenire, in care caz planificatorul este incapabil de a "forta" inlaturarea proceselor din CPU. [Stallings, 396].

5.2 Tehnologii de procesare distribuita implementate la nivelul software : PROOF

PROOF este o platforma de calcul paralel dezvoltata ca o extensie a ROOT-ului, permitand analiza rapida si transparenta a seturi de fisiere de date .ROOT in paralel pe clustere de calculatoare sau me masini de calcul multicore. Principalele caracteristici pe platforma PROOF trebuie sa le indeplineasca sunt:

1.Transparenta: trebuie sa fie o diferenta cat mai mica intre o analiza locala facuta cu ROOT- ul si o sesiunede calcul paralel pe un cluster PROOF. Amandoua sesiuni de analiza trebuie sa fie la fel de interactive si sa aiba rezultate identice.

2.Scalabilitatea: arhitectura de baza nu trebuie sa impua limitari asupra numarului de calculatoare care pot fi folosite in paralel intr-o sesiune PROOF.

3.Adaptabilitatea: sistemul trebuie sa se poata adapta la probleme externe care pot sa apara: intreruperi in retea sau schimbari de sarcina in nodurile retelei.

Platforma PROOF a forst dezvoltata in principal sa fie o alternativa interactiva la sistemele batch care functioneaza in prezent pe facilitatile decalcul si analiza din fizica particulelor elementare si fizica nucleara relativista, cu toate ca poate sa fie implementata si adaptata cu usurinta pe un numar de clustere virtuale distribuite pe domenii geografice separate si masini heterogene(altfel spus sa functioneze ca o retea GRID). In afara de modul interactive, PROOF are si un mod de lucru de tip batch. Cu modul interactiv de tip „batch” un utilizator poate sa lanseze analize care necesita timpi mari de procesare, sa deconecteze clientul la orice moment de timp si locatie si dupa un timp sa se reconecteze sa verifice rezultatele sau sa monitorizeze analiza. Aceasta caracteristica a sistemulu PROOF reprezinta un avantaj major fata de sistemele clasice de tip batch, care furnizeaza raspunsul numai dupa ce toate sub-analizele au terminat de rulat.

Page 9: Raport Stintifico-Tehnic 1

PROOF Architecture Multi-Tier Master-Worker Architecture

The ROOT Data ModelTrees & Selectors

Page 10: Raport Stintifico-Tehnic 1

„The Packetizer”

„The Packetizer” este responsabil pentru balansarea incarcarii procesoarelor repartizate unei analize pe PROOF. Acesta repartizeaza fiecare pachet de date ce trebuie procesat la un anumit nod de calcul (worker node). Pentru fiecare analiza creata se instatiaza acest manager pe nodul-master. In cazul unei configurari cu mai multe noduri-master, se instatiaza acest manager pe fiecare dintre noduri-sub master. De accea in descrierea acestui manager de procese vom folosi numai cazul in care avem un singur nod-master.

Performanta nodurilor de calcul precum si ratelor de transfer pentru a accesa fisiere diferite de date poate sa varieze foarte mult. De aceea, pentru a balansa dinamic modul in care nodurile de calcul proceseaza pachetele de date se foloseste urmatoarea arhitectura: cand nodurile de calcul termina de procesat un pacher de date interogheaza managerul de procese(the packetizer) pentru urmatorele pachete de date.

Planificatorul central Rolul planificatorului central la pornirea serviciului este schitat in figura de mai jos

Organizatorul ia desicizii in functie de starea din prezent a clusterului si de istoria de lui de utilizare, precum si de prioritatile date utilizatorilor sau grupurilor de utilizatori definite de politica de organizare. In functie de numarul de utilizatori activi, organizatorul repartizeaza un numar de noduri de calcul corespunzator pentru fiecare analiza pentru a mentine procesarea datelor la un nivel optim si pentru a evita supraincarcarea sau congestionarea nodurilor de calcul.

In cazul politicilor de distribuire egala sau de tip cota a numarului de noduri de calcul, organizatorul central poate decide schimbarea prioritatilor grupului sau a utilizatorului in fuctie de

Page 11: Raport Stintifico-Tehnic 1

istoricul folosirii sistemului de catre acestia.Sistemul PROOF interactioneaza cu organizatorul prin intermediul une interfete abstracte. Acest

lucru permite implementarea de organizatoare de tipuri diferite, furnizand flexibilitatea necesara in alegerea tipuliu de organizator necesar pentru un tip de analiza de date.

Pentru a permite accesul la informatia de folosire a sistemului de catre grupui de utilizatori sau utilizatori independenti, PROOF poate fi configurat sa afiseze informatia exacta despre resursele implicate intr-o analiza prin internediul unei interfete de monitorizare. In prezent sunt puse la dispozitie utilizatorilor implentari pentru MySQL si MonALISA.

Organizatorul de baza al PROOF-ului asigura posibilitatea de a defini noduri de calcul pe baza incarcarii lor si pe baza prioritatilor de grup cu ajutorul unei formule simple:

Nnoduri de calcul = NCPU · f · Pj + Nmin,

unde NCPU-numarul de procesoare libere pe nodurile clusterului, f-fractia de unitati libere,Nmin-numarul minim de unitati desemnate pentru o analiza si Pj- este tipul de prioritate definita mai sus

5.2.1 Implementarea unui schelet abstract de analiza in AliROOT : AliAnalysis

Vedere generala

Page 12: Raport Stintifico-Tehnic 1

Prototip O structura simpla facuta din 3 clase principaleAliAnalysisTask – reprezinta o analiza primara a datelor de intrareAliAnalysisDataSlot – reprezinta un slot unde datele de un anumit tip sunt conectate la o analiza specificaCu ajutorul unei analize se pot defini cateva sloturi de intrare/iesire.AliAnalysisDataContainer – reprezinta o clasa care iti seteaza datele sa fie de un anumit tip. Containerele de date, sunt conectate la sloturile de iesire a unei analize primare (daca exista) si de asemenea la cateva analize date de catre clientiAliAnalysisManager –reprezinta un selector care comunica cu o lista de analize de nivel mai inalt.Analiza se executa eveniment cu eveniment (Tselector)Permite asamblarea de trenuri de analiza

Analiza

Clasa deriva din Ttask si trebuie sa aiba implementata metoda Exec().Permite definirea de sloturi de intrare/iesire specificand tipul lor:

DefineInput (Int_t islot, TClass *type)DefineOutput (Int_t islot, TClass *type)

Permite conectarea sloturilor la containerele de dateConnectInput/Output(Int_t islot, AliAnalysisDataContainer *cont)

Tipul de date din containere trebuie sa derive din tipul containerului.

AliAnalysisTask

TTask(*) fActive

TTaskTTaskTTaskExecuteTasks()

Exec()

Exec()

fInputs

fOutputs

MyAnalysisTask

out0 out1 out2

Page 13: Raport Stintifico-Tehnic 1

Analiza definita de utilizatorTrebuie sa derive din AliAnalysisTaskUserul trebuie sa defineasca sloturile de intrare/iesire in constructorTrebuie sa implementeze functionalitatile analizei eveniment cu eveniment in metoda Exec()Se presupune ca datele sunt gata la nivelul tuturor sloturilor de intrare si poate sa le transmita catre un tip de date deja declaratDatele de iesire trebuiesc facute publice folosind metoda Publish()Este folosit pentru conectarea analizelor prin intermediul sloturilor de intrare/iesire. Aceasta analiza are posibilitatea ca mai multi utilizatori sa se conecteze la o alta analiza definita inainte de un alt user.Containerele de date de nivel inalt contin datele primare de tip ESD, AODDatele sunt stocate ca TObject*Tipul datelor sunt setate de o clasa de tip TClass. Daca nu sunt necesare datele sunt sterse.

Page 14: Raport Stintifico-Tehnic 1

Odata ce o analiza primara este conectata, o analiza secundara va fi adaugata la cea primaraO analiza nu trebuie sa creeze containere sau sa defineasca conexiuni la acestea in interiorul claselor.Executia

Datele initiale (ESD, AOD) sunt puse in containere de nivel inaltContainere anunta analizele utilizatorilorAnalizele verifica daca datele sunt disponibile la toate sloturile intrare -> se activeaza analizaAnalizele clientilor sunt executate de o analiza primara furnizand ultimul input.

6. Concluzii(se prezinta punctual)

• Unitatea de procesare (atomicitatea) datelor procesate este Evenimentul• Sistemul optim de analiza interactiva masiv paralela este sistemul PROOF• Pentru folosirea facila a sistemului sus mentionat a fost implementat in software un schelet ce

abstractizeaza procesarea masiv paralela a datelor si pune la dispozitia utilizatorului o interfata transparenta de folosire a unui astfel de cluster.

7. Bibliografie;

1. http://root.cern.ch/twiki/bin/view/ROOT/PROOF 2. http://aliceinfo.cern.ch/Offline/AliRoot/Manual.html 3. http://aliceinfo.cern.ch/Offline/Activities/Analysis/AnalysisFramework/index.html

AliAnalysisDataContainerTObject *fDataTClass *fType

AliAnalysisTask

AliAnalysisTask AliAnalysisTask

Clients


Recommended