Distribuované systémy a výpočty 9 Jan Janeček Czech Technical University in Prague c Jan Janeček, 2011 MI-DSV, SS 2011/12 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 1 / 27
Algoritmy Algoritmy detekující ukončení výpočtu jsou algoritmům detekujícím zablokování v řadě rysů podobné. U zablokování nás zajímá situace, kdy se některé procesy systému udržují vzájemně v pasivním stavu; na zbývajících procesech systému výpočet může pokračovat. U algoritmů detekujících ukončení výpočtu na systému nás zajímá situace, kdy jsou v pasivním stavu všechny procesy systému současně. Podobně jako u předchozích úloh lze nalézt algoritmy pracující na rozdílných principech. Jako příklad si uvedeme test ukončení difuzního algoritmu, a test ukončení libovolného distribuovaného algoritmu ve dvou formách. Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 2 / 27
Dijkstra-Scholten Algoritmus detekující ukončení výpočtu, který si uvedeme jako prvý, je vlastně pouhým doplňkovým testem k libovolnému difuznímu algoritmu. Připomeňme si, že difuzní algoritmus je startován jedním z procesů, který je kořenem stromu definovaným relací následnosti (o níž se difuzní program opírá). Tento proces rozesílá požadavky svým následníkům a očekává jejich odpovědi. Následníci reagují rozesláním požadavků svým následníkům a očekávají odpovědi; po soustředění všech odpovědí odpovídají procesu, který jejich aktivitu vyvolal. Konečně procesy v listech stromu definovaného relací následnosti odpovídají přímo na požadavky. Následující test doplňuje difuzní algoritmus o akce spojené s odesíláním a příjmem požadavků (MESSAGE) a odpovědí (SIGNAL). Pro každý proces udržujeme proměnnou DefIn (deficit na vstupu), která udává rozdíl v počtu přijatých požadavků a odeslaných potvrzení a proměnnou DefOut (deficit na výstupu), která udává rozdíl v počtu odeslaných žádostí a přijatých odpovědí. Proměnná Parent identifikuje proces, od kterého náš proces přijal prvou žádost, proměnná Others ukládá záznamy o dalších žádajících procesech (s možností zaznamenat libovolný proces násobně). Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 3 / 27
Dijkstra-Scholten Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 4 / 27
Dijkstra-Scholten Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 5 / 27
Dijkstra-Scholten Proces, který startuje algoritmus vyznačíme počáteční hodnotou DefIn = 1 a dovolíme mu tak rozeslat žádosti následovníkům. Důsledkem je nenulová hodnota proměnné DefOut tohoto procesu. Výpočet algoritmu je ukončen po přijetí všech odpovědí, tedy v okamžiku, kdy se hodnota DefOut vrátí na nulu. Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 6 / 27
Dijkstra-Feijen-Van Gasteren Tento algoritmus dovoluje testovat ukončení libovolného distribuovaného výpočtu. Na množině procesů definujeme uspořádání, například očíslováním procesů P 0, P 1,..., P k. Proces P 0 má v algoritmu významné postavení: startuje algoritmus a rozhoduje o ukončení výpočtu na distribuovaném systému. Procesy P 0, P 1,..., P k si (kromě komunikace související s vlastním výpočtem distribuovaného programu) předávají zvláštní zprávu TOKEN, která slouží pouze detekci ukončení. Tato zpráva nese jednobitovou informaci údaj o barvě, může být bílá nebo černá (WHITE, BLACK ). Podobně každý z procesů si udržuje proměnnou Color, která může nabývat hodnot odpovídajících bílé a černé barvě (WHITE, BLACK ). Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 7 / 27
Dijkstra-Feijen-Van Gasteren Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 8 / 27
Dijkstra-Feijen-Van Gasteren Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 9 / 27
Dijkstra-Feijen-Van Gasteren Test ukončení startuje proces P 0 odesláním zprávy TOKEN(WHITE) procesu P k, zpráva TOKEN je postupně předávána procesy P k, P k 1,..., P 1, až se vrátí k procesu P 0. Změna barvy přenášené touto zprávou na černou (BLACK ) indikuje aktivitu některého z procesů a proces P 0 odstartuje test ukončení znovu. Důvodem pro změnu barvy zprávy TOKEN z hodnoty WHITE na hodnotu BLACK při "průchodu"libovolným procesem je aktivita tohoto procesu nebo skutečnost, že v době od posledního "průchodu"tento proces odeslal zprávu aplikace nějakému procesu s vyšším indexem (který mohl být díky čekání na tuto zprávu nalezen v pasivním stavu). Algoritmus tak rozliší zdánlivé ukončení výpočtu od ukončení skutečného. Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 10 / 27
Misra Předchozí algoritmus má dvě omezení. Vyžaduje speciální funkci procesu P 0 a předpokládá, že zpoždění zpráv při výměně je zanedbatelné. Modifikace algoritmu popsaná Misrou obě omezení odstraňuje. Kruh propojující procesy nahrazuje cyklem C, který obsahuje všechny hrany grafu komunikací. Pokud zpráva TOKEN projde všemi procesy cyklu C a nalezne je v pasivním stavu (State = PASSIVE) a nedostane informaci o aktivitě procesu od předchozího "průchodu"(color = BLACK ), dosáhne hodnota nb přenášená zprávou TOKEN počtu procesů v cyklu a indikuje ukončení výpočtu. Délka cyklu je určena hodnotou Size(C), následnost procesů v cyklu funkcí Succesor(C, i). Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 11 / 27
Misra Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 12 / 27
Misra Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 13 / 27
Misra Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 14 / 27
Misra Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 15 / 27
Ochrana proti chybám procesů U řady aplikací postačí, pokud se na postupu kroky aplikací domluví určitá podmnožina procesů, výpadek ostatních procesů výsledek neovlivní. Takovou podmnožinou může být quorum. - Nejjednodušším typem quora je podmnožina s nejméně (n + 1)/2prvky, takové quorum označujeme jako majoritní. Existují však i quora, počet jejichž prvků je nižší. - Maekawova quora mají počet prvků roven n pro n procesů, příbuzné maticové quorum tvořené procesy v i-tém sloupci a j-tém řádku matice procesů má 2 (n) 1 prvků. - Další zajímavou třídou quor jsou stromová quora. Quorem je cesta mezi kořenem a listem binárního stromu, jehož uzly jsou procesy. Pokud je kterýkoliv z procesů na této cestě nefunkcní, mohou ho zastoupit jeho synové a cesty od nich k listům. O quorum mechanismy, které dovolují vybrat množinu procesů schopných provést krok výpočtu, se opírají mechanismy, které dovolí zajistit konzistenci replikovaných dat na všech procesech výpočtu. Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 16 / 27
Quora Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 17 / 27
Quora Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 18 / 27
Quora Maekawa Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 19 / 27
Quora Maekawa Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 20 / 27
Quora Stromové quorum Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 21 / 27
Quora Stromové quorum Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 22 / 27
Quora Stromové quorum - Agrawal-El Abbadi Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 23 / 27
Quora Stromové quorum Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 24 / 27
Quora Stromové quorum Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 25 / 27
Quora Stromové quorum Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 26 / 27
Quora Využití quora Jan Janeček Distribuované systémy a výpočty MI-DSV 2011 27 / 27