Realtidssystem - Schemaläggning EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-10-05 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage) samt EDA698 (Mats Lilja) 1 Dagens agenda • • Recap: Dödläge Schemaläggning • • • • Realtid - krav, garanti, exekveringstider Schemaläggningsprinciper Prioritetstilldelning Prioritetsinvertering 2 Dagens agenda • • Recap: Dödläge Schemaläggning • • • • Realtid - krav, garanti, exekveringstider Schemaläggningsprinciper Prioritetstilldelning Prioritetsinvertering 3 dlock risk. Deadlock - dödläge en several threads are waiting for each other we have a Deadlock. circular pears to ted too k: DA040 F4b: Deadlock September 19, 2011 3 / 18 Om det blir en cirkel i kraven, eller snarare väntandet på att kraven uppfylls, hamnar systemet i ett dödläge (deadlock) Om det är teoretiskt möjligt att aktörer (trådar, bilar, personer) måste vänta på varandra i en cirkel, finns det en risk för dödläge (deadlock risk) 4 “Krav” för dödläge (Peterson / Silberschatz) Följande punkter måste vara “uppfyllda” för att det ska bli dödläge: 1. Ömsesidig uteslutning - enbart en tråd åt gången kan komma åt en resurs. 2. Hold and Wait (hålla och vänta) - en tråd kan “reservera” (ta) en resurs och vänta sen på en annan 3. Ingen resource-preemption (avbrott under resursnyttjande) - en tråd kan inte tvingas att lämna en resurs när den väl har kommit in 4. Cirkulärt vänteläge - när det finns en cirkel i tråd-resurs-beroenden För Java - monitorer gäller följande: 1. Monitor - enbart en tråd kan komma in, ömsesidig uteslutning är uppfylld 2. Anrop av en metod i en annan monitor inifrån en monitor-metod är möjligt 3. En monitor friges enbart om en tråd lämnar den tillfälligt (wait()) eller lämnar efter avslutad jobb, ingen resource-preemption, därmed kan det bli dödläge 4. “Cirkulärt vänteläge” är det som man måste åtgärda själv, allt annat KAN man inte ändra 5 esource allocation graphs Resursallokeringsgrafer, allmänt Tool for detecting circular hold-wait situations and to determine under Ett verktyg för att upptäcka cirkulära “hold-wait” situationer, och för att förstå, vilka trådar resurser kan deadlock inblandas i ettcan dödläge, whichoch conditions occur. 1. Draw 1. Rita resources resurserna (monitorer, semaforer ...) 2. Draw all hold-wait situations (arrows from each held resource to a 2. Rita alla hold-wait situationer. Pil från en “upptagen” resurs till en markör för tråden som thread arrows thread marker waited håller marker, i resursen (kan bli flerafrom markörer för en tråd, en för to varjeresource hold-wait) och pil från for) trådmarkör till resursen den väntar på. 3. Circular? Then risk for deadlock. The number of ’hold-wait’ links in 3. Cirkel i ritningen? Då är det riskhow för dödläge. förbindelserna visar the circular chain shows many“Hold-wait” and which threadsi cirkeln are required fo hur många och vilka trådar kan orsaka ett dödläge. deadlock. 6 Dödläge - svält - “livelock” Deadlock (dödläge) 1. När flera trådar försöker komma åt samma resurs måste dock en av de lyckas någon gång. 2. Ifall att ordningen av resursallokering är olyckligt gjort, kan det bli dödläge, dvs ingen tråd lyckas exekvera eller få tillgång till resurserna den behöver. Starvation (svält) 1. Om en tråd vill ha en resurs så måste den lyckas någon gång för att inte hamna i svältläge 2. Vi accepterar att det kan bli svält för mindre prioriterade aktiviteter, så att det som är viktigt kan utföras Livelock (levande låsning) 1. Om flera trådar försöker komma åt samma resurs men avbryts hela tiden innan de lyckas pga schemaläggningen, hamnar man i ett slags “zombie”-läge; trådarna är vid liv, men gör ingen nytta. 2. Utifrån ser det ut som dödläge, men kollar man upp det, är trådarna aktiva, fast det händer “ingenting” 7 Dagens agenda • • Recap: Dödläge Schemaläggning • • • • Realtid - krav, garanti, exekveringstider Schemaläggningsprinciper Prioritetstilldelning Prioritetsinvertering 8 Från parallellitet till realtid Realtidskrav Concurrent computing Ett realtidssystem måste • • • • "0 utföra beräkningar alla logiskt korrekt " reagera på inmatningar 2 jämlöpande " alltid ha konsistent data att "0"5 arbeta med 5%$ producera alla (del-)resultat " 5+% i tid +1&$! ""% +5! 0" För att uppnå “realtids-korrekthet” (real-time correctness) måste mjukvaran %3 &%2! säkerställa, att det “jämlöpande-korrekta” resultatet produceras pålitligt i tid. 6$ +0"""$ "##$%"$# Ofta handlar det om att hantera både periodiskt upprepade aktiviteter parallelt med händelsestyrda aktiviteter 9 Tidsfördröjningar och väntetider i återkopplingsreglering Software and timing Scheduling principles Bounded blocking Worst-case execution time (WCET) Latencies and delays in feedback control 1. Starttid för regleringen, önskad början av perioden 2. Faktiska starten av regleringsberäkning, efter trådbyte (release time) 3. Givarens mätdata är tillgänglig 4. De beräknade regleringsvärden blir utgivna 5. Reglering och exekvering är avslutade, inkluderande förberedelse för nästa mätomgång Control system | Software timing Tidpunkterna i grafiken: http://cs.lth.se/EDA040 sample delay control delay latency execution time control response time response time job execution sensor data control signal sample time (1) (2) (3) (4) F5: Scheduling and bounded response times (5) September 30, 2011 9 Control delay och control response time är något som folk i reglerteknik tittar på, medans vi behandlar execution time (exekveringstid) och response time (svarstid) från mjukvaruperspektivet. 10 Tiden som en aktivitet (tråd) förbrukar Att hantera något i realtid betyder att garantera ett korrekt (användbart) svar inom en given tid Vi måste då titta på två olika typer av tider som ingår i en tråds sammanlagda “arbetstid”, alltså den maximala svarstiden (maximum response time, R) som vi vill garantera: 1. Exekveringstiden i värsta fall (Worst Case Execution Time, WCET), plus väntetider, ifall det finns delade resurser och preemption. 2. Starttid (som hänger direkt ihop med andra trådars exekveringstid och trådbytestider). Eftersom vi vill kunna ge garantier, kommer vi alltid utgå från det värsta möjliga läget, Release time (maximal starttid) WCET (maximal exekveringstid) }R Maximum response time (Svarstid) 11 Svarstider och prioritet Svarstiderna, dvs väntetider och fördröjningar beror också på trådens prioritet Högst prioriterade tråden Andra trådar Tid för kontextbyte (trådbyte) Maximal exekveringstid av själva koden i tråden + maximal blockeringstid (vid gemensamma resurser) }R highP Beräkningen av den maximala svarstiden (Worst case response time) hänger alltså ihop med den valda schemaläggningen och trådarnas periodiska aktivitet Tid för kontextbyte (trådbyte) + WCET för alla högre / likt prioriterade trådar Maximal exekveringstid av själva koden i tråden + maximal blockeringstid (vid gemensamma resurser) + n* WCET för alla högre / likt prioriterade trådar (vid preemption, beror på periodtider) } RlowP 12 Statisk schemaläggning Fördelar Används för extremt kritiska trådar och i enkla styrsystem • • Tiden blir delad i små intervall (slots) • Alla aktiviteter (trådars exekveringstid) måste små såprinciples att de passar in Software and timing vara tillräckligt Scheduling i ett intervall Static scheduling Garanterad schema, alla får köra, allt utförs inom angivna tidsramar • Varje aktivitet kan alltid utföras färdigt, inga avbrott, inga kritiska sekvenser Bounded blocking time Static schedulingär– schemalagda examples i passande • Aktiviteterna tidsintervaller innan systemet börjar köras Fictive illustrative example • Lätt att beräkna den maximala svarstiden Nackdelar • Fragmentering, inget bra nyttjande av CPUTwo T1: 50 exekvering times/secondav schemat T2: 25 times/second Cyklisk upprepade • threads; tiden Divide time into 10 ms slots (e.g., interrupt triggered). Schedule accomplished by arranging the source code: T1 • Aktiviteter måste eventuellt delas upp i onaturliga avsnitt för att få dem in i en enstaka tidsintervall • Schemat kan bli ganska komplext, och måste eventuellt göras om när programmet ändras T2 Industrial T1: 50examples gånger / sek, 8ms WCET, 25 gånger / sek, 8ms TheT2: following were presented atWCET, lecture by classic overheads: I I 10ms tidsintervall ABB Robotics: DSP-based motor-control implementation 13 Dynamisk schemaläggning Används i de flesta, inte helt så kritiska system, ofta också där resurserna måste utnyttjas till högsta möjliga grad • • Beroende på den valda schemaläggningsprincip hanteras trådarna dynamiskt allt eftersom de startas up • Strict priority (Prioritetsbaserad) - trådarna sorteras i en väntekö enligt deras prioritet • Round robin - trådarna sorteras i en FIFO-kö Vi måste anta dynamisk, prioritetsbaserad schemaläggning för att kunna bygga realtidssystem, annars måste man känna till alla trådar i systemet (så att man kan räkna in dem i schemaläggningsanalysen) 14 Prioritetsbaserad schemaläggning Strict priority order - strikt prioritetsbaserad schemaläggning • Dynamisk schemaläggning bestämmer online vilken tråd (av de som är flaggad “ready”) ska köra • De flesta system-schemaläggare är baserad på prioriteter (som syns i Java-klasserna) • Vi antar interrupt-driven schemaläggning, dvs avrbytbar (med preemption), men detta kan kringgås på program-nivå med java.lang.Thread.yield(), ifall en ny schemaläggning behövs • Om prioriteterna är fasta, alltså inte ändras efter att tråden har skapats, pratar vi om fixed priority scheduling • Hur sätter man då en tråds prioritet? • Trådens prioritet påverkar schemaläggningen, dvs väljer man “fel” kan det bli omöjligt att hitta ett fungerande schema • Både för att bestämma prioritet och för att sen kunna garantera en maximal svarstid, måste man analysera värsta fallet - schemaläggningsanalys med WCET. 15 Prioritetstilldelning Exempel: T1 exekverar 1ms varje 2ms, T2 exekverar 2ms varje 5ms. Trådarna måste exekveras färdigt en gång per period Tidsintervallet vi måste titta på är minsta gemensamma multipeln av perioderna, dvs 2x5 = 10ms A: T2 får högre prioritet än T1: T2 T1 Det fungerar alltså om T1 får inte köra i sin första period (FEL) B: T1 får högre prioritet än T2: T1 högst frekvens får högst prioritet T2 T2 blir avbruten av T1 vid 2ms och 6ms, men får ändå köra inom den tänkte 5ms-perioden varje gång 16 RMS - Rate monotonic scheduling RMS regel: välj prioritet i relation till perioden; Kort period motsvarar hög prioritet. Fråga: Hur bra är denna tumregel? Kan vi granskar ett system mera noggrant? Hur exakt kan vi bestämma, om ett system kommer att fungera? Fråga: Hur mycket CPU-tid kan vi använda? Går det att utnyttja CPUn till 100% om flera trådar ska samsas om den, som var för sig har en viss grad av nyttjande av CPUtid? Scheduling analysis enligt RMS: Hur mycket CPU-användning kan vi ha och fortfarande garantera att det finns ett schema som fungerar? Förenklingar Till en början antar vi: • Periodiska trådar • Ingen blockering på resurs • Deadline = period Notation För varje tråd vet vi: • T = Period • C = Exekveringstid • U = C/T = CPU-användning 17 Exempel (RMS) Vi försöker med 100% CPU utnyttjande T1: C=2ms, T=4ms, C/T=0.5 T2: C=5ms, T=10ms, C/T=0.5 T1 T2 Men med T2: C=2ms, T=4ms, C/T=0.5 hade det fungerat... problemet ligger alltså i relationen mellan perioderna Värsta fallet som fortfarande går att schemalägga för två trådar utan blockering Med T1: C=1ms, T=2ms (C/T=0.5) får man T2: C=1ms, T=3ms som minsta U = C/T som fortfarande går att schemalägga. Totalt blir U = C/T = 1/2 + 1/3 ≈0.83 18 EDF- earliest deadline first Ett annat schemaläggningsprincip, som alltid ger CPUn till den tråden som är närmast sin deadline T1: C=2ms, T=4ms T2: C=5ms, T=10ms T1 T2 Här kan man få 100% CPU användning, men: dyrt att implementera (ligger ovanpå prioritetsbaserad schemaläggare) samt leverar riktigt dåliga resultat när det blir fel någonstans, då kommer alla trådar missar sina deadlines 19 Svarstider under tillfällig blockering Trådar i ett realtidssystem borde exekveras med absolut prioritetsbaserad ordning, dvs en tråd med hög prioritet ska inte behöva vänta på en tråd med lägre prioritet under en obestämt tidsperiod Därför (i ett realtidssystem): • CPUn tilldelas alltid den högst prioriterade tråden som är “redo” (ready) • Semaforer och monitorer har prioritetskö • Det finns en “ingångskö” för nya och nyligen blockerade trådar till delade monitorer Kan vi då garantera rätt exekveringstid för högt prioriterade trådar utan att känna till exekveringstiden av mindre prioriterade trådar? Vad händer när det blir blockering på delade resurser? 20 Prioritetsinvertering Ett problematiskt scenario: Software and timing Scheduling principles Bounded blocking time Limiting max blocking despite multiple resources. Tre trådar med H(ög), M(edel) och L(åg) prioritet, där H och L delar en resurs. • Priority Inversion L exekveras och kommer in i en kritisk region (kommer in i resursen) A problematic scenario • M avbryter (preemption) och börjar exekvera • • Three threads with H(igh), M(edium), and L(ow) priority: H avbryter1.och försökerand komma in ai den delade resursen, som L håller. H är blockerad. L executes enters critical region. 2. exekvera M preempts anden starts executing. M fortsätter under obestämd tidsperiod, och blockerar både L och H. 3. H preempts and tries to allocate the shared resource. H is blocked. 4. M continues executing for an arbitrary long period of time, blocking both L and H! http://cs.lth.se/EDA040 F5: Scheduling and bounded response times September 30, 2011 26 / 31 21 Prioritetsarv Ett “botemedel” mot prioritetsinvertering är prioritetsarv Idé: Låt en tråd med låg prioritet som håller i resurser som behövs av högre prioriterade trådar “ärva” den högre prioriteten, så att de blir klara så snart som möjligt och inte blockerar längre. Det finns olika protokoll som implementerar prioritetsarv: Dynamiskt prioritetsarv (basic inheritance protocol) Prioritetstak (priority ceiling protocol) Direkt prioritetsarv (immediate inheritance protocol) 22 I Thread L and H share a resource/monitor. I Recall that thread M is for something else, not using the monitor, and perhaps its existence in unknown. Dynamiskt prioritetsarv Det “problematiska scenariot”F5: räddad med (?) http://cs.lth.se/EDA040 Scheduling and prioritetsarv bounded response times September 30, 2011 28 / 31 • L exekveras och kommer in i en kritisk region (kommer in i resursen) • M avbryter (preemption) och börjar exekvera • H avbryter • och försöker komma in i den delade resursen, som L håller. H är blockerad. L ärver Hs prioritet och avslutar jobbet i den kritiska sekvensen. L får sen tillbaka “sin egen” prioritet och blir avbruten av H. • H avsluter och M fortsätter exekveringen • Både H och M väntar enligt sina tidsperioder. L får avsluta. 23 WCET for the highest priority thread Worst-case time to execute the code in the thread Dynamiskt prioritetsarv problem + For each used resource: maximum blocking time Högst prioriterade tråden Basic Inheritance Protocol: Tid för kontextbyte (trådbyte) } RhighP Maximal exekveringstid av själva koden i tråden Software and timing Scheduling principles + maximal blockeringstid (vid Limiting max blocking despite multiple resources. gemensamma resurser) Can block once Bounded blocking time for each used resource. Enhanced priority inheritance to avoid multiple blocking Det kan förekommer multipla blockeringer på olikahttp://cs.lth.se/EDA040 resurser av flera lägre prioriterade (LP) trådar, Scheduling and bounded response times Old baseline: Basic Inheritance Protocol – raise F5: prio for LP temporarily, som tillfälligt får hög prioritet enligt prioritetsarv. Detta kan man komma förbi med: dynamically when HP blocked, locally for each resource. Enhancements: ceiling protocol): Enbart EN LP-tråd får komma åt någon av resurserna som • Prioritetstak (priority HP-tråden behöver Priority vid ett tillfälle. Ceiling • • Properties The e↵ect is, to the cost of managing only one LP to access (and registering in the source region Direkt prioritetsarv Allow (immediate inheritance protocol): LP-tråden somthem innehar en kritisk the högste resources required som by HP code) multiple resources (sekvens) får alltid den prioriteten är förknippad med den aktuellatogether, resursen.a at any time. fence around that set of resources. Egenskaper: Det blir ett “staket” kring en grupp av resurser, som då också garanterar att det hela är Immediate Inheritance dödlägesfritt. Nackdelen är något högre prio ofman the måste LP is always hanteringskostnader,The eftersom to the ceiling prio in registrerar trådarnasraised resursbehov. critical region. Extra benefit: Deadlock free! 24 Schemaläggning - begrepp • Schedulability (möjligt att schemaläggas): • • • Schedulability test (test för möjlig schemaläggning) • Givet ett antal trådar och kunskap om deras prioriteter (RMS - perioder räcker!), besvarar ett sådant test frågan “Är detta system schemaläggningsbart?” • Svaret blir “ja” eller “nej”. Scheduling analysis (schemaläggningsanalys) • • Ett system är schemaläggningsbart (schedulable) när alla trådar håller sina deadlines Arbetet att bedöma ett systems egenskaper när det gäller schemaläggningen, utfört under systemets uppbyggande Scheduling (schemaläggning) • Specialfall: statisk schemaläggning • Normalfall: dynamiskt schemaläggning (kan vara prioritetsbaserad eller “Round-robin”) • OBS: Prioriteter och deadlines är till för korrekt realtidshantering (realtime correctness), medan den korrekta hanteringen av jämlöpande exekvering (concurrency correctness) INTE får vara kopplad till prioriteter! 25 Övning 6 - periodiska trådar och mailbox • Ofta hamnar man i en situation där vissa aktiviteter i ett system ska utföras återkommande, möjligen med en given tidsperiod som de ska upprepas i (jfr laboration 1, tidsräknaren) • Vissa aktiviteter har i sig ingen upprepning, de ska bara utföras en gång när någon händelse inträffar: när användaren trycker på en knapp ska knapptrycken hanteras, men när det inte händer något med knapparna behöver man inte göra något annat än att vänta (sporadiska trådar) eller rent av “inte finnas” (transaktionstråd). • Det kan vara bra att skilja den egentliga aktiviteten från periodhanteringen (om en sådan nu finns), så att man lättare kan komma åt tiden det ska ta för en aktivitet att utföras. En implementering kan då t ex erbjuda en “perform”-metod, som beskriver trådens jobb, medan run-metoden är redan implementerad i superklassen och implementerar loopen över återkommande anrop till perform. class Control extends PeriodicThread { Control() {super(20);} // Sampling period 20ms } } public void perform() { // Perform ONE sample (i.e., no loop here!). double yr = getSetPoint(); double y = sample(); double u = controlPID(yr,y); setControlOutput(u); 26 Basklasser för periodiska uppgifter se.lth.cs.realtime.* (och Javas grundutbud) tillhandahåller olika typer av trådklasser som man kan bygga sina trådklassar på: Cykliskt upprepade uppgift utan specifik period PeriodicThread: Cykliskt upprepade uppgift med specifik period SporadicThread: Cykliskt upprepade uppgift med en minimiperiod RTThread: Basklass för de tre klasserna ovan. Ingen subklass av java.lang.Thread JThread: Subklass av java.lang.Thread, som erbjuder en metod perform som man ska implementera trådens uppgift i; perform kallas i en given period från run. Erbjuder också en mailbox (RTEventBuffer). CyclicThread: 27 Tvättmaskiner och annan reglering En tvättmaskin ska enligt sin specifikation håller en viss vattentemperatur, beroende på det valda tvättprogrammet OCH steget i programmet. Temperaturen måste alltså kontrolleras regelbundet och justeras enligt de ställda kraven, utan att det hamnar under eller över en viss gräns (under gränsen är kanske inte farligt, men över brukar inte vara bra för tvätten). Värmeelementet går dock inte att slås på eller av med en gång, slår man av det, så ger det ju fortfarande lite värme, precis som en spisplatta. Man måste alltså räkna ut hur långt i förväg man måste slå av elementet innan man når önskad temperatur, så att det inte går över gränsen, samtidigt som man måste veta när man måste slå på igen innan vattnet blir för kallt. Detta ger ramen för tidsperioden som den styrande tråden får sova innan den kontrollerar temperaturen nästa gång efter att den ha tagit beslut om att slå på eller av elementet - man måste kunna garantera att tråden kolla temperaturen i tid varje gång. 28 Dagens resultat • • • Introducerat begreppen exekveringstid, svarstid, blockeringstid • Ska kunna förklara dem introducerade begreppen och principer. • Lästips: Introducerat schemaläggningsbegreppet och -principer (RMS, EDF) Introducerat begreppen prioritetsinvertering och prioritetsarv • • e-bok: del 2, kap 11 + 12, sida 263 - 294 Buttazzo, “Resource Access Protocols” 29
© Copyright 2024