Kellojen synkronointi itsestabiloituvasti

Samankaltaiset tiedostot
Kellojen synkronointi itsestabiloituvasti

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

Stabiloivat synkronoijat ja nimeäminen

Algoritmit 1. Demot Timo Männikkö

7.4 Sormenjälkitekniikka

Algoritmit 1. Demot Timo Männikkö

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

AUTO3030 Digitaalitekniikan jatkokurssi, harjoitus 2, ratkaisuja

Jaetun muistin muuntaminen viestinvälitykseksi

Stabiloivat synkronoijat ja nimeäminen

Algoritmit 2. Luento 13 Ti Timo Männikkö

Hajautetut algoritmit. seminaari syksyllä 2007 vastuuhenkilö Jyrki Kivinen toinen vetäjä Timo Karvi

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun:

Itsestabiloivabysanttilainen yhteisymmärrys. Timo Virkkala

21~--~--~r--1~~--~--~~r--1~

Itsestabilointi: perusmääritelmiä ja klassisia tuloksia

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.

2_1----~--~r--1.~--~--~--,.~~

Algoritmit 2. Luento 10 To Timo Männikkö

Seminaari: Hajautetut algoritmit syksy 2009

Ohjelmoinnin perusteet Y Python

Algoritmit 2. Luento 12 To Timo Männikkö

Televerkon synkronointi

OnniSMS Rajapintakuvaus v1.1

Luento 5. Timo Savola. 28. huhtikuuta 2006

Algoritmit 1. Luento 11 Ti Timo Männikkö

Slides for Chapter 11: Time and Global State

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

811120P Diskreetit rakenteet

1. Tarkastellaan seuraavaa stokastista Petri-verkkoa: p 2. p 1. lock write 1

Ohjelmoinnin peruskurssi Y1

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Demot Timo Männikkö

Peliteorian soveltaminen hajautettujen järjestelmien protokollasuunnittelussa (valmiin työn esittely)

ASCII-taidetta. Intro: Python

Tekijä Pitkä Matematiikka 11 ratkaisut luku 2

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Luento 5 Ti Timo Männikkö

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

811120P Diskreetit rakenteet

16. Ohjelmoinnin tekniikkaa 16.1

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

Synco TM 700 säätimen peruskäyttöohjeet

Tietorakenteet, laskuharjoitus 10, ratkaisuja. 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Algoritmit 2. Luento 13 Ti Timo Männikkö

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

16. Ohjelmoinnin tekniikkaa 16.1

pitkittäisaineistoissa

TAITAJA 2007 ELEKTRONIIKKAFINAALI KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Stabilointi. arvosana. arvostelija. Marja Hassinen

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Laskennallisesti Älykkäät Järjestelmät. Sumean kmeans ja kmeans algoritmien vertailu

Java-kielen perusteita

pitkittäisaineistoissa

The CCR Model and Production Correspondence

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Liitosesimerkki Tietokannan hallinta, kevät 2006, J.Li 1

Kun yhtälöä ei voi ratkaista tarkasti (esim yhtälölle x-sinx = 1 ei ole tarkkaa ratkaisua), voidaan sille etsiä likiarvo.

Yleinen paikallinen vakautuva synkronointialgoritmi

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä.

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

Ohjelmoinnin perusteet Y Python

RINNAKKAINEN OHJELMOINTI A,

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Algoritmit 1. Luento 13 Ti Timo Männikkö

Ohjelmoinnin peruskurssi Y1

VHDL Tehtävä 1 : JK-Kiikku toteutettu IF:llä

FUNKTIOITA. Sisällysluettelo

Tarkennamme geneeristä painamiskorotusalgoritmia

Integrointialgoritmit molekyylidynamiikassa

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Littlen tulos. Littlen lause sanoo. N = λ T. Lause on hyvin käyttökelpoinen yleisyytensä vuoksi

OSA II: Hajautettu ympäristö. Sisältö, osa II. Ei yhteistä muistia. Sanomanvälitys. Etäproseduurikutsu. Rendezvous. Rio 2004 / Auvo Häkkinen

RAKENNUSAKUSTIIKKA - ILMAÄÄNENERISTÄVYYS

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

C++11 seminaari, kevät Johannes Koskinen

Ehto- ja toistolauseet

anna minun kertoa let me tell you

Liite 1. Laajennettu Eukleideen algoritmi suoraviivainen tapa

58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen)

The Viking Battle - Part Version: Finnish

Epälineaaristen yhtälöiden ratkaisumenetelmät

voidaan hylätä, pienempi vai suurempi kuin 1 %?

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

12. Javan toistorakenteet 12.1

Parinmuodostuksesta tietojenkäsittelytieteen silmin. Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto

Turingin koneen laajennuksia

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

811120P Diskreetit rakenteet

Salausmenetelmät. Veikko Keränen, Jouko Teeriaho (RAMK, 2006)

Ohjelmoinnin peruskurssi Y1

Matematiikka ja teknologia, kevät 2011

Transkriptio:

Kellojen synkronointi itsestabiloituvasti Hajautetut algoritmit -seminaari Mikko Pervilä 16.11.2007 Matemaattis-luonnontieteellinen tiedekunta

Esitelmän rakenne Mahdottomuus, eli katsaus ongelmakenttään Atomikellot Ratkaisuja, eli mitä saadaan aikaiseksi Olemassa olevia algoritmeja, niillä saatavia tuloksia Kellopulssiin perustuva synkroninen algoritmi Yksityiskohtia, simulointia Semisynkroninen algoritmi Karkeammin esitelty, johdattelua toimintaan

Mitä oletetaan jo tunnetuksi? Itsestabiloituvuus käsitteenä Viat eivät saa muuttaa algoritmin toimintaa Bysanttilaisten kenraalien ongelma n = prosessien (solmujen) lukumäärä f = vikaantuneiden lukumäärä Jos f > n/3, ratkeamaton yleisessä muodossa Poikkeustapaukset sivuutetaan

Pääasiallinen lähde Dolev, S., Welch, J.L., Self-stabilizing clock synchronization in the presence of Byzantine faults. Journal of the ACM, 51,5(syyskuu 2004), sivut 780-799. Muut lähteet kirjoitelmassa Linkki seminaarin kotisivuille: pervila.pdf

Mahdottomuus: kevyttä fysiikkaa Unohdetaan suhteellisuusteoria Ajatellaan teoreettista ideaalikelloa Näyttää aina ajan tarkasti Todelliset kellot toteutetaan mekaanisesti tai elektronisesti Tavasta riippumatta aiheutuu virheitä Kelloon vaikuttavat useat tekijät: painovoima, lämpötila, säteily, sähkövirta

Mahdottomuus: ajelehtiminen Kellonaika esitetään rajoitetulla tarkkuudella Erotusta ideaalikelloon kutsutaan ajelehtimiseksi kellonaika t + (t ρ) t t - (t ρ) Kello joko edistää tai jätättää Virhe toistuu joka askeleella Virhettä merkitään ρ (rho) t 0 tosiaika

Mahdottomuus: ideaalikello Ideaalikello voisi mitata vaikkapa SI-sekunteja Miten ideaalikello toteutetaan? The second is the duration of 9 192 631 770 periods of the radiation corresponding to the transition between the two hyperfine levels of the ground state of the caesium 133 atom. (Lähde: http://www.bipm.org/en/si/base_units/)

Mahdottomuus: atomikellot Universal Coordinated Time (UTC) Tahdistetaan aurinkoon lisäämällä karkaussekunteja Lähteenä International Atomic Time International Atomic Time (TAI) Ei välitä taivaankappaleiden tai maan liikkeistä 250 laboratoriota, 50 atomikelloa

Mahdottomuus: atomikellot

Mahdottomuus: atomikellot Menemättä liikaa yksityiskohtiin, TAI on painotettu keskiarvo. Siihenkin tehdään pieniä korjauksia: 6 10 15 viime vuonna Tarkkuus noin (1,2) x 10 15 Keskiarvolla on joitakin ikäviä ominaisuuksia: Juha Puranen / Tilastotieteen laitos: http://noppa5.pc.helsinki.fi/uudet/da1htm/sanasto.html Uuden atomikellon rakennus?

Ensimmäinen neljännes ohitse ¼

Ratkaisuja: mitä on tehty aiemmin? Cristianin algoritmi Jonka avulla saadaan arvioitua tiedonsiirtoviive Berkeleyn algoritmi Keskiarvojen avulla muodostettu konsensus Lamportin aikaleimat Muunnetaan ongelmaa helpommaksi

Ratkaisuja: Cristianin algoritmi Haetaan kellonaika luotetulta palvelimelta Arvioidaan kauanko siirtoon meni Huomioidaan siirtoaika kellonaikaa asettaessa P Lievä oletus: tieto luotettavaa Palvelin ja tiedonsiirto luotettavia Autentikointi- ja salausmenetelmät pyyntö vastaus aika 1 aika 2 A A aika Vahva oletus: palvelimella oikea kellonaika Atomikello?

Ratkaisuja: Cristianin algoritmi Kun lähetetään palvelimelle pyyntö, kirjoitetaan pyyntöön aikaleima vanhalla kellolla Palvelin kopioi aikaleiman mukaan vastaukseen Kun vastaanotetaan palvelimelta vastaus kirjoitetaan vastaukseen aikaleima vanhalla kellolla Lopputuloksena arvio siirtoviiveestä d d = aika 1 aika 2 2

Ratkaisuja: Berkeleyn algoritmi Tutkii, mitä kellonaikoja löytyy ja laskee näistä yhteisen arvon kaikille Välittää tiedon muutoksena vanhaan kellonaikaan Käyttää keskiarvoa, kykenee valitsemaan johtajan Myös mikäli johtaja katoaa tai monistuu verkon osittumisen seurauksena Jättää huomioimatta selvästi vialliset kellonajat Määritys esimerkiksi parametrilla b Oikean arvon valinta vaatii ennakointikykyä

Ratkaisuja: Berkeleyn algoritmi Keskiarvon käyttö ei takaa, että kello olisi oikeassa ajassa algoritmin suorituksen jälkeen Mutta suunta lienee oikea Palaamme keskiarvoihin vielä hieman myöhemmin Mikä arvo on parametrille b kaikkein sopivin? Liian pieni: unohdetaan suurin osa osallistujista Liian suuri: poikkeavien arvojen merkitys kasvaa

Ratkaisuja: Lamportin aikaleimat Lamportin aikaleimat muuntavat ongelmaa Käyttävät hyväkseen osittaista järjestysrelaatiota voidaan mieltää syy-seuraus-suhteena Järjestämätöntä osaa kutsutaan rinnakkaisiksi Lisäksi siirrytään loogiseen kelloon Monotonisesti kasvavan laskurin arvoilla merkitään ne tapahtumat, jotka on tarpeen pystyä järjestämään Esimerkiksi lähetettävät viestit ja kuittaukset Tarkempi läpikäynti sivuutetaan Timo Alangon luentokalvot ovat eräs hyvä lähde (simulointia) http://www.cs.helsinki.fi/u/alanko/hj/k06/kalvot/ch4.ppt

Puoliaika! ½

Synkroninen algoritmi Valitettavan tylsä, käytiin läpi jo edellisellä viikolla! Esitelmää yritetty painottaa uusiksi Tutkitaan oletuksia Simuloidaan Mietitään ongelmatapausta

Synkroninen algoritmi: ohjelmakoodina 01 when pulse occurs: 02 broadcast clock i 03 collect clock values until (1 + ρ)(d + ε) time has elapsed on the physical clock 04 if { j clock i = clock j } < n f then (case 1) 05 clock i 0 06 last_increment i false} 07 else (case 2) 08 if clock i 0 then (case 2.1) 09 { clock i ( clock i + 1) mod M lc 10 last_increment i true} 11 else (case 2.2) 12 if last_increment i = true then (case 2.2.1) clock i 1 13 else (case 2.2.2) clock i toss(0, 1) 14 if clock i = 1 then last_increment i true 15 else last_increment i false Pieniä eroja kirjoitelmaan

Synkroninen algoritmi: tilakoneena start clock 1 clock = 1 last_inc true pulse random clock 1 case 2.2.1 clock (clock + 1) mod M lc collect until timer clock toss(0,1) case 2.2.2 case 2.1 last_inc = true last_inc = false clock 0 case 2.2 clock = 0 last_inc false pulse clock 0 bcast case 1 timer less than j others count j others with my clock timer = (1 + ρ) (d + ε) j = n - f case 2

Synkroninen algoritmi: oletuksia ja muuttujia Yläraja viestien odottelemiselle: (1 + ρ)(d + ε) ρ = fyysisen kellon ajelehtimisen yläraja d = arvio tiedonsiirtoviiveelle ε = arviointivirhe, satunnainen elementti Jos kestää yli tämän, käsitellään puuttuvana pyyntö P vastaus aika 1 aika 2 A A aika Toimivat ja vikaantuneet prosessit Järjestelmään liittyminen ja siitä poistuminen julkisia Jokainen prosessi pystyy laskemaan osallistujien määrän n Vikaantuneiden lukumäärä f arvioidaan ylärajaksi n/3 Mitä jos f kasvaa yli n/3? Simuloidaan seuraavaksi hieman

Synkroninen algoritmi: simulointia lf = (last_increment i false) P1 P2 P3 P4 155 155 155 155 123 156 156 156 198 157 157 157 198 158 158 6 15 lf 0 lf 0 7... 21 lf 0 lf 0 225 lf 0 lf 0 lf 0 255 toss 1 lf 0 1 1 2 lf 0 2 1 P1 P2 P3 P4 lf 0 lf 0 lf 0 5 toss 1 1 1 127 2 2 2 127 3 3 3 lf 0 4 4 4 lf 0... M lc = 8, 2 8 =256, [0-255] 255 255 255 lf 0 0 0 0 lf 0 1 1 1 1...

Synkroninen algoritmi: toiminnan nopeuttaminen Palautuneet prosessit pitäisi saada nopeammin mukaan kuvioihin! Kiinalainen jakojäännös Nähty viime viikolla, esimerkki Brunbergin kalvoissa Jaetaan looginen kello (a,b,...,n) pienempään laskuriin ja koodataan kellonarvot vastaamaan monikoita Ajetaan kellopulssiin perustuvaa algoritmia jokaiselle laskurille Jokainen laskuri a,b,..,n pyörähtää ympäri nopeammin Muistuttaa hieman hedelmäpeliä Näin toimimalla 64 bitin looginen kello saadaan stabiloitumaan 381 2 2(n-f) pulssin jälkeen n ei siis voi olla kovin suuri

Enää vartti jäljellä! ¾

Semisynkroninen algoritmi Ei käytä keskitettyä kellopulssia Nimi semisynkroninen lienee peräisin siitä, että algoritmi käyttää kahta fyysiseen kelloon perustuvaa laskuria Tutkitaan oletuksia Kevyt johdanto algoritmin toimintaan Satunnaisuus tekee simuloinnista hankalaa Ehkä vähän epäuskottavaakin

Semisynkroninen algoritmi: ohjelmakoodina 01 if last_hop_timer i = 0 then 02 if last_avg_timer i = 0 and clock i δ then 03 choice i average 04 else choice i hop 05 broadcast clock-request message 06 let S i be multiset of clock values collected until 2(1 + ρ)(d + ε) time has elapsed on the physical clock 07 if n - f elements of S i are within δ of clock i then 08 S i reduce( S i, clock i, f ) 09 if choice i = average then (*do the averaging procedure*) 10 clock i midpoint( S i ) 11 last_avg_timer i T a (*set physical clock timer - counts down to 0*) 12 else (*do the hopping procedure*) 13 clock i random( S i ) 14 last_hop_timer i T s ( *set physical clock timer - counts down to 0*) 15 else (*less than n - f clock values are within clock i *) 16 clock i random(s i ) 17 last_hop_timer i T s

Semisynkroninen algoritmi: tilakoneena receive S i until timer timer = 2(1 + ρ)(d + ε) j = n - f T a = time since last avg T s = time since last hop avg choice avg bcast timer count j others within δ of my clock clock fine last_avg_timer=0 and clock δ choice hop less than j within δ S i reduce(s i, clock, f) avg or hop else hop clock not fine clock random(s i ) hop choice? last_hop_timer=0 last_hop_timer T s hopping avg start clock midpoint(s i ) last_avg_timer T a averaging

Semisynkroninen algoritmi: oletuksia ja muuttujia Samat oletukset tiedonsiirtoviiveestä ja vikaantuneiden prosessien määrästä Kaksi toimintatapaa ja laskuria, T ja T s a S = hopping, valitaan satunnaisesti uusi kellonarvo vastaanotetuista A = averaging, pyritään synkronoimaan kellot keskiarvofunktion avulla Käyttää keskiarvofunktiota reduce, jonka tehtävänä on muodostaa keskiarvo hajautetusti Joka askeleella leikataan suurimmat ja pienimmät arvot pois Suunnilleen puolittaa kellonarvojen joukon

Semisynkroninen algoritmi: toiminta T s ja T a ovat nollaan väheneviä laskureita, joiden tarkoitus on kiinnittää algoritmin eri toimintatiloihin käyttämä aika Muistuttavat siis hieman munakelloja T a on moninkertaisesti suurempi Lisäksi keskinäinen suhde on rajoitettu Kellonarvot kerätään verkosta joka suorituskerralla Reduce suoritetaan myös ennen satunnaista valintaa Paitsi jos oma kellonaika on liian harhautunut

Semisynkroninen algoritmi: kuristustekniikka Suomennetaan reduce vaikkapa arvojen kuristamiseksi n = 10, f = 3, clock i = 155 S i = {154, 156, 155, 130, 160, 156, 154, 156, 155, 178} S i reduce( S i, 155, 3 ) S i = {154, 156, 155, 130, 160, 156, 154, 156, 155, 178} S i = {154, 156, 155, 156, 154, 156, 155}

Semisynkroninen algoritmi: kuristustekniikka Mikä on δ? Kynnysarvo oman kellon oikeellisuudelle Rajoittaa keskiarvon valitsemisen laskemisen tiheyttä (Saattaa olla muutakin) Semisynkroninen algoritmi toipuu ajassa T a n 6(n-f) Jälleen, prosessien lukumäärä n rajoittaa käytettävyyttä

Lyhyt yhteenveto: oikeellisuustodistukset? Toimintaa mallinnetaan vuorotellen pelattavana pelinä Osapuolina oikeaan tulokseen pyrkivät onni ja huonoimpaan mahdolliseen tulokseen pyrkivä vuorottelija Synkronisen algoritmin tapauksessa onni pääsee jossakin vaiheessa valitsemaan (0,1) -arvot sopivasti oikein toimiville solmuille Semisynkronoidun algoritmin tapauksessa onni pääsee jossakin vaiheessa tilanteeseen, jossa solmut suorittavat kaikki keskiarvofunktiota Yksityiskohdat: omalla vastuulla, omalla ajalla

Lyhyt yhteenveto: mitä tästä opittiin Kellonaikojen synkronoiminen on hankalaa, etenkin hajautetusti Voidaan muuntaa perusongelmaa ja ratkaista helpompia osaongelmia Algoritmeja yhdistelemällä päästään hieman parempiin tuloksiin Kysymyksiä, kommentteja? (älkää kysykö kauhean vaikeita...)