Derrick Kondo1 David P. Anderson2 John McLeod VII3 1INRIA, France 2University of California at Berkeley, U.S.A. 3Sybase Inc., U.S.A. Anotácia BOINC, stredne chránený systém pre dobrovo¾nícke výpoèty, dovo¾uje hostite¾om pripojenie k viacerým projektom. Každý hostite¾ periodicky žiada prácu zo servera projektu a vykonáva prácu. Tento proces zahròuje štyri súvisiace postupy: -
spustite¾né úlohy na hostite¾ovi, èo urobi? -
kedy a z ktorého projektu by mal hostite¾ žiada ïalšiu prácu? -
ko¾ko jednotiek by mal server posla v odpovedi na danú žiados? -
ako odhadnú zostávajúci èas výpoètu úlohy? V tomto èlánku zvažujeme nieko¾ko alternatív pre každý z týchto postupov. Použitím simulovania, študujeme rôzne kombinácie postupov, porovnávame ich na základe nieko¾kých vykonaní metriky a v rozsahu parametrov, takých ako premenlivos trvania úlohy, nepresný hranièný termín, a poèet pripojených projektov. 1 Úvod Dobrovo¾nícky výpoèet je forma distribuovaného výpoètu, v ktorom široká verejnos dobrovo¾níkov spracováva a akumuluje zdroje pre výpoèet projektov. Ranné dobrovo¾nícke výpoètové projekty zahàòajú Great Internet Mersenne Prime Search [12] a Distributed.net [1]. BOINC (Berkeley Open Infrastructure for Network Computing - Otvorená infraštruktúra pre sieové výpoèty z Berkeley) je stredne chránený systém pre dobrovo¾nícky výpoèet [6, 3]. BOINC projekty sú nezávislé; každý má svoj vlastný server, aplikácie a úlohy. Dobrovo¾níci sa podie¾ajú èinnosou softvéru BOINC klienta na svojich poèítaèoch (hostite¾och). Dobrovo¾níci môžu pripoji každého hostite¾a k hociktorému súboru projektov. Aktuálne je okolo 40 projektov založených na BOINC a okolo 400,000 dobrovo¾níckych poèítaèov vykonáva priemerne viac než 500 TeraFLOPs. BOINC softvér pozostáva zo zložiek klienta a servera. BOINC klient spúša aplikácie projektu, a vykonáva CPU plánovanie (implementované na vrchol lokálneho plánovaèa operaèného systému). Všetky sieové komunikácie v BOINC sú spúšané klientom; tento periodicky vyžaduje jednotky od serverov projektov, do ktorých je pripojený. Niektorí hostitelia majú prerušované fyzické sieové pripojenia (napríklad, prenosné poèítaèe alebo tie s pripájaním cez modem). Také poèítaèe sa môžu pripoji len každých nieko¾ko dní, a BOINC sa pokúša naèíta dostatok práce na "zamestnanie" poèítaèa až do nasledujúceho pripojenia. Tento proces získavania a vykonávania práce zahròuje štyri súvisiace postupy: -
CPU plánovanie (CPU scheduling): z aktuálne spustite¾ných jednotiek, ktorú spusti? -
Sprístupnenie práce (Work fetch): kedy žiada projekt o ïalšiu prácu, ktorý projekt žiada, a ako ve¾a práce požadova? -
Odoslanie práce (Work send): keï projekt prijíma požiadavku práce, aké jednotky by mal posla? -
Odhad èasu dokonèenia (Completion time estimation): ako odhadnú zostávajúci CPU èas úlohy? Tieto postupy majú ve¾ký vplyv na výkonnos projektov založených na BOINC. Pretože štúdium týchto postupov na mieste je obtiažne, vyvinuli sme simulaèný program, ktorý modeluje BOINC klienta a súbor projektov. Tento simulaèný program sme použili na porovnanie nieko¾kých kombinácií postupov plánovania, v rozsahu parametrov takých ako premenlivos trvania úlohy, nepresný hranièný termín, a poèet pripojených projektov. So simulaèným programom sú naše hlavné ciele ukáza efektivitu postupov plánovania v scenároch predstavujúcich aktuálne naèítanie práce projektu, a tiež hypoteticky extrémnych scenároch ktoré odrážajú schopnos plánovaèa zaobera sa naèítaním novej ïalšej jednotky. Zvyšok èlánku je usporiadaný nasledovným spôsobom. V èasti 2, opisujeme rôzne postupy plánovania podrobne. Potom v èasti 3, podrobne opisujeme simulaèný program a jeho vstupné parametre. V èasti 4, opisujeme našu metriku pre hodnotenie rôznych aspektov každého postupu plánovania. V èastiach 5 a 6, predstavujeme výsledky nášho hodnotenia a ich rozvinutie. V èasti 7, porovnávame našu prácu s ïalšími príbuznými prácami. Koneène, v èasti 8, rekapitulujeme hlavné zhrnutia tohoto èlánku. 2 Detaily postupu plánovania Postupy plánovania majú nieko¾ko vstupov. Prvým sú hardvérové charakteristiky hostite¾a, také ako poèet procesorov a porovnávacie testy. Klient h¾adá rôzne charakteristiky použitia, také ako efektívny podiel (podiel doby spusteného BOINC a doby dovoleného výpoètu), a štatistiky jeho sieovej pripojite¾nosti. Druhým sú užívate¾ské preferencie. Tieto zahàòajú: -
Zdroje poskytované pre každý projekt. -
Obmedzenia pre využívanie procesora: èi poèíta pokia¾ je poèítaè používaný, maximálny poèet CPU pre používanie, a maximálny podiel CPU èasu pre používanie (dovo¾uje používate¾ovi zredukova zahrievanie CPU). -
Interval pripojenia (ConnectionInterval): minimálna doba medzi periódami aktivity siete. Toto dovo¾uje užívate¾ovi poskytnú "tip" o tom, ako èasto sa pripája, a to dovo¾uje modemu používate¾a poveda BOINCu ako èasto ho má žiada o automatické pripojenie. -
Interval plánovania (SchedulingInterval): "èasový interval" plánovaèa CPU BOINC klienta (implicitná hodnota je jedna hodina). -
Zásoba práce (WorkBufMinDays): ko¾ko práce do zásobníka. -
Prídavná zásoba práce (WorkBufAdditional): ko¾ko práce do zásobníka okrem WorkBufMinDays. Koneène, každá úloha (tj. pracovná jednotka) má nieko¾ko projektom špecifikovaných parametrov, vrátane odhadu poètu jej operácií s pohyblivou rádovou èiarkou, ako aj hranièný termín, do ktorého by mala by odoslaná. Väèšina BOINC projektov používa nieko¾konásobný výpoèet, v ktorom dva alebo viac prípadov každej úlohy sú spracované na rozdielnych hostite¾och. Ak hostite¾ nenavráti úlohu do jej hranièného termínu, užívate¾ obyèajne nedostane kredit za úlohu. Budeme študova dva alebo tri varianty každého postupu, ako je opísané nižšie. 2.1 Postupy plánovania CPU CS1: cyklická obsluha rozvrhovania èasu medzi projektmi, váženého pod¾a ich podielu zdrojov. CS2: simulácia váženej cyklickej obsluhy (round-robin - RR) plánovania, identifikujúc úlohy, ktoré nestihnú svoje hranièné termíny. Naplánuje teda úlohy s najskorším hranièným termínom najskôr (earliest deadline first - EDF). Ak sú zostávajúce CPU, naplánuje ïalšie úlohy použitím váženej cyklickej obsluhy. 2.2 Postupy volania práce WF1: drža dostatok práce stojacej vo fronte postaèujúcej pre WorkBuf-MinDays+WorkBufAdditional, a rozdeli túto frontu medzi projekty pod¾a podielu zdrojov, aby každý projekt mal vždy prinajmenšom jednu úlohu rozbehnutú, alebo stojacu vo fronte. WF2: udržiava "dlhodobý dlh" práce pre každý projekt. Použitie simulácie váženej cyklickej obsluhy k odhadu jeho CPU schodku. Vyvola prácu od projektu pre ktorý je dlh - manko najväèší. Zabráni opätovnému privolávaniu práce od projektu s "napnutým" hranièným termínom. Detaily tohoto postupu sú dané v [14]. 2.3 Postupy posielania práce WS1: daná požiadavka na X sekúnd práce, pošle súbor úloh ktorých odhadovaná doba výpoètu (založená na FLOPS odhadoch, porovnávacích testoch, atï.) je najmenej X. WS2: správa žiadosti obsahuje zoznam všetkých rozpoèítaných úloh na hostite¾ovi, vrátane ich hranièných termínov a èasov dokonèenia. Pre každého "kandidáta" úlohy J, robí EDF simuláciu aktuálnej pracovnej náplne s J pridanou. Pošle J len ak táto vyhovuje jej hraniènému termínu, všetky úlohy ktoré aktuálne vyhovujú ich hranièným termínom pokraèujú tak aby boli dokonèené, a všetky úlohy, ktoré nestihnú svoje hranièné termíny, ich ešte viac "nezmeškávali". 2.4 Postupy odhadu dokonèenia úlohy JC1: BOINC aplikácie hlásia ich vykonané èasti periodicky v priebehu výpoètu. Spo¾ahlivos odhadu založeného na vykonanej èasti zvyšuje pravdepodobnos s postupom úlohy. Preto, pre úlohy v priebehu BOINC používa odhad FA + (1 - F)B, kde F je vykonaná èas, A je odhad založený na uplynutom CPU èase a vykonanej èasti, a B je odhad založený na porovnávacích testoch, výpoète s pohyblivou rádovou èiarkou, užívate¾ských preferenciách, a CPU úèinnosti (stredná hodnota prevodového pomeru CPU èasu k reálnemu èasu pre tento projekt). JC2: udržova pre každý projekt korekèný faktor trvania (duration correction factor - DCF), odhad prevodového pomeru efektívneho CPU èasu k pôvodne odhadovanému CPU èasu. Toto je vypoèítané konzervatívnym spôsobom; zvýšenia sa odzrkadlia okamžite, ale zníženia sú exponenciálne vyhladené. "úplný" postup je alternatíva každého dielèieho postupu (napríklad, CS2_WF2_WS2_JC2). 3 Scenáre plánovania Tieto postupy plánovania vyhodnocujeme použitím simulaèného programu BOINC klienta. Simulaèný program imituje logiku CPU plánovania a postupy volania práce klientom presne pod¾a zdrojového kódu samotného. Tento bol vhodne vyrobený pretvorením zdrojového kódu BOINC klienta tak, že kód plánovaèa je naprosto oddelený od kódu požadovaného pre pripojenie do siete a sprístupnenia pamäte. Ako taký, sa simulaèný program pripojí k reálnemu BOINC kódu plánovania s malou modifikáciou. V skutoènosti, len kód pre sprístupnenie siete (tj. RPC pre nadviazanie kontaktu s projektom a dátovými servermi) je nahradený simulaèným testovacím kódom. Teda, logika plánovania a skoro celý zdrojový kód simulovaného klienta sú identické s reálnym. Simulaèný program dovo¾uje špecifikova nasledovné parametre: -
Pre hostite¾a: -
Poèet CPU a rýchlos CPU. -
Podiel èasu k dispozícii -
Trvanie intervalov dostupnosti ako exponenciálne rozdelenie s parametrom λavail -
Interval pripojenia - ConnectionInterval -
Pre klienta: -
Pre každý projekt: -
Podiel zdrojov -
Medza latencie (tj. hranièný termín úlohy) -
Odhad FLOPs - poètu operácií úlohy -
Aktuálne rozdelenie (normálne) FLOPs úlohy Parameter | Hodnota | Trvanie | 100 dni | Delta | 60 sekúnd | Tabu¾ka 1. Parametre simulaèného programu. Parameter | Hodnota | podiel zdrojov | 100 | medza latencie | 9 dní | odhad FLOPs úlohy | 1,3.1013 (3,67 hodín na urèenom 3GHz hostite¾ovi) | priemer FLOPs úlohy | 1,3.1013 (3,67 hodín) | std dev (smerodajná odchýlka) FLOPs | 0 | Tabu¾ka 2. Parametre projektu. Každá kombinácia parametrov je nazvaná scenár. Pri simulaèných experimentoch používame hodnoty ukázané v tabu¾kách 1,2,3 a 4 ako základné vstupné parametre do simulaèného programu. V našich simulaèných experimentoch variujeme nastavenie jedného alebo malej podmnožiny týchto parametrov, pri ponechaní konštantných hodnôt ostatných parametrov. To je vhodné pre identifikovanie (extrémnej) situácie, kde konkrétny postup plánovania pracuje zle. Hodnoty ukázané v týchto tabu¾kách sú vybraté tak realisticky, ako je možné použitím dát vybratých z reálnych projektov, pretože presnos simulácie silno závisí na týchto hodnotách a ich proporciách vzh¾adom k ostatným. Pre parametre hostite¾a a projektu používame stredné hodnoty zistené z reálnych BOINC projektov ako je opísané v [7, 2]. Pre parametre klienta používame implicitné hodnoty v reálnom klientovi. Parameter | Hodnota | Poèet CPU | 2 | priradená rýchlos CPU vo FLOPS | 1.109 | podiel èasu k dispozícii | 0,8 | λavail | 1,000 | interval pripojenia ConnectionInterval | 0 | Tabu¾ka 3. Parametre hostite¾a. Parameter | Hodnota | Perióda plánovania CPU | 60 minút | Základná zásoba WorkBufMinDays | 0,1 dòa (2,4 hodiny) ) | Dodatoèná zásoba WorkBufAdditional | 0,25 dòa (6 hodín) | Tabu¾ka 4. Parametre klienta. 4 Vykonávanie metriky Používame nasledovné metriky v hodnotení postupov plánovania: -
Neèinnos (Idleness): nevyužitý podiel z celkového CPU èasu k dispozícii, pretože nie sú žiadne spustite¾né úlohy. Tento je v rozmedzí [0;1], a je v ideálnom prípade nula. -
Strata (Waste): podiel CPU èasu využitého úlohami, ktoré nestihli svoj hranièný termín. -
Nedodržanie podielu (Share violation): miera presnosti rešpektovania podielov zdrojov užívate¾a , kde 0 je najlepšie a 1 je najhoršie. -
Monotónnos (Monotony): obrátená miera toho, ako èasto hostite¾ prepína medzi projektmi: 0 je tak èasto ako je možné (daný interval plánovania a iné faktory) a 1 znamená bez prepínania. Táto metrika reprezentuje skutoènos, že ak dobrovo¾ník venoval rovnaký podiel zdrojov pre dva projekty, a jeho poèítaè navštevuje èinnosou len jeden z nich po dlhú dobu, bude neuspokojený. 5 Výsledky a diskusia 5.1 Postupy plánovania CPU V tejto èasti porovnávame postup ktorý používa len cyklickú obsluhu rozvrhovania èasu (CS1_WF2_WS2_JC2) s postupom, ktorý bude potenciálne plánova (niektoré) úlohy v EDF móde, ak ich hranièné termíny sú v riziku nestihnutia (CS2_WF2_WS2_JC2). Pre simulovanie reálneho stiahnutia úloh z projektov musíme zaisti, aby existovala zmes projektov s množstvom ve¾kostí úloh a hranièných termínov. Preto definujeme termín zmes (mix) nasledovným spôsobom. Sahovanie úloh má mix M ak obsahuje M projektov, a klient je registrovaný každým projektom Pi, kde 1 ≤ i ≤ M, a každý projekt Pi má nasledovné charakteristiky: priemer FLOPs na úlohu = i × FLOPs základný medza oneskorenia = i × medza oneskorenia základná podiel zdrojov = i × podiel zdrojov základný, kde základné hodnoty sú hodnoty definované v tabu¾kách 1, 3, a 4.  (a) strata  (b) monotónnos projektu obrázok 1. Plánovanie CPU Variujeme M od 1 do 20 pre každú simuláciu sahovania úloh. Výsledky sú ukázané v obrázku 1. Pozorujeme, že CS2_WF2_WS2_JC2 èasto prevyšuje CS1_WF2_WS2_JC2 o viac než 10% kvôli strate keï mix projektu je väèší ako 3. Zvýšený výkon CS2_WF2_WS2_JC2 môže by vysvetlený zmenou na EDF mód, keï hranièné termíny úloh sú v riziku. Pre neèinnos, nedodržanie podielu, a monotónnos projektu, výkonnos CS2_WF2_WS2_JC2 a CS1_WF2_WS2_JC2 je približne ekvivalentná. nedodržanie podielu je nízke, obyèajne pod 0,10, a rastie len nepatrne s poètom projektov a kombinácií (mixu). Pokia¾ ide o neèinnos, oba postupy majú výrazne nízke (blízko nuly) neèinnosti pre hocijaký poèet projektov a kombinácií (mixu). Naopak, monotónnos projektu inklinuje k znaènému zvýšeniu s rastom mixu projektu. Zisujeme, že pomerne dlhé úlohy môžu èasto spôsobova monotónnos, hlavne keï úloha je v nebezpeèenstve nestihnutia hranièného termínu a plánovaè prepne na EDF mód aby zaistil jej vèasné dokonèenie. V skutoènosti, vzrast monotónnosti s dåžkou úlohy je nutný ale akceptovate¾ný, daný dôležitejším cie¾om stihnutia uzávierky úlohy a minimalizova stratu. Teda, v takmer všetkých prípadoch, postup CS2_WF2_WS2_JC2 kombinujúci EDF s RR pôsobí rovnako ako CS1_WF2_WS2_JC2. Ako ved¾ajší úèinok z týchto experimentov, determinujeme rozšírite¾nos BOINC klienta vzh¾adom na poèet projektov. (Jeden by sa mohol spýta, ako sa užívate¾ môže zapísa do 20 projektov. Tento scenár môže ve¾mi dobre vzniknú, keïže poèet projektov rýchlo stúpa, a myšlienka projektu "spoloèného fondu" bola navrhnutá, kde projekty sú zoskupené istou charakteristikou [napríklad: nezárobkový, výpoètová biológia], a užívate¾ský register pre fondy nielen pre projekty.) Zisujeme, že dokonca keï poèet projektov sa blíži k 20, strata, neèinnos, a nedodržanie podielu zostávajú relatívne konštantné v celom rozsahu medzi 1-20. Výnimkou je monotónnos projektu, ktorá stúpa rýchlo, ale je akceptovate¾ná. Teda vyvodzujeme, že plánovaè "ladí" s poètom projektov. Vo zvyšku tohoto paragrafu, preskúmame ïalej CS2_WF2_WS2_JC2 postup vzh¾adom na nepresný hranièný termín a ve¾kos zásobníka. 5.1.1 Vo¾ný termín uzávierky  Obrázok 2. Vo¾nos V tejto èasti vyšetríme citlivos CS2 WF2 WS2 JC2 na medzu èakacej doby vzh¾adom k priemernej dobe výpoètu úlohy na danom poèítaèi. Vo¾nos (slack) definujeme ako podiel hranice èakacej doby a priemeru FPOPS odhadu násobeného prevrátenou hodnotou rýchlosti hostite¾a. Potom spustíme simulácie testovania plánovaèa so samostatným projektom a rozsahom hodnôt vo¾nosti od 1 do 60. Vo¾nos 1 znamená, že medza latencie je približne ekvivalentná dobe výpoètu. Vo¾nos 60 znamená, že hranica latencie je 60 krát väèšia než priemerná doba výpoètu na danom poèítaèi. My vyberieme túto maximálnu hodnotu pretože ona v skutoènosti reprezentuje strednú vo¾nos spomedzi všetkých existujúcich BOINC projektov [7]. To jest, spracovanie úloh v mnohých projektoch je rádovo v hodinách, kde ako medza latencie je v termíne dni. Obrázok 2 ukazuje výsledok simulácie testovania vo¾nosti. Samozrejme, podiel nedodržania a monotónnosti sú 0 pokia¾ máme len samostatný projekt. Neèinnos je 0 kvôli malému intervalu pripojenia a tak plánovaè èiní perfektnú službu vyžadovania práce. Avšak, inklinuje k privolaniu viac práce, než môže vypoèíta. Zisujeme, že pre vo¾nos 1 je strata 1, a rýchlo klesá k 0 keï vo¾nos dosahuje 5. Strata príslušná k hodnotám vo¾nosti 2, 3, 4, a 5 je 0,75; 0,24; 0,02 a 0 v tomto poradí. Pod¾a toho, pre hodnoty vo¾nosti väèšie alebo rovnajúce sa 5, strata ostáva pri 0. Po starostlivej prehliadke našich experimentov simulácie zisujeme, že nevyužite¾nos hostite¾a (nastavená na 20% èasu) je ten hlavný faktor, ktorý spôsobuje vysokú hodnotu straty, keï je vo¾nos blízko 1. To jest, ak hostite¾ je nevyužite¾ný 20% èasu, potom 3,67 hodiny práce na danom poèítaèi zaberie 4,58 hodiny v priemere a pravdepodobne prevýši medzu latencie 3,67 hodiny. Iný dôvod straty je celková ve¾kos zásobníka práce, ktorá je nastavená na implicitnú hodnotu 0,35 (= 0,25 + 0,1) dòa. Keï ve¾kos zásobníka práce sú špecifikovaná, klient zaisuje, aby privolával najmenej takú hodnotu práce pri každej žiadosti. Nastavenie hodnoty ktorá je príliš vysoká, môžu ma za následok privolanie príliš mnoho práce, ktorá nemôže by dokonèená do uzávierky. Túto záležitos ïalej vyšetríme v nasledujúcej sekcii. 5.1.2 Ve¾kos zásobníka Na podporu našej hypotézy , že ve¾kos zásobníka je závažný faktor ktorý prispieva k strate, sme vykonali simulácie s rozdielny ve¾kosami zásobníka. Predovšetkým sme zisovali ako strata variuje ako funkcia ve¾kosti zásobníka a vo¾nosti. Menili sme vo¾nos od 1 do 5, èo zodpovedalo rozsahu hodnôt vo¾nosti na obrázku 2, èo konèilo kladnou stratou (okrem vo¾nosti 5, kde strata bola 0). Variovali sme ve¾kos zásobníka medzi cca 1 a 8,4 hodiny práce. Maximálna hodnota v tomto rozsahu zodpovedá prednastavenej hodnote ve¾kosti zásobníka používanej klientom, tj. 0,35 dòa, a používanej pre experimenty s vo¾nosou v èasti 5.1.1.  Obrázok 3. Strata ako funkcia minima ve¾kosti zásobníka a vo¾nosti Obrázok 3 ukazuje výsledok našich simulácií. Rozdielne farby každého segmentu krivky zodpovedajú rozdielnym hodnotám straty. Keï ve¾kos zásobníka je v jeho maximálnej hodnote, vyplývajúca strata ako funkcia vo¾nosti je identická so stratou ukázanou na obrázku 2. Ako sa ve¾kos zásobníka znižuje, strata (a poèet zmeškaných uzávierok) dramaticky klesá. Pre prípad kde je vo¾nos 2, strata je konštantná pre ve¾kosti zásobníka medzi 5 a 7 hodinami. Je to jednoducho preto, že ve¾kosti úloh sú okolo 3,67 hodiny, a tak prírastkové zvyšovania ve¾kosti zásobníka nemôžu zmeni poèet úloh stiahnutých zo servera. Hoci zmenšovanie ve¾kosti zásobníka môže tiež zníži stratu, výnimka je keï vo¾nos je 1; strata ostáva na 1 bez oh¾adu na ve¾kos zásobníka. Je to kvôli nevyužite¾nosti hostite¾a a jeho vplyvu na dobu výpoètu úlohy. To má menší vplyv, keï vo¾nos dosahuje 2, kedy je hostite¾ nevyužite¾ný len 20% èasu, a zodpovedá spomaleniu menej než 2. Vyvodzujeme, že zmenšovanie ve¾kosti zásobníka práce môže ma za následok obrovské zníženie straty, ale výhody sú limitované dostupnosou klienta. Avšak, jeden nemôže nastavi ve¾kos zásobníka práce ¾ubovo¾ne nízku, pretože to by mohlo ma za následok èasté zahltenie servera so žiadosami o prácu od klientov. Budeme vyšetrova tieto zaujímavé problémy v ïalšej práci. 5.2 Postupy vyžadovania práce V tejto èasti porovnáme dva spôsoby urèovania ktorý projekt má požadova ïalšiu prácu, a ko¾ko práce má požadova. Keï sa vytvára požiadavka práce, prvý postup (CS2_WF1_WS2_JC2) sa pokúša zaisti, aby fronta práce bola naplnená požadovaním práce pod¾a poskytnutých zdrojov, aby prinajmenšom jedna jednotka bola poèítaná, alebo stála vo fronte. Druhý postup (CS2_WF2_WS2_JC2) stanovuje, aký je "dlhodobý dlh" prisúdený každému projektu, a požaduje prácu od projektu s najväèším rozdielom medzi dlhom a naplnením. (Podrobnosti o každom postupe môžete nájs v [14].) Zisujeme, že strata pre CS2_WF1_WS2_JC2 inklinuje k dramatickému zvýšeniu s mixom projektov (pozri obrázok 4a), a že narušenie podielu je relatívne vysoké (pozri obrázok 4b), keï úlohy pre projekty s tesnými uzávierkami sú stiahnuté, a predbiehajú iné menej naliehajúce jednotky, spôsobujúc, že tieto premeškajú svoje uzávierky. Naopak, CS2_WF2_WS2_JC2 zlepšuje stratu o takmer 90% a nedodržanie podielu o takmer 50%, pretože postup sa vyhýba privolávaniu práce z projektov s tesnými uzávierkami. (Neèinnos a monotónnos pre oba postupy boli skoro identické.)  a) strata  b) nedodržanie zdrojov Obrázok 4. Vyžadovanie práce 5.3 Postupy odosielania práce V tejto èasti porovnávame dva postupy pre odoslanie práce zo servera. Prvý postup (CS2_WF2_WS1_JC2) jednoducho posiela množstvo práce žiadanej klientom. Druhý postup (CS2_WF2_WS2_JC2) kontroluje prostredníctvom simulácie EDF priamo serverovou stranou, èi by nanovo žiadané úlohy vyhoveli ich uzávierkam, èi všetky rozpoèítané úlohy na klientovi by stále stihli svoje uzávierky, a èi všetky rozpoèítané úlohy na klientovi, ktoré nestihnú svoje uzávierky, nespôsobia zmeškanie pre ïalšie. Zistili sme, že druhý postup posielania práce CS2_WF2_WS2_JC2 je výhodný len keï je relatívne mnoho úloh na klientovi (majúcom ve¾ký zásobník práce stojacej vo fronte), a ak množstvo práce na úlohu má vysokú premenlivos. Toto by mohlo vytvori "ideálny" stav tam, kde by nové úlohy mohli preruši rozpoèítané úlohy. A tak k ukázaniu efektivnosti postupov posielania práce sme zvýšili interval pripojenia a ve¾kos zásobníka práce na 2 dni, variovali smerodajnú odchýlku FPOPS na úlohu faktorom s relatívne k priemernej ve¾kosti úlohy, a vytvorili dva projekty s rovnakými podielmi zdrojov a ve¾kosou úloh, ktoré sa odlišujú faktorom 10. Na obrázku 5 variujeme smerodajnú odchýlku s ve¾kosti úlohy faktorom s medzi 1 a 1000. Zisujeme, že CS2_WF2_WS2_JC2 èasto nedosahuje CS2_WF2_WS1_JC2 o 20% alebo viac z h¾adiska straty, za cenu neèinnosti, ktorá je èasto vyššia o 20% alebo viac. Hlavný dôvod pre tento výsledok je, že CS2_WF2_WS2_JC2 je prirodzene konzervatívnejší v odoslaní úloh ku klientovi, èo redukuje nestihnutie uzávierky, ale na druhej strane spôsobuje èastejšiu neèinnos.  a) strata  b) Neèinnos Obrázok 5. Odosielanie práce 5.4 Postupy odhadu dokonèenia úlohy Na vytvorenie a formovanie jednotiek projektu, vývojár aplikácie musí poskytnú odhad množstva práce v FPOPS na jednotku. Tento odhad je na druhej strane používaný plánovaèom klienta spolu s hranièným termínom jednotky na formovanie žiadostí práce a na urèenie akú prácu naplánova ïalej. Avšak, odhady užívate¾a sú èasto notoricky mimo od aktuálnej hodnoty práce. Toto bolo evidentné v dobrovo¾níckych systémoch spracovaniach údajov ako BOINC a tiež pri využívaní tradièných MPP [13]. Plánovaè ako taký, používa korekèný faktor trvania na kompenzovanie hocijakej chyby v odhade, založený na histórii vypoèítaných úloh. V tejto èasti meriame dopad použitia DCF na rozpätie chýb odhadu porovnaním CS2_WF2_WS2_JC1 s CS2_WF2_WS2_JC2. Nech f je èinite¾ chyby taký, že odhadovaná užívate¾ova práca na jednotku je daná aktuálnou prácou delenou f. Keï f = 1, odhad užívate¾a zodpovedá aktuálnemu presne. Keï f > 1, potom odhad užívate¾a podceòuje množstvo reálnej práce. Pozorujeme, že spoèiatku, keï odhad zodpovedá skutoènosti, potom ako postup s DCF (keï je nastavený k vyrovnaniu hocijakej chyby) tak aj postup bez DCF (keï je vždy nastavený na 1) majú identický výkon v zmysle straty (vid obrázok 6). Pre vyššie chybové èinitele, postup s DCF znaène zaostáva za postupom, ktorý ho vynecháva. Strata pre DCF ostáva pozoruhodne konštantná bez oh¾adu na èinite¾ chyby, kým strata pre postup bez DCF rýchlo stúpa. V skutoènosti, strata dosahuje takmer 1, keï je odhad práce 4 krát menší než skutoèná. Pokia¾ ide o rýchlos konvergencie k správnemu DCF, po podrobnej kontrole krivky našej simulácie sme zistili, že DCF konverguje priamo k správnej hodnote po poèiatoènom volaní práce. (Pre struènos ukazujeme len obrázok pre stratu; všetky ïalšie hodnoty pre neèinnos, narušenie podielu, a monotónnos projektu boli nulové.)  Obrázok 6. Dokonèenie jednotky 6 Umiestnenie Plánovaè klienta bol zrealizovaný v C++ a rozmiestnený na asi milióne hostite¾ov cez Internet [6, 3]. Jedno z primárnych hodnotení pre èinnos v reálnych nastaveniach je spätná väzba od užívate¾ov o postupoch plánovania. Užívatelia majú nieko¾ko spôsobov priamo alebo nepriamo monitorova plánovanie klienta, vrátane schopnosti zaznamena aktivity plánovaèa klienta s jednoduchým oznaèením ladenia, alebo hodnotou kreditu im prideleného. (Všeobecne, projekty priznajú len kredit za prácu vyhotovenú pred uzávierkami.) Od zavedenia postupov zodpovedajúcich CS2_WF2_WS2_JC2, poèet sažností poslaných BOINC vývojárom bol znížený na asi jednu za mesiac. Tieto sažnosti sa prièítajú najmä názorovým rozdielom ako by mal BOINC plánovaè pracova, a nie zvláš podstatné pre hodnotenie èinnosti ako je definovaná v èasti 4. 7 Súvisiace práce Dvaja autori tohto èlánku nedávno podrobne opísali rovnaké postupy plánovania v [14]. Ale tam bolo malé hodnotenie èinnosti, pretože študujú. Mimo tejto práce, výpoètové mriežky [10, 11] sú najbližšie hlavnej èasti skúmania týkajúceho sa dobrovo¾ných výpoètov, a plánovanie v nestálosti a rôznorodosti bolo vyšetrené intenzívne v oblasti skúmania mriežky [4, 5, 8, 9]. Avšak je ve¾a dôvodov preèo tieto stratégie sú neaplikovate¾né na dobrovo¾né výpoèty. Prvý, rozvrhovacie algoritmy a postupy èasto predpokladajú, že práca môže by viazaná na zdroje samotné, èo v dobrovo¾ných výpoètoch je vylúèené bezpeènostnými bránami a NAT - prekladmi sieových adries. V dôsledku toho plán urèený postupom pre prostredia mriežky nemôže by úspešne rozvinutý, pretože zdroje sú nedosiahnute¾né zo servera priamo. Druhý, v dobrovo¾ných systémoch spracovania údajov sú viaceré faktory (a èasto rádovo) viac nestále a rôznorodé než grid systémy, a teda èasto vyžadujú nový súbor stratégií pre riadenie zdrojov a plánovanie. Koneène, pod¾a našej znalosti, práca predstavená tu je prvá prípad, kde plánovanie pre dobrovo¾ný výpoèet sa deje v mieste zdrojov samotných, a kde plánovaè je hodnotený s novým súborom metriky, menovite stratou spôsobenou zmeškaním uzávierky, neèinnosou, narušením podielu, a monotónnosou. 8 Zhrnutie V nasledujúcom sú hlavné závery z našich simulaèných výsledkov a analýz: -
Plánovanie CPU (CPU scheduling): EDF simulácia má èasto za následok 10% zlepšenie výkonu detekciou a vèasným zabránením možného zmeškania uzávierky. -
Privolanie práce (Work fetch): Privolávanie práce založené na dlhodobom dlhu a CPU naplnenia je lepšie ako privolávanie práce proporcionálne pod¾a podielu zdrojov. Zdokonalenie použitia niekdajšieho postup zlepšuje stratu o takmer 90% a narušenie podielu o takmer 50% zabránením privolania práce od projektov s nedostaèujúcimi uzávierkami. -
Odosielanie práce (Work send): Simulácia strany servera k urèeniu dopadu nových úloh na existujúcu náplò práce klienta je kritická, keï ve¾kos jednotiek má vysokú premenlivos (smerodajná odchýlka väèšia než 10 násobok priemernej hodnoty práce na jednotku), keï klienti majú ve¾ký zásobník práce, a keï sa klienti pripájajú relatívne zriedkavo. -
Odhad èasu dokonèenia práce (Job completion time estimation): Keï odhad práce užívate¾a na jednotku je vypnutý faktorom 2 alebo väèším, udržiavanie korekèného faktora trvania pre kompenzovanie tohto rozdielu je podstatné. Inak dosahuje strata èasto takmer 1.
PDF verziu tohoto èlánku si môžete stiahnu tu.
Literatúra [1] Distributed.net. www.distributed.net. [2] XtremLab. http://xtremlab.lri.fr. [3] D. Anderson. Boinc: A system for public-resource computing and storage. In Proceedings of the 5th IEEE/ACM International Workshop on Grid Computing, Pittsburgh, USA, 2004. [4] N. Andrade, W. Cirne, F. Brasileiro, and P. Roisenberg. OurGrid: An Approach to Easily Assemble Grids with Equitable Resource Sharing. In Proceedings of the 9th Workshop on Job Scheduling Strategies for Parallel Processing, June 2003. [5] F. Berman, R. Wolski, S. Figueira, J. Schopf, and G. Shao. Application-Level Scheduling on Distributed Heterogeneous Networks. In Proc. of Supercomputing ’96, Pittsburgh, 1996. [6] The berkeley open infrastructure for network computing. http://boinc.berkeley.edu/. [7] Catalog of boinc projects. http://boinc-wiki.ath.cx/index.php?title=Catalog_of_BOINC_Powered_Proje%cts. Vytvoril: slavko.sk [08. december 2007 15:15:40] / Upraven: [10. december 2007 20:22:02] / Poet zobrazen: [10200] |