Paikallinen stabilointi Seminaari Hajautetut algoritmit: Itsestabiloivat algoritmit Aila Koponen 9.10.07
Paikallinen stabilointi Joitain ongelmia itsestabiloinnissa! Superstabilointi! Virheitä eristävät t itsestabiloivat algoritmit! Virheenhakukoodit ja korjaus
Ongelmia itsestabiloinnissa Tilanne: : Itsestabiloivat algoritmit eivät t takaa käyttäytymistään n järjestelmj rjestelmän n stabiloitumisen aikana. Virheen löytyminen l voi alkujaan kestää - virhetilanteeseen sotkeutunut alue voi kasvaa suureksikin Stabiloinnin aiheuttama muutosalue voi kattaa pahimmassa tapauksessa koko järjestelmj rjestelmän Stabiloitumiseen kuluva aika on epämää ääräinen
Superstabilointi Superstabiloiva algoritmi on määm ääritelmänsä mukaan aina itsestabiloiva ja lisäksi: Virhemallina konfiguraatiomuutos (+-linkki Järjestelmä saavuttaa mistä tahansa tilasta turvallisen konfiguraation hallitusti säilytts ilyttäen porttiehdon stabiloitumisen aikana. Porttiehto on vahvin ehto joka pitää topologiamuutoksen aikana. Stabiloitumisvauhti oltava ripeä,, esimerkissä superstabiloinnin aikavaativuus on yksi asynkroninen sykli
01 02 03 04 05 06 07 08 09 10 do forever od GColors := Ø for m := 1 to δ do od lr m := read (r m If ID(m > I then GColors := GColors lr m.color if color i GColors then color i := choose(\\ GColors write r i.color := color Superstabilointi 2/4 // suurempien naapureiden värit Esimerkkinä superstabiloivaksi muuntamisesta käytetk ytetään n itsestabiloivaa väritysalgoritmia prosessori P :lle: i Turvallinen konf: naapuriprosessorit eri väriset, v naapureita max, värejä +1 Jossain vaiheessa suurimman id:n omaava prosessori kiinnittää värinsä jolloin pysyvä värjäytyminen suuremasta pienimpään alkaa - turvallinen konfiguraatio saavutetaan ennen pitkää ää.
Superstabilointi 3/4 Prosessorit ketjussa suuremmasta ID:stä pienempää ään. Turvallisessa konfiguraatiossa naapureiden maksimimää äärä =2 ja värien määrä +1.. Stabiloituminen tapahtuu, mutta: Topologiamuutos säilytti s naapureiden maksimimää ääräehdon mutta ei erivärisyysehtoa risyysehtoa Pysyvä värjäytyminen suuremasta pienimpään alkaa ennen pitkää Identiteettien järjestyksen j vuoksi alkaa värjäytymisaalto ja tuurilla kaikki vaihtavat väriv riä...
01 02 03 04 05 06 07 08 od 09 10 11 12 13 14 15 16 do forever AColors := Ø GColors := Ø for m := 1 to δ do lr m := read (r m AColors := AColors lr m.color if ID(m > I then GColors := GColors lr m.color Superstabilointi 4/4 //kaikkien naapureiden värit // suurempien naapureiden värit if color i = or color i GColors then color i := choose(\\ AColors write r i.color := color od interrupt section if recover ij and j>i then //topologiamuutos color i := write r i.color := Superstabiloiva väritysalgoritmi v prosessori P :lle: i Värejä nyt yksi ylimää ääräinen,. Perusväripaletti ripaletti kuten edellä. Toipuvan linkin päissp issä olevat prosessorit saavat signaalin recover ij
Virheitä eristävät t itsestabiloivat algoritmit Virhemalli olettaa että vain väliaikaisia v vikoja (transient( faults tapahtuu pitkäkestoisissa kestoisissa suorituksissa (long( tasks long-lived lived Mistä tahansa tilasta (ei vain alkutilasta lähtien l voidaan saavuttaa turvallinen konfiguraatio Stabiloitumiseen kuluva aika on rajoitettu O(f sykliin kun f:n n prosessorin tilat ovat korruptoituneet Esimerkkinä käytetään n kiinteän n tuloksen antavaa itsestabiloivaa synkronista algoritmia, joka on muodostettu päivitysalgoritmista p (2.11.( Esa Elovaara lisää äämällä settiin ko.prosessorin kiinteä syöte 2.11. Esa Elovaara
01 02 03 04 05 06 07 08 09 10 11 upon a pulse := Ø forall P j N(i do := read(processors j := \\ <i,*,*> := ++ <*,1,*> := {<i,0,i i >} forall P j processors( do write Processors i := ConPrefix( write O i := ComputeOutput i (Inputs(Processors i Virheitä eristävät... t... 2/4 := \\NotMinDist(P j, Esimerkkinä virheitä eristäväksi muuntamisesta käytetk ytetään n kiinteän n tuloksen tuottavaa synkronista algoritmiä prosessori P :lle. i Entä jos tilojen muuttumisen lisäksi syötteet muuttuvat?...paljon kukkua tulostemuuttujissa ennenkuin tilanne stabiloituu...
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Virheitä eristävät... t... 3/4 upon a pulse := Ø forall P j N(i do := read(processors j If RepairCounter i d + 1 then RepairCounter i := min(repaircounter i, read(repaircounter j od := \\ <i,*,*,*> := ++ <*,1,*,*> := {<i,0,i i, A i >} forall P j processors( do := \\ NotMinDist(P j, write Processors i := ConPrefix( if RepairCounter i = d + 1 then if (O i ComputeOutput i (Inputs(Processors i or ((exists<*,*,*,a> Processors i A Inputs(Processors i then RepairCounter i := 0 else RepairCounter i := min(repaircounter i + 1, d + 1 write O i := ComputeOutput i (RepairCounter i, MajorityInputs(Processors i if RepairCounter i = d + 1 then A i := Inputs(Processors i Algoritmi muunnettu virheitä eristäväksi, itsestabiloivuus säilyy. s
Virheenhakukoodit ja korjaus Virhemallina käytetk ytetään huonoimman tilapäisen isen vian mallin n (malicious( transient fault model sijaan tavanomaisen väliaikaisen vian mallia (non-malicious transient fault model pitkäkestoisille kestoisille suorituksille vähentv hentämään keskimää ääräistä vakiinnuttamisaikaa Virheenhakukoodeilla (error löytäminen tehostuu virheiden error-detection codes virheiden Jos virheenhakukoodit eivät t havaitse kaikkia virhemallin sallimia vikoja, voidaan käyttk yttää tilapäisen isen vian nuuskijoita (transient fault detectors ja vahtikoiralaskureita (watchdog counters Esitelty korjausskeema käyttää virheenhaku-koodeja koodeja ja pyramiditilatietorakenteita [Dol00, luku 5.3]
Virheenhakukoodit ja korjaus (2/4 Virheenhakukoodit lasketaan yksittäisen isen prosessorin nykytilasta Talletetaan prosessorikohtaisesti Askeleen suorituksen alussa tarkistetaan sopiko edellinen koodi tilaan; jos sopi jatketaan suoritusta Tilapäisen isen vian nuuskijan löydettyä sattumanvaraisen tilan prosessori laittaa vahtikoiralaskurin päälle Korjausskeema saa hoitaa viat pois Jos viat eivät t poistuneet skorjausskeeman tarvitsemassa ajassa (O(n( O(n vahtikoiralaskurin ylärajalla kun nuuskinta uusittiin, nollataan taas
Virheenhakukoodit ja korjaus (3/4 Pyramiditilatietorakenne prosessorille P i? [Dol00, sivut 123-133] 133] i= V i [0], V i [1], V i [2],..., V i [d]] koostuu tilannekuva- eli snapshot - näkymistä V i [l]] (viime( viime viikolla: Stabiloijat l -säteinen näkymn kymä kuvaa konfiguraation topologian määm äärittelemällään alueella eli k.o. prosessorista lähtien l l :n prosessorin pääp äähän. Näkymän n muodostava algoritmi kerää ää,, häiritsemh iritsemättä muuta toimintaa, prosessoreiden tilat ja viestipuskureiden sisäll llöt. Erityisesti pyramidi i sisält ltää P i keskiset näkymn kymät V i [l]] joissa näkymn kymään kuuluvan prosessorin etäisyys keskustasta on korkeintaan l ja myös tilannekuva on otettu l aikayksikköä sitten. Pyramidin pohjalla on näkymn kymä koko järjestelmj rjestelmästä,, jonka säde s on siis d.
Korjausskeemassa oletetaan ett virheenhakukoodeilla Virheenhakukoodit ja korjaus (4/4 oletetaan että kaikki virheet löydetl ydetään Prosessoreiden käyttk yttötilat: tilat: viallinen, rajatapaus, toiminnassa Vian havainneet prosessorit ( ( viallinen alustavat tilapyramidinsa tyhjiksi ja alkavat kerää äämään n vikaantumattomilta naapureiltaan tilatietoja niiden pyramideista Naapuri on viallinen, itse ei todennut vikaa rajatapaus Rajatapaukset odottavat kunnes vialliset ovat saaneet koostettua pyramidinsa ja sitten vasta kokoavat omanssa uudestaan Lopuksi voidaan koostaa luotettavasti näistn istä tiedoista ja vikaantuneen prosessorin omista tilasiirtymäfunktioista k.o. prosessorin tiedot ennen vikaantumista Topologiatiedoista ja kierroslaskureista voidaan pääp äätellä milloin päivitykset p ovat ohi. Kaikki vaihtavat samaan aikaan toiminnassa -tilaan. Normaalisuoritusta voidaan jatkaa
Viitteet Dol00 Shlomi Dolev. Self-Stabilization. Stabilization. MIT Press, 2000.