Hoofdstuk 10: Scheduling bij multiprocessing en realtime
10.1. Scheduling bij meerdere processoren clusters (~loosely coupled) functional dedicated processors RAM I/O PROCESSOR I/O PROCESSOR RAM PR PROCESSOR MAIN PR RAM I/O PROCESSOR I/O PROCESSOR PR Hfdst 11 Hfdst 14 closely coupled RAM PR PR PR Hfdst 10
10.1. Scheduling bij meerdere processoren granulariteit bij multiprocessing ~granulariteit van synchronisatie onafhankelijke parallelliteit : systeem met timesharing grof gegranuleerde parallelliteit : verzameling gelijktijdige toepassingen gemiddeld gegranuleerde parallelliteit : verzameling threads binnen 1 proces fijn gegranuleerde parallelliteit : parallelliteit binnen 1 machine instructie aanpassingen scheduling algoritme noodzakelijk
10.1. Scheduling bij meerdere processoren ontwerpaspecten toewijzen van processen aan processoren 2. gebruik van multiprogrammering op verschillende processoren 3. feitelijke dispatching van een proces 1. toewijzen van processen aan processoren statisch dynamisch - proces permanent toegewezen aan zelfde proc. - 1 KT wachtrij per processor (load balancing) - proces ingeroosterd op willekeurige proc. - 1 KT wachtrij voor ganse systeem + minder overhead voor scheduler + groepscheduling/gangscheduling - performantie variante : dynamic load balancing (threads verplaatsen naar andere queue)
10.1. Scheduling bij meerdere processoren 1. toewijzen van processen aan processoren master/slave peer oriented master beheert kernelfuncties master is verantwoordelijk voor scheduling elke processor is gelijkwaardig elke processor voert sched. uit voor bep. proc. kritische fout bij master legt systeem plat master kan bottleneck worden voorkomen dat 2 proc.’en zelfde proces kiezen 2. gebruik van multiprogrammering voor individuele processors bij toepassingen met grove granulariteit : multiprogrammering = OK bij toepassingen met gemiddelde granulariteit : multiprogrammering = OK/NOK 3. toedeling van processen FCFS, RR, SJF, … ???
10.1. Scheduling bij meerdere processoren scheduling van processen 1,15 conclusies: keuze voor specifiek schedulingalgoritme minder belangrijk bij multiprocessorsystemen één processor 1,13 1,10 verhouding doorvoer RR en FCFS 1,08 1,05 twee processoren 1,03 1,00 0,98 1 2 3 4 5 variatiecoëfficient
10.1. Scheduling bij meerdere processoren scheduling van threads voordelen van threads: beter structureren van programma’s gelijktijdige I/O en verwerking benutten echte parallelliteit in een toepassing opm: kleine verschillen in beheer en scheduling kunnen significante invloed hebben op prestaties aanpakken: load sharing (dynamisch load balancing) groepsscheduling/gangscheduling: groep gerelateerde threads ingeroosterd om gelijktijdig te worden uitgevoerd aantal processoren vaste processortoewijzing: aantal processors toewijzen gedurende ganse levensduur van threads dynamische scheduling: aantal threads aanpasbaar in een programma
10.1. Scheduling bij meerdere processoren queue load sharing voordelen: 1. werklast gelijkmatig verdeeld 2. geen gecentraliseerde scheduler nodig 3. wachtrij kan op verschillende manieren worden opgebouwd PR_1 PR_2 PR_3 PR_4 verschillende versies: FCFS (alle threads komen achteraan gemeenschappelijke wachtrij) laagste aantal threads eerst: PRIO(proces) = PRIO(- aantal_threads) preëmptief laagste aantal threads eerst. resultaten uit simulatiemodellen: beste strategie: FCFS + gang scheduling
10.1. Scheduling bij meerdere processoren queue load sharing nadelen: centrale wachtrij gevolg: mutual exclusion nodig (problematisch bij groot aantal processoren) mogelijks verschillende processoren bij preëmptie gevolg: problemen met cache-on-processor PR_1 PR_2 PR_3 PR_4
10.1. Scheduling bij meerdere processoren groepscheduling PR_1 PR_2 PR_3 PR_4 voordelen: aantal blokkeringen vanwege synchronisatie relatief klein (samen uitvoeren van units met hoge interactiegraad) schedulingoverhead relatief laag (één beslissing invloed op meerdere processoren) Processortoewijzing moeilijker Stel: N processors en M toepassingen (bestaan uit ≤ N threads) G1 uniforme verdeling verdeling op gewicht G1 G2 G1 G2 G2 PR_1 PR_2 PR_3 PR_4 PR_1 PR_2 PR_3 PR_4
10.1. Scheduling bij meerdere processoren vaste processortoewijzing (extreme vorm van groepsscheduling) PR_1 PR_2 PR_3 PR_4 nadelen: processoren ongebruikt bij I/O 2. geen multiprogrammering voordelen: processortijd niet belangrijk bij groot aantal processoren 2. snellere uitvoering van programma door vermijden proceswisselingen aantal threads ≤ aantal processoren (zie volgende slide)
10.1. Scheduling bij meerdere processoren vaste processortoewijzing (extreme vorm van groepsscheduling) PR_1 PR_2 PR_3 PR_4 Setting: 16 processoren
10.1. Scheduling bij meerdere processoren Dynamische scheduling assumptie: mechanismes om aantal threads per job dynamisch aan te passen (afh. van aantal beschikbare processoren) ALGORITME: process.request_processors(int aantal) if(ongebruikte processors) assign_processors else 1. zoek proces met meerdere processoren aan toegekend 2. neem er eentje van af 3. ken processor toe aan het nieuwe proces else wacht_efkes_in_queue ALGORITME: process.release_processors(int aantal) geef 1 processor aan alle processen in queue Geef rest van processor op basis van FCFS
10.2. Realtime-scheduling Inleiding hard realtime task : schade indien begin of einde van taak niet voor deadline soft realtime task : toch nog zinvol om taak na deadline uit te voeren niet-periodieke taak : deadline waarop taak moet starten/eindigen periodieke taak : ‘eens per periode T’ of ‘precies om de T eenheden’
interrupt service routine 10.2. Realtime-scheduling Kenmerken van realtime besturingssysteem deterministic ~vertraging vooraleer een interrupt wordt bevestigd door OS 1. snel kunnen reageren op events (~interrupts) 2. voldoende capaciteit om verzoeken af te handelen binnen tijdsinterval responsiveness ~tijd die nodig is om interrupt af te handelen tijd om interrupt af te handelen tijd om interrupt service routine (ISR) uit te voeren invloed van nesten van interrupts bevestiging interrupt interrupt afhandeling interrupt afhandeling interrupt service routine
10.2. Realtime-scheduling Korte Termijnscheduler Very Important Kenmerken van realtime besturingssysteem user influence opgeven prioriteiten aan taken aangeven welke processen zeker in RAM moeten blijven … reliability verlies kan prestaties verminderen of rampzalige gevolgen hebben fail-soft werking/stabiliteit fouten opvangen zonder werking fundamenteel te verhinderen Korte Termijnscheduler Very Important
10.2. Realtime-scheduling : verzoek RT_proces : preëmptieve OP Mogelijke schedulingstrategieën preëmptieve scheduler met RR realtime proces achteraan queue proces_1 proces_2 proces_n RT_proces prioriteitsgestuurde, niet-preëmptieve scheduler realtime proces eerste in queue huidig_proces RT_proces prioriteitsgestuurde, preëmptieve scheduler met preëmptieve onderbrekingspunten wachten op volgende OP huidig_proces RT_proces onmiddellijk preëmptieve scheduler met RR onmiddellijk onderbreken huidig_proces RT_proces
10.2. Realtime-scheduling beschikbare informatie voor task: Deadline scheduling beschikbare informatie voor task: tijdstip Ready (vooral bij periodieke taken) begindeadline/einddeadline verwerkingstijd resource requirements priorities (hard RT tasks vs soft RT tasks) subtaskstructuur (verplichte subtask vs facultatieve subtask)
10.2. Realtime-scheduling schedulingstrategieën Stel: A en B 2 sensoren Deadline scheduling: scheduling van periodieke taken met einddeadlines einddeadlines A1 A2 B1 A3 A4 B2/A5 aankomsttijden & verwerkingstijden A1 A2 A3 A4 A5 B1 B1 0 10 20 30 40 50 60 70 80 90 100 scheduling met vaste prioriteit A heeft prioriteit A1 B1 A2 B1 A3 B2 A4 B2 A5 B2 0 10 20 30 40 50 60 70 80 90 100 scheduling met vaste prioriteit B heeft prioriteit B1 A2 A3 B2 A5 schedulingstrategieën 0 10 20 30 40 50 60 70 80 90 100 scheduling met vroegste einddeadline A1 B1 A2 B1 A3 B2 A4 B2 A5 0 10 20 30 40 50 60 70 80 90 100
10.2. Realtime-scheduling schedulingstrategieën Stel: alle jobs duren 20 TE niet periodisch Deadline scheduling: scheduling van periodieke taken met begindeadlines A B C D E aankomsttijden begindeadlines 0 10 20 30 40 50 60 70 80 90 100 110 120 B C E D A vroegste deadline A C E D 0 10 20 30 40 50 60 70 80 90 100 110 120 vroegste deadline met niet opgelegde leeglooptijden B C E D A schedulingstrategieën 0 10 20 30 40 50 60 70 80 90 100 110 120 first-come, first-served A C D 0 10 20 30 40 50 60 70 80 90 100 110 120
10.2. Realtime-scheduling Stel: alle jobs duren 20 TE niet periodisch Frequentie scheduling (rate monotonic scheduling, RMS) prioriteit toekennen op basis van frequentie van task periode = T = tijdsinterval tussen aankomst van twee instanties van taak frequentie = inverse van periode (in seconden, in hertz) verwerkingstijd = C = hoeveelheid tijd nodig om taak te voltooien bezettingsgraad = U = C/T voorbeeld: periode T = 50 msec frequentie = 20 Hz bij RMS: taak met hoogste prioriteit = taak met kortste periode = taak met hoogste frequentie
10.2. Realtime-scheduling n n(21/n-1) 1 1.0 2 0.828 3 0.779 4 0.756 5 Frequentie scheduling (rate monotonic scheduling, RMS) hoog bovengrens bij perfect scheduling alg: C1/T1 + C2/T2 + C3/T3 + … + Cn/Tn ≤ 1 bovengrens bij RMS: C1/T1 + C2/T2 + C3/T3 + … + Cn/Tn ≤ n(21/n-1) prioriteit n 1 2 3 4 5 … oneindig n(21/n-1) 1.0 0.828 0.779 0.756 0.743 … ln 2 = 0.693 laag frequentie voorbeeld: taak P1: C1=20; T1=100 taak P2: C2=40; T2=150 taak P3: C3=100; T3=350 vraag: Zijn P1, P2 en P3 inroosterbaar met RMS?
10.2. Realtime-scheduling prioriteitinversie probleem kan optreden bij preëmptie met prioriteiten Wat is de uiteindelijke problematiek? taak met hogere prioriteit moet wachten op taak met lagere prioriteit (~ oa bij blokkering van resources) T1: periodiek controleren van toestand van SW T2: beeldgegevens verwerken T3: tests uitvoeren ivm toestand apparatuur dalende prioriteit marsverkenner pathfinder T1 en T3 delen gegevensstructuur T1 stelt timer met maximum waarde in totale reset als timer afloopt … (duurt 1 dag) probleem: na enkele dagen geen data meer doorgestuurd nr aarde
10.2. Realtime-scheduling T1 T2 T3 probleem bij ongebonden prioriteitinversie geblokkeerd door T3 s vergrendeld T1 T2 onderbroken door T1 s vergrendeld s ontgrendeld onderbroken door T2 T3 oplossing: prioriteitsovererving prioriteit wisselt van plaats zodra taak met hoge prio blokkeert vanwege resource geblokkeerd door T3 s vergrendeld T1 T2 onderbroken door T1 s vergrendeld s ontgrendeld T3