Käyttöjärjestelmät II VUOOTTAMINEN YKI CPU tallings, Ch 9 [tal[ 0] LUENTO Mitä KJ-I:ss ssä / KJ-II:ssa II:ssa? KJ-I eady-jn, valitse ensimmäinen Aikaviipaletekniikka (rund-rbin) Pririteetitkin mainittiin euraavaksi KJ-II:ssa Vurttamisen tast CPU:n vurttamisalgritmeja Vurttaminen UNIXissa Yhden CPU:n ympäristössä (Ch 9) MP:ssä ja reaaliaikajärjestelmissä (Ch 10) luent luent 8 1 Vurttamisympärist ristöt, t, työkurma Eräaj u ajetaan vaikkapa yöllä u työn kk sataan arviida F esim. ajetaan jka yö, viikttain, kuukausittain u tapahtumahjattu vurttaminen OK F kunhan kaikki saadaan tehtyä Interaktiivinen u käyttäjä dttaa vastausta, npea vastaus hyvä u vurttajalla ei harmainta aavistusta työn keststa u aikaviipaletekniikka eaaliaika u aikarajat u hjelmijakin miettii surituskykyä ja millin KJ saa suritusvurn Avin ja suljettu työkurma Deterministinen (suljettu) työkurma u kaikki prsessit tunnetaan u heräämistaajuudet tunnetaan Avin työkurma u prsessien jukk vaihtelee ulkisten tapahtumien perusteella Hetergeeninen työkurma u deterministinen + avin F esim. lennn valvnta, lentpintjen hjaus F arriving missiles pikkeus? vai deterministinen jka 100 ms? u eräaj + interaktiivinen + reaaliaika u miten svittaa yhteen F jääkö avimille reaaliaikatöille tarpeeksi aikaa? F jääkö KJ:lle tarpeeksi aikaa? Tavitteita: laatu amanarvisille prsesseille sama palvelu Pririsintia saa harrastaa u turvakntrlli vs. palkanlaskenta u KJ prsessit vs. käyttäjän svellukset u reaaliaika prsessit vs. muut Interaktiiviset vs. eräajjärjestelmät Vastausaika (respnse time) u työ annettu, millin saadaan vastaus? Läpimenaika (turnarund time) u työtä per aikayksikkö Ennustettavuus (predictability) u ei sen näin pitkään pitäisi kestää u rskien keruu, muu kj-hallint Tbl 9. [tal0] Linux. O(1) vurnant Tavitteita: surituskyky Ota järjestelmästä mahdllisimman paljn irti u pidä CPU ja erityisesti I/O-laitteet tuttavassa työssä F krkea käyttöaste (CPU utilizatin) u tärkeää mniajjärjestelmissä Tehkas ja reilu CPU:n käyttö u läpimenaste, läpimenvu (thrughput, wrk flw) u läpimenaika (turnarund time, respnse time) eaaliaikajärjestelmä pysyy aikataulussa u deadlinen ylitys vi lla harmillista tai vaarallista F kuvassa n häiriö, ääni/kuva epäsynkrnisia F ptilas kulee, lentkne tippuu,... Tbl 9. [tal0] KJ-II K00 / Teemu Kerla (lu ) 1
Käyttöjärjestelmät II MILLOIN VUOOTETAAN? Millin? Fig 9. [tal0] Fig 9. [tal0] Lng-term systeemiin? u tetaank uusi prsessi suritettavaksi? u mahtuuk muistiin? riittääkö swap-tila? Medium-term muistiin? u millin (heittvaihdettu) prsessi muistiin? u vapaata muistia? u mniajaste? hrt-term surittimelle? u mille prsessille annetaan CPU? I/O I/O-laitteelle? u minkä prsessin I/O pyyntö palvellaan ensin? 8 Lng-term cheduling Otetaank uusi työ suritettavaksi? u millin työstä tulee prsessi? u saak kneeseen luda uuden istunnn? atkaisevaa: mniajaste medium term? u paljn prsesseja kukin saa harvin CPU:n u js vähän muistia, niin nk parempi dttaa lng term vai medium term? Fig 9. [tal0] u pyritään takaamaan riittävän taskas palvelu u spiva suhde: CPU- ja I/O-sidnnaiset työt? Millin? u jku prsessi päättynyt u CPU:n käyttöaste pudnnut Mikä? Fig 9. [tal0] u First-Cme-First-erviced (FCF) u jskus pririteetteja: esim. työn kk, I/O-sidnnaisuus 9 Medium-Term cheduling Liittyy heittvaihtn u sisäänheitn ajitus Fig 9. [tal0] u prsessi tilassa uspend&eady tai uspend&wait Millin muistiin? u CPU:n käyttöaste laskenut u vapaata muistitilaa runsaasti Mikä muistiin? u kk (eli dttavan prsessin muistitarve) u ulsheittaika (eli dtusaika levyllä) u pririteetti Mikä muistista pis? u ei sellainen, jlla tärkeä resurssi hallussa F kriittinen vaihe? u ei KJ prsessi? 10 hrt-term cheduling CPU:n vurttaminen (scheduling, dispatching) u yleisterminä vurttaminen tarkittaa juuri tätä elvästi yleisempi kuin edelliset Millin? u keskeytyksen yhteydessä F jkainen keskeytys ei aiheuta vurttamista Kun nykyprsessin kyky käyttää suritinta mennyt u jutui Blcked-tilaan: I/O, synkrninti, pissulkeminen u pikkeustilanne u prsessi käyttänyt man aikaviipaleensa uuremman pririteetin työ valmis etenemään Kenelle vur seuraavaksi? Fig 9. [tal0] Käyttöjärjestelmät II PIOITEETTI 11 1 KJ-II K00 / Teemu Kerla (lu )
Pririteetti uuremman pririteetin prsessit ensin u pririteetti PCB:ssä / TCB:ssä Kullakin pririteetilla ma eady-jn u lisää aina lppuun u haku vi kestää, kun mnta jna Vs. yksi yhteinen eady-jnssa u pririteetti määrää paikan u npea haku (vain yksi jn) u lisäys pririteetin mukaiseen paikkaan F vi lla turhan mnimutkaista eli hidasta Nälkiintymisvaara u vaihteleva pririteetti trjuu nälkiintymisen? F prsessin ikä F suritushistria F vaihtelun rajat? Fig 9. [tal0] 1 Kiinteä ja vaihteleva pririteetti KJ-prsessit Tavalliset user-prsessit high pri 0 1 1 18 19 10 11 19 lw pri missile avidance prcess flight surface cntrl kiinteä navigatin pri lad cntrl swapper cleaner kiinteä pri dttanut kauan jnssa calculatr (18-10) vaihteleva pri käyttänyt paljn CPU-aikaa (esim. kk aikaviipale) 1 Millin vurtus aktivituu? Nnpreemptive u tapahtumahjattu vurttaminen u prsessi surituksessa, kunnes se päättyy tai jutuu palvelupyyntönsä vuksi blcked-tilaan u suritusaikana vi silti lla keskeytyksiä ja KJ työtä! F scheduler ei aktividu paitsi ehkä KJ-prsesseille? Preemptive u keskeyttävä vurttaminen F prsessi ei vi nälkiinnyttää muita u suritus keskeytetään ja prsessi eady-tilaan, vaikka visikin käyttää suritinta F aikaviipaletekniikka F suuremman pririteetin prsessi tuli eady-jnn pre-empt: mennä edelle, ttaa itselleen etuikeuden njalla Käyttöjärjestelmät II CPU:N eaaliaikaprsessit VUOOTTAMI- ALGOITMEJA 1 1 Algritmit First-Cme-First-erved und bin Virtual und bin hrtest Prcess Next hrtest emaining Time FCF PN V T Highest espnse ati Next HN Multilevel Feedback feedback Esimerkkiprsessit (Tbl 9. [tal0]) Fair hare cheduling F ervice Time = CPU:ssa kulutettu aika Esimerkeissä ei mietitä I/O:n vaikutusta 1 18 KJ-II K00 / Teemu Kerla (lu )
FCF First Cme First erved (keskim.) cpu time fr B (Fig 9. [tal0]) arrival time fr B Eräaj, tapahtumahjattu, ei pririteetteja Uusi prsessi eady-jnn hännille Tbl 9. [tal0] Kun prsessi lupuu CPU:sta, vurta seuraava Ketä susii? Ketä ei? 9 1 1 keskim. 8. cmpletin time fr B FCF First Cme First erved Läpimenaika u riippuu suritusjärjestyksestä, Fig 9. [tal0] muiden ksta sekä CPU-sidnnaisuudesta Pienikin prsessi vi jutua dttamaan u läpimenajasta valtava sa dtusta usii CPU-sidnnaisia u muille vi tulla pitkä dtusaika u I/O-laitteet ehkä turhaan juten F I/O kuitenkin pullnkaula Järkevää ttaa mukaan pririteetit u pririteetin perusta? F prsessin kk (suritin aika)? F I/O-sidnnaisuus? 19 0 und bin aikaviipaleen vaikutus (keskim.) (Fig 9. [tal0]) 1 1 1 keskim. 10.8 (keskim.) (Fig 9. [tal0]) 1 1 11 keskim. 10.0 Aikaviipaletekniikka (q=1), keskeytyvä (preemptive) Kukin eady-prsessi saa vurllaan aikaviipaleen Vurttaminen, kun viipale käytetty tai kun prsessi jutuu Blcked-tilaan Aikaviipaletekniikka q = u prsessin vaihtaikaa ei humiitu! usiik pitkä aikaviipale cpu- vai I/O-sidnnaisia? usiik pitkä aikaviipale lyhyitä vai pitkiä töitä? 1 und bin Aikaviipaleen pituus u lyhyt: prsessin vaihdt vievät CPU-aikaa Fig 9. [tal0] u pitkä: interaktiivisen työn vastausaika lyhyt, js yksi aikaviipale riittää usii hieman CPU-sidnnaisia u I/O-sidnnainen ei ehkä käytä kk viipaletta u I/O-sidnnainen saa suhteessa harvemmin CPU:n F miksi? Virtual u ready-jnn apujn (Auxiliary eady Queue), jnne I/O-dtuksesta Fig 9. [tal0] F pririteetti I/O sidnnaisilla u aja ensin apujnssa levat prsessit u aikaviipale vain edellisellä kerralla käyttämättä jäänyt sa, sitten nrmaaliin eady-jnn PN hrtest Prcess Next (keskim.) Tapahtumahjattu (siis nn-preemptive) Vurta se, jka käyttää lyhimmän ajan CPU:ta kerrallaan u I/O-sidnnaiset ensin u mistä tietää? (Fig 9. [tal0]) 11 1 keskim.. KJ-II K00 / Teemu Kerla (lu )
PN hrtest Prcess Next Nälkiintymisvaara u is jää aina pienten jalkihin Isjen läpimenaika vaikea ennustaa Erätyö: käynnistäjä arvii työn kestajan u js työ laitettiin väärään eräajlukkaan, KJ saattaa katkaista työn F miksi? (kulutti liikaa aikaa estimaattiin nähden) F käynnistettävä uudelleen ismpien lukassa Interaktiivinen: KJ laskee keskim. CPU:n käyttöaikaa u painttaa viimeksi havaittuja aikja (T n-1 ) u estimi estim estim n = αt n-1 + (1 - α) n-1 Ei svellu situskäyttöympäristöön esim α = 0.8 T hrtest emaining Time (keskim.) Aikaviipaleversi edellisestä (keskeytyvä) u tilanne arviidaan uudelleen jka aikaviipaleelle Arviitava prsessin jäljellä leva ajantarve Ei svi interaktiiviseen ympäristöön (Fig 9. [tal0]) 1 1 keskim.. HN Highest espnse ati Next (keskim.) (Fig 9. [tal0]) Tapahtumahjattu (siis nn-preemptive) Minimi läpimenaikaa (humii histria) Vurta se, jlla hunin suhteellinen vasteaika, ts. se, jlla suurin suhdeluku: time spent waiting CPU + expected service time respnse rati = ------------------------------------------------------------- expected service time / > 1/ 9 1 keskim. 8.0 HN Highest espnse ati Next usii hieman lyhyitä töitä u ei silti nälkiintymisvaaraa Dynaaminen pririteetti u ready-jnssa dttelu kasvattaa pririteettia Jäljellä levaa aikaa ei vi tietää u arvit menneisyyden perusteella u käyttäjän antama arvi työn ksta F ei svi interaktiiviseen ympäristöön 8 Multilevel Feedback (Fig 9.10 [tal0]) Feedback Dynaaminen pririteetti u ankaisee pitkään pörränneitä prsesseja, aikaviipalitu Useita eady-jnja u Q0: pura aikaviipaleittain, FCF, siirrä seuraavaan jnn u Q..Qn-1: pura aikaviipaleittain, FCF, siirrä seuraavaan jnn u Qn: pura aikaviipaleittain,, pidä samassa jnssa Prsessi kulkeutuu lpulta Qn-jnn, jsta se aikanaan valmistuu Nälkiintymisvaara u vurttaa alemmassa jnssa levat aina ensin Useita variaatiita u esim. alemmissa jnissa pitempi aikaviipale (esim. 1,,, ) u palaa blcked-tilasta samaan jnn 9 0 KJ-II K00 / Teemu Kerla (lu )
Feedback q=1 1 1 1 1 1 (keskim.) (Fig 9. [tal0]) 18 1 1 keskim. 10.0 Feedback q= i virhe 1 1 1 1 1 1 1 1 (Fig 9. [tal0]) (keskim.) keskim. 10. Jnt Q0, Q1, Q, Aikaviipale q=1 Ei vaadi etukäteisarviita CPU-ajan tarpeesta Pitkät työt vivat kestää kauan Jnt Q0, Q1, Q,, Qi Aikaviipale q= i Vaikutus, vrt. q=1 Fig 9. [tal0] 1 Yhteenvet Tbl 9. [tal0] Käyttöjärjestelmät II UNIX V / BD. VUOOTTAMINEN UNIX: Vurttaminen Interaktiivinen ympäristö u ei varsinaista eräaja, ei erätyöjnja u at-kment hjelmien ajamiseksi myöhemminkin u crntab peridisille töille crn = chrngram deamn? tab = table Pyrkii hyvään vastausaikaan u taustaprsesseilla hun pririteetti Aikaviipaleet, und-bin Multilevel feedback u pririteeteilla mat eady-jnt u tyhjentää suurimman pririteetin jnn ensin u dynaaminen pririteetti ei nälkiintymistä UNIX: eady-jnt (Fig 10-11 [Tane01]) KJ-II K00 / Teemu Kerla (lu )
UNIX: Pririteetti Kiinteä peruspririteetti sekä nice-arv u käyttäjä vi pienentää pririteettia nice-kmennlla u pitää pririteetin siististi tietyllä arvalueella Laskee uuden pririteetin sekunnin välein u is aikaviipale! CPU:n käyttö vaikuttaa uuteen arvn u käyttö: pririteetti putaa u dttaa kauan: pririteetti kasvaa usii I/O-sidnnaisia prsesseja u tavite: I/O-laitteiden tehkas työllistäminen UNIX: multilevel feedback CPU_usage = CPU:n käyttö äskettäin u laskuri PCB:ssä Älä rankaise liikaa aiemmasta käytöstä u pulita ennen pririteetin laskentaa, ja sitten taas CPU_usage = CPU_usage/ Pri = Base + (CPU_usage/)+ Nice (js ei cpu_usage = 0, niin ei muutsta) Pieni arv = suuri pririteetti Esimerkki u Base=0, Nice = 0 u päivitä cunter (CPU_usage) 0 kertaa/sek F kelllaite keskeytys 1. ms välein? F tanta: kenellä suritin keskeytyshetkellä? u päivitä pririteetti sekunnin välein Fig 9.1 [tal0] 8 Fair-hare cheduling Tutki myös kuka prsessin mistaa (wner) u ettei hulivili vi tukkia järjestelmää Käsittele yhden käyttäjän prsesseja / säikeitä ryhmänä u ryhmän vaikutus nice termin asemesta u vurttelu edelleen prsessi- / säietaslla u pidettävä myös kirjaa paljnk ryhmä saanut CPU:n kknaisajasta (GCPU_cunter) u ryhmällä vi lla pain W, jka määrää millaisen suuden se saa kk (cpu-aika) kakusta Käytössä useissa UNIX-järjestelmissä u HP-UX, IBM AIX WLM, un laris M u ryhmä vi perustua käyttäjään tai prsessiin tai svellukseen F - Fair-hare cheduling Pririteetin määrittäminen CPU_cunter = CPU_cunter/ GCPU_cunter = GCPU_cunter/ Pri = Base + CPU_cunter/ + GCPU_cunter/(*W grup ) Esimerkissä u Base = 0 u W A = 0. ja W B+C = 0. (W A + W B+C = 1) u päivitä laskurit 0 kertaa sekunnissa u päivitä pririteetti sekunnin välein is W grup pieni painarv GCPU_cunter:lla pieni Pri arv is pririteetti Fig 9.1 [tal0] 9 0 Kertauskysymyksiä Millin vurtetaan? Tapahtumahjattu (nn-preemtive) vs. keskeytyvä (pre-emptive) vurttaminen Miten FCF ja und-bin algritmit eravat tisistaan? Millaisiin tilanteisiin ne spivat? Mikä F algritmin perusidea? Mitä hyötyä n käyttää pririteetteja? Mitä hyötyä n vaihtelevan pririteetin käytöstä? 1 KJ-II K00 / Teemu Kerla (lu )