6. Luento: Skedulointi eli Vuoronnus Tommi Mikkonen, tommi.mikkonen@tut.fi
Agenda Peruskäsitteet Skedulointialgoritmeja Reaaliaikajärjestelmien skedulointi Skeduloituvuuden analysoinnista Yhteenveto
Peruskäsitteet Skedulointi ~ mikä työ/tehtävä/prosessi valitaan suoritukseen seuraavaksi Skedulointimenetelmä/algoritmi suorittaa valinnan Perustuvat yleensä prioriteetteihin, jotka puolestaan voidaan johtaa järjestelmän ominaisuuksista, laskenta-ajasta, määräajasta, jne. Pehmeä vs. kova reaaliaika skeduloinnin kannalta Kerran tehtävät (sporadic) työt vs. toistuvat (periodic) työt Jitter ~ huojunta siinä milloin työt valmistuvat/voidaan aloittaa jne
Irroittamaton skedulointi Suorituksessa oleva prosessi säilyy samana kunnes se päästää jonkun toisen prosessin ajoon Päästäminen voi olla eksplisiittistä (esim. yield) tai implisiittistä (esim. palvelupyyntö lisälaitteelta) Toteutusmielessä varsin yksinkertainen Ei poissulkemisongelmaa (ajossa niin kauan kun saapuu paikkaan jossa voi hyvin keskeyttää suorituksen; munata toki voi!) Yksinkertaisimmillaan yksi säie, joka kutsuu tarvittavia rutiineja prioriteettien mukaisessa järjestyksessä
Irroittava skedulointi Suorituksessa oleva prosessi voidaan vaihtaa ilman sen antamaa lupaa Käytännössä tällöin vaihtoon voi johtaa lisäksi jokin prosessiin liittymätön laitteistotason tapahtuma (esim. (kello?)keskeytys) Monimutkaisempi; prosessi voi vaihtua missä kohdassa tahansa; tarvitaan poissulkemista jne. Prosessi ei edes välttämättä itse tiedä tulleensa keskeytetyksi välillä Jos mitään ei mainita, yleensä käytetään irroittavaa skedulointia
T1 Aktivoituminen T2 T1 Irroittamaton skedulointi T2 T1 Irroittava skedulointi T2
Skedulointialgoritmeja First In, First Out, jono Round Robin, kiertovuorottelu Fixed Priority, kiinteä prioriteetti Dynamic Priority, vaihteleva prioriteetti Shortest Remining Time, lyhin ajoaika ensin Earliest Deadline First, aikaisin määräaika ensin
FIFO First In, First Out Ehkä suoraviivaisin algoritmi; irroittamaton toteutus riittää yleensä aivan mainiosti Käytännössä harvinainen prosessien, säikeiden tai tehtävien yhteydessä suoraan Vaikuttaa usein epäsuorasti Semaforeihin liittyvät jonot Viestinvälitysjono Oheislaitteille lähetettävät tehtävät
RR Round-Robin ~ kiertovuorottelu Kuten FiFo, mutta annetaan jokaiselle prosessille vuorollaan viipale suoritusaikaa Puhtaimmillaan ei lainkaan prioriteetteja; käytännön toteutuksissa usein prioriteetit mukana tavalla tai toisella
FP Fixed Priority Suorittaa aina sitä prosessia, jolla on korkein prioriteetti niiden prosessien joukosta, jotka ovat valmiina suoritukseen Skedulointimenetelmä ei vaikuta prioriteetteihin! Yleensä irroittava (oikeastaan siis FPPE), mutta ilman kellokeskeytyksiä ja automaattista uudelleenskedulointia myös irroittamaton mahdollinen Soveltuu hyvin reaaliaikajärjestelmiin; jopa inkrementaalinen kehitys Matalaprioriteettisten tehtävien lisäys helppoa
Vaihteleva prioriteetti Ei yksi menetelmä, vaan joukko erilaisia menetelmiä Prioriteetti muuttuu ajan funktiona Säikeen valinta kuten Fixed Priority kun prioriteetit laskettu Käytössä esim: Perinteinen Unix (I/O-sidonnaisten säikeiden prioriteetin nosto; nukkuvat kumminkin melkein koko ajan) Windows NT-perhe (prioriteetti kasvaa wait-tilasta poistettuttaessa ja pienenee kun ajoaika loppuu)
Toteutusesimerkki Jokaiseen säikeeseen lisätään kellokeskeytyslaskuri Kellokeskeytyksen tullessa kasvatetaan aktiivisena olleen prosessin laskuria Kerran sekunnissa käydään kaikki säikeet lävitse ja lasketaan uusi prioriteetti lisäämällä perusprioriteettiin laskurin arvo ja nollataan laskuri
SRT Shortest Remaining Time Lähtökohtana kääntää odotettu laskenta-aika prioriteetiksi, ts. lyhyet tehtävät suoritetaan ensin Usein riittää irroittamaton skedulointi, mutta puhtaimmillaan irroittava välttämätön (uusi, lyhyt tehtävä voi syrjäyttää vanhan pitkää laskentaa vaativan tehtävän) Skedulointia varten tehtävien ominaisuudet tunnettava tarkasti Sulautetuissa järjestelmissä kyseeseen tulevat pienet järjestelmät, joissa tehtäväjoukko on suljettu
EDF Earliest Deadline First Se tehtävä, jonka määräaika on ensimmäisenä suoritetaan ensimmäisenä Selkeä, suoraviivainen ja toistettava Sopii hyvin reaaliaikajärjestelmissä käytettäväksi
Algoritmien ominaisuuksia Algoritmi Reilu Tehokkuus Vaste Reaaliaika Nälkiintyy First In, First Out On Huono Pitkä Ei Ei Round Robin On Matala Pitkä Ei Ei Kiinteä prioriteetti Ei Korkeahko Vaihtelee Kyllä Kyllä Vaihtuva prioriteetti On Korkea Vaihtelee Ei Ei Lyhin ajoaika ensin On Matala Keskitaso Ei Kyllä Aikaisin ensin On Keskitaso Keskitaso Kyllä Kyllä
Reaaliaikajärjestelmien skedulointi Perustuu yleensä kiinteään prioriteettiin Oletus: Työlle annettu prioriteetti riittää suoritukseen; suorittimen tehtävä hoitaa homma riittävän nopeasti Prioriteetti siis kiteyttää Käynnistymishetki Laskenta-aika Syy-seuraussuhde muihin prosesseihin Huom. Tehokasta peliaikaa yleensä vain max 70%!
Käänteisprioriteetti (priority inversion) Vaikka käytössä kiinteä prioriteetti, käytännössä voidaan joutua puljaamaan Jo 3 säiettä riittää (MP, KP, SP): MP varaa kriittisen alueen ja alkaa suorittaa sitä KP aktivoituu, saa suoritusvuoron ja pysäyttää MP:n keskelle aluetta SP aktivoituu, saa suoritusvuoron ja yrittää edetä kriittiselle alueelle; joutuu odottamaan koska alue on MP:llä KP saa suoritusvuoron, koska SP ei voi edetä Esto erilaisin varausstrategioin tai nostamalla prioriteettia kriittisellä alueella (ns. priority ceiling)
Periodinen vs. sporadinen Periodinen tehtävä toistuu tietyin säännöllisin väliajoin Vain periodisia -> rate monotonic scheduling, RMS Sporadinen tehtävä ilmestyy aina joskus tai ainoastaan kerran suoritettavien listalle Reaaliaikaisuuden kannalta keljua Joskus tarvittavia kikkoja: Sporadinen voidaan käsitellä periodisena varautumisena, jos oikeasti kovin kriittistä Periodinen voidaan käsitellä sporadisena, jos periodi kovin pitkä (pidempi kuin tutkittava aikaväli) ja tehtävä ei ole kriittinen
Jitter T1 Aktivoituminen kerralla 1 T2 T1 Aktivoituminen kerralla 2 T2
Staattinen skedulointi Kaikki lasketaan etukäteen valmiiksi, jonka jälkeen kone suorittaa operaatiot suunnitelman mukaan Yksinkertainen Nopea Ennustettava mutta vaatii tarkkaa tietoa tehtävistä ja on joustamaton Optimaalinen silloin kun pystyy skedulointiin aina silloin kun joku toinenkin staattinen skedulointialgoritmi suoriutuu tehtävästä
Analyysi ja staattinen skedulointi Staattinen tapaus yleensä suoraviivainen Ohjelmoija voi rakentaa skeduloinnin parhaan kykynsä mukaan Sitten käy miten käy; jos tehtävistä on tarkka tieto niin useimmiten ei sijaa epäilykselle jää Työkaluja Suorituspolkujen rakentajat/profiloijat Käytetty algoritmi Riittävän simppeli skeduleri
Dynaaminen skedulointi Skedulointi tehdään ajon aikana kulloisenkin tilanteen mukaisesti On siis pystyttävä valitsemaan suoritettava tehtävä nopeasti! Valintakriteerejä useita: Määräaika, laskenta-aika, jne; Tavoitteena yleensä rakentaa kriteerien perusteella prioriteettipohjainen järjestelmä tavalla tai toisella Optimaalinen silloin kun pystyy skedulointiin aina silloin kun jokin staattinen skedulointialgoritmikin pystyy Huom! Staattinen algoritmi saa enemmän lähtötietoja!
Analyysi ja dynaaminen skedulointi Yleensä se monimutkaisempi tapaus Pikatesti: Rakennetaan järjestelmä, jossa on samantapaiset (varjo/dummy) tehtävät kuin mitä toteutuksessa tarvitaan, ja kokeillaan miten suorituksessa käy Kova prosessorikuorma tarkoittaa oikeastaan aina pahoja ongelmia Monimutkaisempi (ja tarkempi) testi: Ryhdytään selvittelemään suoritusaikoja samaan tapaan kuin staattisen analyysin tapauksessa Analyysi yksityiskohtaisemman varjojärjestelmän mukaisesti
Analyysi ja matemaattiset menetelmät Jotkut algoritmit mahdollistavat skeduloituvuuden arvioinnin perustuen matemaattiseen kaavaan Lähtöarvot: Tehtävät Tehtävien kestoajat Tehtävien määräajat Tehtävien periodit Sporadiset tehtävät Tuloksena yleensä esim. käyttöaste Kyllä == kyllä, Ei == ehkä jollakin muulla skedulointialgoritmilla Usein yksinkertaistuksia liittyen prosessin vaihtamisen kustannuksiin jne. Lopulta lähes aina on pakko kokeilla, jos prosessorin käyttöaste ei jää todella alhaiseksi
Yhteenveto Irrottava ja irroittamaton skedulointi Useita skedulointialgoritmeja, joilla erilaisia ominaisuuksia Pikatesti: Tehdään leikkikuorma ja kokeillaan miten käy Monimutkaisempi testi: Matkitaan järjestelmää tarkemmin; kirjoituspöytäkokeilut Analyysi: Järjestelmän ominaisuuksien perusteella voidaan laskea käyttöastetta/skeduloituvuutta Periodisuus ja sporadisuus