Teil 3: Scheduling
Transcription
Teil 3: Scheduling
Vorlesung Echtzeitsysteme Thema 3: Scheduling Robert Baumgartl 15. April 2015 1 / 103 Zielstellung Finden einer Abbildung Ausführungseinheit→Prozessor, so dass I alle notwendigen Ressourcen (Rechenzeit, Speicherplatz, Geräte, . . . ) den Ausführungseinheiten zur Verfügung stehen und I alle Zeitforderungen garantiert eingehalten werden. Scheduling (Planen) = Entscheidung, welcher Prozess zu welchem Zeitpunkt für welche Zeitspanne abgearbeitet wird. Häufig werden in Echtzeitsystemen nicht nur der Prozessor sondern auch andere Ressourcen geplant und zugeteilt (z.B. Festplatten, Busse). 2 / 103 „Klassische“ Ziele der Prozessorzuteilung 1. Minimierung der (mittleren) Reaktionszeit: z.B. bei interaktiven Systemen 2. Maximierung des Durchsatzes: z.B. bei Servern 3. Maximierung der Prozessorauslastung: z.B. bei Supercomputern 4. Fairness: Gleichbehandlung aller Prozesse, Garantie des Fortschritts In Echtzeitsystemen: 5. Einhaltung der vorgegebenen Zeitschranken Sekundärziele: 1.-4. 3 / 103 Klassifikation von Schedulingverfahren Nach dem Zeitpunkt („Wann wird geplant?“) On-Line (zur Laufzeit des Systems, implizite Planung) I bei Zustandsübergängen, I bei externen Ereignissen, I nach Verstreichen einer festen Zeitspanne, I bei Aufruf eines Systemrufs Off-Line (vor Laufzeit des Systems, explizite Planung) I alle Prozessparameter vor Systemstart bekannt I geschlossene Prozessmengen I Umschaltung sehr schnell, da keine Planung zur Laufzeit nötig 4 / 103 Klassifikation von Schedulingverfahren Nach der Unterbrechbarkeit („Kann einem Prozeß der Prozessor entzogen werden?“) Kooperatives Scheduling I Prozess gibt freiwillig den Prozessor ab I Behandlung kritischen Abschnitte einfach I geringerer Aufwand Präemptives Scheduling I Prozess kann von außen (durch das BS) unterbrochen werden I Prioritätssteuerung möglich/einfacher I keine Beeinflussung der Prozesse untereinander 5 / 103 Klassifikation von Schedulingverfahren Nach dem Regime Zeitgesteuertes Scheduling I on-line und off-line möglich I keine Interrupts, Interaktion ausschließlich durch Polling Ereignisgesteuertes Scheduling I nur on-line möglich I Aktivierung von Prozessen in Folge externer Ereignisse I Interrupts erlaubt 6 / 103 Klassifikation von Schedulingverfahren Weitere Kriterien I Nutzung von Prioritäten (keine, fest, variabel) I nach Anzahl der Prozessoren, Möglichkeit der Migration nach Taskmodell: I I I I I ausschliesslich periodische Tasks Tasks in notwendige und wahlfreie Phase gesplittet (Flexible Computations) zusätzlich aperiodische Tasks erlaubt Berücksichtigung von Prozess-Präzedenzen (Abhängigkeiten) 7 / 103 Klassifikation von Schedulingverfahren Übersicht der zu behandelnden Verfahren Echtzeit−Scheduling off−line Network Flows on−line keine Prio. statische Prio. dynamische Prio. Round Robin RMS DMS EDF LST 8 / 103 Wichtige Begriffe und Parameter Job Programmeinheit, die geplant und ausgeführt wird. Task Menge an (zusammengehörigen) Jobs, die zusammen eine Aufgabe lösen bzw. eine Funktion ausüben. Ein Job wird durch eine aktive Ressource ausgeführt, z.B. CPU, Festplatte(-ncontroller), Netz(-karte); d.h., ein Prozessor ist erforderlich. Deadline Zeitpunkt, bis zu dem Job bzw. Task ausgeführt sein muss Jitter (unerwünschtes) Schwanken der Ausführungszeiten der Jobs einer Task Schedule Plan, der die Abarbeitungsreihenfolge von Aktivitäten festlegt 9 / 103 Zeitpunkte und Zeitspannen Jobs werden zu einem bestimmten Zeitpunkt tr bereit, nämlich wenn sie alle angeforderten Betriebsmittel erhalten haben. Von nun an können sie potentiell abgearbeitet werden, was zu ts beginnt. Die Abarbeitung endet zu tc . Es sollte tc ≤ td gelten, ansonsten wird die Deadline und damit die Echtzeitbedingung dieses Jobs verletzt. Job ist aktiv tr ts tc td t te tresp 10 / 103 Zeitpunkte und Zeitspannen Zeitpunkte: Release Time tr Starting Time Completion Time Deadline ts tc td Zeitspannen: Execution Time Response Time Tardiness te tresp ttard Zeitpunkt, ab dem ein Job ausgeführt werden kann Zeitpunkt des Starts eines Jobs Zeitpunkt der Komplettierung eines Jobs Zeitpunkt, bis zu dem ein Job beendet sein muss Ausführungszeit Antwort-, Reaktionszeit Verspätung tc − ts tc − tr tc − td Anmerkungen: I ts ≥ tr I ttard = 0, wenn tc < td (keine negative Verspätung) I td wird bezogen auf tr (relative Deadline) Def 11 / 103 Prozesszustände (Wiederholung aus BS1) aktiv Prozess wird abgearbeitet (besitzt alle zum Fortschritt nötigen Ressourcen) bereit Prozess besitzt alle zum Fortschritt nötigen Ressourcen, wird jedoch gerade nicht abgearbeitet wartend Prozess besitzt nicht alle zum Fortschritt nötigen Ressourcen (diese sind an andere Prozesse vergeben) oder Prozess wartet auf ein Ereignis. (nicht existent) Prozess wurde beendet oder noch nicht gestartet. (weitere Subzustände denkbar, hier nicht weiter betrachtet) neuer Prozeß bereit aktiv wartend Abbildung: Mögliche Transitionen zwischen Prozesszuständen 12 / 103 Periodisches Taskmodell I einfach zu analysieren I liegt vielen Verarbeitungsaufgaben zugrunde (Beispiel: multimediale Ströme) I periodische Aktivierung der Jobs einer Task I i. Allg. als Tupel Ji (tφ,i , tp,i , te,i , td,i ) notiert mit folgender Parameterbedeutung: Parameter Phase Periode Ausführungszeit (relative) Deadline Anmerkungen tφ tp te td default: 0 (pro Aktivierung) default: tp 13 / 103 Periodisches Taskmodell Anmerkungen I wenn tφ,i = 0, td,i = tp,i gilt, dann wird deren Angabe fortgelassen I d. h. , der Job Ji wird nur durch seine Periode tp,i und seine Ausführungszeit te,i beschrieben I In komplexeren Taskmodellen1 werden zusätzlich aperiodische Jobs zugelassen. 1 Diese behandeln wir hier aber nicht. 14 / 103 Auslastung I nur für periodische Tasks bestimmbar I Ermittlung für Task i: ui = I te,i tp,i Gesamtauslastung u eines periodischen Tasksets mit n Tasks: n X u= ui i=1 I bei 1 Prozessor u < 1 nötig, sonst Überlast 15 / 103 Brauchbarkeit und Optimalität Definition Ein Plan (Schedule) einer Menge Jobs heißt brauchbar, wenn jeder Job aus dieser Menge vor seiner individuellen Deadline garantiert komplettiert ist. Definition Ein Schedulingalgorithmus heißt optimal, wenn der Algorithmus zu einer gegebenen Menge an Jobs einen brauchbaren Schedule erzeugt, sofern dieser existiert. I ein nicht-optimaler Algorithmus ist also u. U. nicht in der Lage, einen brauchbaren Schedule zu erzeugen, obwohl dieser existiert. 16 / 103 Präzedenz Häufig unterliegen Jobs einer vorgeschriebenen Reihenfolge („J1 muss beendet sein, bevor J2 starten kann.“). Darstellung durch gerichteten Graphen, den Präzedenzgraphen: I Knoten: Jobs (Tasks, Teil-Prozesse), bewertet mit Namen und Ausführungsparametern I Kanten: Präzedenzrelationen zwischen Tasks, J1 → J2 bedeutet, daß J1 komplettiert sein muss, bevor J2 gestartet werden darf zusätzlich notwendige Informationen: I Bereit-Zeiten (tr ) I Prioritäten, falls relevant 17 / 103 Präzedenzgraph Beispiel J ,3 1 J ,1 J ,2 J ,2 3 4 2 J ,2 5 J ,4 7 J ,4 6 J ,1 8 Abbildung: Beispiel für einen Präzedenzgraphen 18 / 103 Präzedenzgraph Aufgabe Generieren Sie einen gültigen Schedule sowohl für präemptives als auch für nichtpräemptives Scheduling, wenn gilt: I 2 Prozessoren, Migration möglich I Prioritätsreihenfolge (J1 , J2 , . . . , J8 ) (d.h., J1 hat höchste Priorität), I alle Jobs sind zu t=0 bereit, außer J5 , welches erst zu t=4 bereit ist Vorgehensweise: 1. Start zu t = 0 2. Bereitmenge B(t) der Jobs bilden (Präzedenz und Bereitzeit beachten) 3. bei n Prozessoren: n höchstpriorisierte Jobs auswählen, abarbeiten I I präemptiv: t := t + 1 nichtpräemptiv: t bis zur Komplettierung des ersten der aktiven Jobs inkrementieren 4. GOTO 2 19 / 103 Präzedenzgraph Lösung der Aufgabe (präemptives Scheduling) t Ereignis B(t) ausgewählt 0 - J1 , J2 , J7 J1 , J2 1 J2 beendet J1 , J3 , J7 J1 , J3 3 J1 , J3 beendet J4 , J7 J4 , J7 4 J5 bereit J4 , J5 , J7 J4 , J5 5 J4 beendet J5 , J7 J5 , J7 6 J5 beendet J7 J7 8 J7 beendet J6 , J8 J6 , J8 9 J8 beendet J6 J6 12 J6 beendet - Ende 20 / 103 Präzedenzgraph Lösung der Aufgabe (zugehörige Schedules) P1 J1 0 1 P2 J 2 J 3 0 1 J4 J7 2 3 4 5 J6 6 7 8 9 10 11 12 J8 J7 J5 2 3 4 5 t 6 7 8 9 10 11 12 t Abbildung: Schedule mit Prozessorentzug P1 J1 0 1 2 3 4 5 P2 J 2 J 3 0 1 J6 J5 J4 J7 2 3 4 5 6 7 8 9 10 11 12 t J8 6 7 8 9 10 11 12 t Abbildung: Schedule ohne Prozessorentzug 21 / 103 Effektive Deadlines und Bereitzeiten Individuelle Deadlines und Bereitzeiten können zu den Präzedenzen inkonsistent sein: a) Bereitzeit eines Jobs ist später als die seines Nachfolgers (⇒ Bereitzeit des Nachfolgers anpassen) J (8, 10) 2 J (4, 10) 3 b) Deadline eines Jobs ist kleiner als die seines Vorgängers (⇒ Deadline des Vorgängers anpassen) J (0, 10) 2 J (0, 4) 3 Legende: Ji (tr ,i , td,i ) 22 / 103 Effektive Deadlines und Bereitzeiten Definitionen Definition (Effektive Bereitzeit) Die effektive Bereitzeit eines Jobs ohne Vorgänger ist seine zugeordnete Bereitzeit. Die effektive Bereitzeit eines Jobs mit Vorgängern ist gleich dem Maximum aus seiner zugeordneten Bereitzeit und den effektiven Bereitzeiten aller seiner direkten Vorgänger. Definition (Effektive Deadline) Die effektive Deadline eines Jobs ohne Nachfolger ist seine zugeordnete Deadline. Die effektive Deadline eines Jobs mit Nachfolgern ist gleich dem Minimum aus seiner zugeordneten Deadline und den effektiven Deadlines aller seiner direkten Nachfolger. 23 / 103 Effektive Deadlines und Bereitzeiten Beispiel Ermitteln Sie die effektiven Bereitzeiten und Deadlines der Jobs in folgendem Jobsystem (mit Ji (tr ,i , td,i )) : J (2,10) 1 J (0,7) 2 J (1,12) J (4,9) 3 4 J (1,8) 5 J (0,20) 6 J (6,21) 7 24 / 103 Scheduling-Anomalien Beispiel Frage: Wie ermittelt man die Gesamtabarbeitungszeit, wenn te eines oder mehrerer Jobs variiert? Beispiel: 4 Jobs, davon einer mit variabler Ausführungszeit (J2 ): Ji tr ,i te,i td,i J1 J2 J3 J4 0 0 4 0 5 2. . . 6 8 10 10 10 15 20 Keine Migration, 2 Prozessoren, absteigende Priorität (J1 höchste Priorität, J4 niedrigste), präemptive Prozessorvergabe. 25 / 103 Beispiel für Scheduling-Anomalie Resultierende Schedules J3 J1 P1 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 J2 P2 t J4 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 t Abbildung: Gültiger Schedule für te,2 = 6 (Maximum) J1 P1 0 1 P2 J2 0 1 2 3 4 5 J4 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 J3 t J4 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 t Abbildung: Schedule für te,2 = 2 (Minimum) Taskmenge ist offensichtlich stets planbar?! (Oder nicht?) 26 / 103 Beispiel für Scheduling-Anomalie Simulation mit Maximum und Minimum von te,i ergibt gültige Schedules. Ist das ausreichend? Antwort: Nein! Gesamtausführungszeit für den Schedule ist mit te,2 = 3 gleich 21; J4 verpaßt seine Deadline: J1 P1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 t Deadline verpaßt! J2 P2 0 1 J4 2 3 4 5 J3 J4 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 t Abbildung: (ungültiger) Schedule für te,2 = 3 27 / 103 Beispiel für Scheduling-Anomalie; Schlußfolgerung Für te,2 = 5 wird die Gesamtausführungszeit am kleinsten! J1 P1 0 1 2 3 4 5 J2 P2 0 1 2 3 4 5 J3 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 t J4 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 t Es handelt sich um eine so genannte Scheduling-Anomalie, d. h. ein unerwartetes Zeitverhalten (eines prioritätsgesteuerten Systems). Schlußfolgerung: I Validierung des Zeitverhaltens von Echtzeitsystemen mit variablem Timing besonders aufwendig I konstante Ausführungszeiten erwünscht 28 / 103 Earliest Deadline First (EDF) EDF auf einen Blick Algorithmus: „Wähle unter den bereiten Job denjenigen zur Bearbeitung aus, dessen Deadline am ehesten erreicht ist.“ (prioritätsbasiertes Verfahren) EDF ist optimal, wenn I präemptive Prozessorvergabe, I 1 Prozessor und I keine Konkurrenz um Ressourcen. 29 / 103 Earliest Deadline First (EDF) Beweis der Optimalität I – Ausgangspunkt Idee: Jeder brauchbare Schedule läßt sich systematisch in einen EDF-Schedule transformieren. Ausgangspunkt: I 2 Jobs Ji , Jk innerhalb eines brauchbaren Schedules, mit td,i und td,k . I Es soll (o. B. d. A.) td,i > td,k gelten. I Ji ist im Intervall Ii geplant, Jk im Intervall Ik (siehe Abbildung). Ii Ik Ji Jk t t d,k t d,i 30 / 103 Earliest Deadline First (EDF) Beweis der Optimalität II – Transformation in EDF-Schedule 2 Möglichkeiten: a) tr ,k > Ii → beide Jobs sind bereits (zufällig) nach EDF geplant, b) tr ,k < Ii → Austausch von Ji und Jk nötig Austausch mit Fallunterscheidung: 1. Ii < Ik → Teil von Jk in Ii abarbeiten, Rest in Ik , danach Ji (vgl. Abbildung) Jk Jk Ji t 2. Ii > Ik → Jk und danach einen Teil von Ji in Ii abarbeiten, Rest von Ji in Ik → Austausch ohne Verletzung der Gültigkeit des Schedule immer möglich (sonst wäre Ausgangsschedule nicht gültig) 31 / 103 Earliest Deadline First (EDF) Beweis der Optimalität III – Generalisierung von 2 auf n Jobs Das Verfahren kann man nun auf alle Jobpaare Jx , Jy des Schedule anwenden. Durch Vertauschung ist es möglich, dass der Prozessor nichts abarbeitet, obwohl Jobs bereit sind (vgl. Abb.) „Vorziehen“ notwendig: Jk Jk Ji t Diese Verschiebung ist immer möglich. Schlussfolgerung: Aus jedem brauchbaren Schedule kann ein EDF-Schedule generiert werden. ⇒ EDF erzeugt stets einen brauchbaren Schedule, sofern dieser überhaupt existiert. 32 / 103 EDF bei kooperativer Prozessorvergabe Beispieltaskmenge T : Ji tr ,i te,i td,i J1 J2 J3 0 2 4 3 6 4 10 14 12 Plan nach EDF bei kooperativer Prozessorvergabe: J1 0 1 J2 2 3 4 5 J3 6 7 8 9 10 11 12 13 14 t Deadline verpaßt! Frage: Gibt es überhaupt einen gültigen Schedule für T ? 33 / 103 EDF bei kooperativer Prozessorvergabe Antwort: Klar! J1 0 1 J3 2 3 4 5 J2 6 7 8 9 10 11 12 13 14 t Abbildung: Gültiger Schedule für T bei kooperativer Prozessorvergabe (nicht durch EDF generiert) Folgerung: EDF ist nicht optimal bei kooperativer Vergabe des Prozessors (es findet für bestimmte Taskmengen keinen brauchbaren Plan, obwohl dieser existiert). Immerhin: Kein prioritätsgesteuertes Verfahren kann den gültigen Schedule erzeugen, da diese per definitionem niemals den Prozessor leer lassen, wenn bereite Jobs existieren! 34 / 103 EDF auf Multiprozessorsystemen Beispieltaskmenge U: Ji tr ,i te,i td,i J1 J2 J3 0 0 0 1 1 5 1 2 5 Plan nach EDF für n = 2 Prozessoren (präemptiv): P1 J 1 0 1 J3 2 3 4 5 P2 J 2 0 1 2 3 4 5 6 7 J 3verpaßt Deadline! 6 7 t t Frage: Gibt es überhaupt einen gültigen Schedule für U? 35 / 103 EDF auf Multiprozessorsystemen (Erneute) Antwort: Klar! P1 J 1 J 2 0 1 2 3 4 5 6 7 t J3 P2 0 1 2 3 4 5 6 7 t Abbildung: Gültiger Schedule für U auf n = 2 Prozessoren, präemptive Vergabe (nicht durch EDF generiert) Folgerung: EDF ist nicht optimal2 für n > 1 Prozessoren. 2 Was hieß das nochmal? 36 / 103 Latest Release Time (LRT) oder “reverse EDF” EDF: Jobs so früh wie möglich abgearbeitet; dies kann in bestimmten Situationen unerwünscht sein. Idee: Jobs spätestmöglich bearbeiten, zuvor nach Möglichkeit andere (Nicht-Echtzeit-) Jobs einschieben (deren Reaktionszeit damit minimiert wird). Algorithmus LRT: Beginnend am Maximum aller Deadlines wird der Schedule „rückwärts“ bis zum Startzeitpunkt aufgebaut. Wenn mehrere Prozesse zu einem Zeitpunkt bereit sind, wird stets derjenige mit der spätesten Bereitzeit ausgewählt. 37 / 103 Latest Release Time (LRT) oder “reverse EDF” Beispiel 3 Jobs Ji te,i (tr ,i , td,i ) J 3(0, 6) J 2(5, 8) 1 2 J 2(2, 7) 3 Resultierender Schedule nach LRT: J1 0 1 J3 2 3 4 5 J2 6 7 8 9 10 t 38 / 103 Latest Release Time (LRT) oder “reverse EDF” Einschätzung I LRT ist optimal unter den gleichen Bedingungen wie EDF (1 Prozessor, präemptive Vergabe, keine Konkurrenz um Ressourcen) I LRT ist nicht prioritätsbasiert, da es u. U. den Prozessor idle läßt, obwohl bereite Jobs existieren. I LRT kann nur offline genutzt werden. 39 / 103 Least Slack Time First (LST) Parameter Slack Time tsl,i eines Jobs Ji : tsl,i (t) = td,i − t − verbleibende te,i („Pufferzeit“; Wieviel Zeit ist noch, bis Job unbedingt begonnen werden muss?) Algorithmus: „Wähle den Job zur Abarbeitung aus, dessen Slack Time am kleinsten ist.“ Beispiel: J1 3(0, 6) hat zum Zeitpunkt t = 0 die Slack Time tsl,1 (0) = 6 − 3 − 0 = 3. Wird J1 abgearbeitet, so bleibt tsl,1 konstant; wenn nicht, so reduziert sich tsl,1 (wenn z. B. J1 bis zu t = 2 nicht abgearbeitet wird, verringert sich die Slack Time tsl,1 (2) = 6 − 3 − 2 = 1). Erreicht die Slack Time 0, so muss der Job abgearbeitet werden, sonst verletzt er seine Deadline. 40 / 103 Least Slack Time First (LST) Einschätzung I prioritätsbasiertes Verfahren I optimal für 1 Prozessor, präemptive Prozessorvergabe und keine Konkurrenz um Ressourcen I Wissen über te notwendig → Nachteil! (Warum?) I aka Minimum Laxity First (MLF) 41 / 103 Prinzip des zeitgesteuerten Schedulings I Grundidee: Ermittlung des Schedule off-line, zur Laufzeit des Systems wird der Schedule nur Position für Position abgearbeitet I periodisches Taskmodell nötig (sonst unendlicher Schedule, nicht speicherbar) I Ermittlung des Schedule off-line → komplexe Algorithmen nutzbar (hier: Netzwerkflüsse) I konstante Anzahl periodischer Echtzeit-Tasks Ti (tφ,i , tp,i , te,i , td,i ), 1 Prozessor I Schedule einer Menge aus n Tasks besteht aus aneinandergereihten Segmenten der Länge H = kgV(tp,i ) i = 1, 2, . . . , n I H wird Hyperperiode genannt I Tasks ohne Deadline konsumieren bei Bedarf verbleibende Zeit 42 / 103 Zeitgesteuertes Scheduling Beispiel Beispiel: 4 periodische unabhängige Tasks (Ti (tp,i , te,i )) T1 (4, 1) T2 (5, 1.8) u= T3 (20, 1) T4 (20, 2). 1 1.8 1 2 + + + = 0.76 4 5 20 20 H = 20 brauchbarer Schedule (ad hoc): T1 T3 T2 0 1 I I T1 2 3 4 5 T4 T2 T1 T2 T1 T1 T2 T1 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... t Intervalle, in denen keine periodische EZ-Task abgearbeitet wird (z.B. [3.8, 4] oder [5, 6]) → für aperiodische Jobs aperiodische Jobs beim Eintreffen in Warteschlange (FIFO bzw. priorisiert) eingeordnet 43 / 103 Struktur des Schedule Datenstruktur zur Beschreibung des Schedule: Tabelle über 1 Hyperperiode mit Einträgen (tk , T (tk )) mit k = 0, 1, . . . , n − 1 tk T (tk ) Schedulingzeitpunkte assoziierte Tasks, bzw. „I“ für idle Der Schedule für das Beispiel sähe also so aus: (0, T1 ) (1, T3 ) (2, T2 ) (3.8, I) (4, T1 ) (5, I) (6, T4 ) .. . (19.8, I) 44 / 103 Implementierung eines zeitgesteuerten Schedulers (Cyclic Executive) aktueller Tabelleneintrag k = 0 Timer konfigurieren, so dass Interrupt zu t0 ausgelöst wird while (1) { Timerinterrupt bestätigen sichere Kontext des abgearbeiteten aperiodischen Jobs (falls nötig) aktuelle Task T := T[k] nächster Tabelleneintrag k = ++k mod(N) Timer auf nächsten Taskstart konfigurieren if (T==’I’) aperiodischen Job ausführen (falls vorhanden) else T ausführen sleep } I ungünstig: Aktivierung des Schedulers nach jedem Job (hoher Overhead; besonders bei sehr kurzen Jobs) 45 / 103 Zur Struktur zyklischer Schedules I günstig, die Hyperperiode (Länge H) in gleichlange Frames zu strukturieren I Verringerung der Anzahl der Aktivierungen des Schedulers: nur noch am Anfang jedes Frames I Vereinfachung: Timer besitzt konstante Periode (keine Reprogrammierung mehr nötig) I innerhalb des Frames werden Jobs einfach nacheinander aufgerufen I minimiert zudem Anzahl vorzeitiger Beendigungen aperiodischer Tasks H t t+f t+2f t+3f t+H 1 Frame 46 / 103 Überlegungen zur Framegröße 1.) keine vorzeitige Beendigung (preemption) an Framegrenze Framegröße f mindestens so groß wie größte Ausführungszeit eines Jobs f ≥ max(te,i ) ∀i : 1 ≤ i ≤ n (1) 2.) Framegröße f ganzzahliger Teiler der Hyperperiode H, sonst Schedule u. U. sehr lang (kgV(f , H)). f |H (2) 3.) Framegröße f so klein, daß zwischen tr und td jedes Jobs mindestens ein kompletter Frame liegt (erleichtert Scheduler die Entscheidung, ob jeder Job seine Deadline einhält; Platzierung des Jobs in diesem Frame garantiert Einhaltung aller Zeitbedingungen → erleichtertes Scheduling). 47 / 103 Überlegungen zur Framegröße Ableitung des dritten Frame Size Constraints I Ein Job J werde in einem Frame k der Größe f zu tr bereit (mit t ≤ tr ≤ t + f ), besitze eine relative Deadline von td und eine Periode von tp . Frame k t Frame k + 1 t +f tr Frame k + 2 t + 2f a t + 3f td tp Damit wenigstens ein vollständiger Frame (nämlich Nr. k + 1) zwischen tr und td liegt, muss der Abstand a zwischen tr und der Framegrenze (t + f ) plus die Länge des (dazwischenliegenden) Frames k + 1 kleiner oder wenigstens gleich der Deadline des Jobs sein: a + f ≤ td (3) 48 / 103 Überlegungen zur Framegröße Ableitung des dritten Frame Size Constraints II Für tp 6= f variiert der Abstand a. Er wird genau dann maximal, wenn tr so nahe wie möglich hinter (aber nicht genau auf, denn dann ist er 0) dem Framestart t liegt. Der minimale Abstand zwischen Framestart t und tr wird durch das Verhältnis zwischen tp und f bestimmt. Wenn tr irgendwann einmal synchron zu einem Framestart lag, dann gilt: tr − t ≥ ggT(f , tp ) Damit können wir für a formulieren: a ≤ f − ggT(f , tp ) Dies setzen wir in Gleichung 3 ein und erhalten für t 6= tr : f − ggT(f , tp ) + f ≤ td (4) 49 / 103 Überlegungen zur Framegröße Ableitung des dritten Frame Size Constraints III Falls Framestart t und Bereitzeit tr synchron liegen (t = tr ), dann ist offensichtlich f ≤ td hinreichend. Da stets 1 ≤ ggT(f , tp ) ≤ f gilt, ist diese Bedingung automatisch erfüllt, wenn Gleichung 4 erfüllt ist; dieser Fall muss also nicht gesondert betrachtet werden. Somit kann die dritte Vorschrift für die Framegröße formuliert werden zu: 2f − ggT f , tp,i ≤ td,i ∀i | 1 ≤ i ≤ n (5) Die Gleichungen 1, 2 und 5 werden Frame Size Constraints3 genannt. Ihre Einhaltung gestattet die Verwendung leistungsfähiger Schedulingverfahren und einer verbesserten Cyclic Executive. 3 Theodore P. Baker und Alan C. Shaw. “The Cyclic Executive Model and Ada”. In: Real-Time Systems Journal 1.1 (1989). 50 / 103 Überlegungen zur Framegröße Beispiel zu Frame Size Constraints Gegeben: 3 periodische Tasks Ti mit i tp,i td,i te,i 1 15 14 1 2 20 26 2 3 22 22 3 Gesucht: Hyperperiode H und günstige Framegrößen f Lösung: H = kgV(15, 20, 22) = 660 1.) f ≥ 3 2.) f ∈ {2, 3, 4, 5, 6, 10, 11, 12, 15, 20, 22, . . .} 3.) f ≤ 6 ⇒ f ∈ {3, 4, 5, 6} 51 / 103 Überlegungen zur Framegröße Job Slicing Beispieltaskmenge: T1 (4, 1) T2 (5, 2, 7) T3 (20, 5). H = 20, aber 1.) f ≥ 5 und 3.) f ≤ 4. Was tun? Idee: Partitionierung langer Tasks in Subtasks, um Kriterium 1 leichter erfüllen zu können. Nachteil: mehr Kontextwechsel nötig, da dekomponierte Task vorzeitige Beendigungen benötigt Dekomposition von T3 (20, 5) in T3,1 (20, 1), T3,2 (20, 3) und T3,3 (20, 1); damit: 1.) f ≥ 3 2.) f ∈ {2, 4, 5, 10, 20} 3.) f ≤ 4 ⇒ f = 4. 52 / 103 Überlegungen zur Framegröße Struktur eines Schedule mit Job Slicing T3,1 T1 0 T2 T3,3 T1 4 T3,2 T1 8 T2 T1 12 T2 T1 T2 16 H T1 20 21 ... t Abbildung: Struktur eines Schedule mit Job Slicing 53 / 103 Graphentheorie: Flüsse in Netzwerken I I I I Eingabe ist Problembeschreibung in Form eines gerichteten Graphen G = (V , E) V : Knotenmenge, E: Kantenmenge jeweils ein Knoten für Quelle Q und Senke S jede Kante e ∈ E besitzt eine Kapazität c(e) und einen aktuellen Fluss ϕ(e). A 4 B 1 4 Quelle 1 Senke 2 2 3 5 C 2 D Abbildung: Beispiel für Netzwerk (noch ohne Fluss) 54 / 103 Flüsse in Netzwerken (Network Flows) Regeln I für alle Knoten außer Q und S muss die Summe der Zuflüsse gleich der Summe der Abflüsse sein („Kirchhoff-Regel“) I Gesucht ist der maximale Durchfluß zwischen Quelle und Senke unter Beachtung der Kantenkapazität I es existieren schnelle Lösungsalgorithmen mit polynomialem Aufwand I (u.a.) für viele Scheduling-Probleme nutzbar 55 / 103 Der Algorithmus von Ford und Fulkerson (1956) Definition des Restgraphen Def. Gegeben sei ein Netzwerk G = (V , E) mit einem aktuellen Fluss ϕ. Der zugehörige Restgraph RG = (V , Eϕ ) hat die gleiche Knotenmenge V wie G. Für seine Kanten gilt: I ∀e ∈ E mit ϕ(e) < c(e) gibt es eine Kante e in Eϕ mit cϕ (e) = c(e) − ϕ(e) („Für jede Kante in G, deren aktueller Fluss kleiner ist als ihre Kapazität, gibt es eine Kante gleicher Richtung in RG, deren Kapazität die Differenz aus Kapazität und aktuellem Fluss in G ist.“) I ∀e ∈ E mit ϕ(e) > 0 gibt es eine umgekehrte Kante e0 mit ϕ(e0 ) = ϕ(e) („Für jede Kante in G, durch die etwas fließt, gibt es eine Kante in umgekehrter Richtung und gleichem Fluss in RG“) 56 / 103 Der Algorithmus von Ford und Fulkerson (1956) Beispiel zum Restgraph A 4,2 B 1,0 4,2 Quelle 1,0 Senke 2,0 2,2 3,0 5,2 C 2,0 D Abbildung: Fluss in Netzwerk, Kantenbewertung: (c(e), ϕ(e)) 2 A 2 B 2 1 2 Q 1 S 2 2 3 3 C 2 D 2 Abbildung: zugehöriger Restgraph 57 / 103 Der Algorithmus von Ford und Fulkerson (1956) 1. START, initialer Fluss ϕ = 0. 2. Markiere Q. 3. Markiere weitere Knoten nach folgender Regel: „Wenn x markiert ist, und es gibt im RG eine Kante e = (x, y ), dann markiere y , wenn dieser noch unmarkiert ist.“ 4. S markiert? nein → Maximaler Fluss erreicht; END. 5. Erhöhung des aktuellen Flusses ϕ durch Adaption des RG: Kanten, die auf dem Weg von Q nach S liegen, seien ei . Ermittle δ = min(cϕ (ei )). Adaption des Flusses entlang des neuen Weges: I I wenn ei ∈ E, dann ϕ(ei ) := ϕ(ei ) + δ wenn rev(ei ) ∈ E, dann ϕ(ei ) := ϕ(ei ) − δ 6. Aufhebung aller Markierungen, GOTO 2. 58 / 103 Der Algorithmus von Ford und Fulkerson (1956) I einfachste Lösung des Problems I viele weitere Algorithmen existieren, die geringere Zeitkomplexität aufweisen, aber schwieriger zu verstehen sind, z. B. : 1969 Edmonds/Karp O(n5 ) 1970 Dinic O(n4 ) 1988 Goldberg/Tarjan O(n3 ) 59 / 103 Beispiel: 1. A 4 B 4 Q 1 2 δ=2 3 5 2 C 3. 2 D 4. 4 1 4 1 2 neuer Weg: Q−A−B−D−S δ=2 3 2 2 4 4 2 1 5. neuer Weg: Q−C−D−S S 2 3 2 2. 1 2 6. 2 60 / 103 2 Scheduling-Problem als Netzwerkfluss Annahmen: Unterbrechung von Tasks immer möglich, Tasks unabhängig, alle möglichen Framegrößen f ermittelt Idee: Beginnend bei Maximum alle Framegrößen f testen, ob Schedule möglich (je kleiner f , desto ungünstiger). Konstruktion des Netzwerks 1. für jeden Job und jedes Frame einen Knoten, zusätzlich Quelle Q und Senke S 2. von Q zu jedem Job Ji eine Kante mit Kapazität te,i 3. von jedem Frame zu S eine Kante mit Kapazität f (Framegröße) 4. von Job Ji zu Frame eine Kante mit Kapazität f gdw. Job gemäß Timingconstraints in Frame abgearbeitet werden kann: → Ein Job Ji kann nur in den Frames geplant werden, deren Startzeit größer oder gleich tφ,i ist und die nicht später enden als td,i ! 61 / 103 Scheduling-Problem als Netzwerkfluss Ermittlung des maximalen Flusses von Jobs zu Frames mittels geeignetem Verfahren. P Ist der maximale Fluss durch den Graphen ϕ größer als i te,i , dann repräsentiert der Graph einen brauchbaren Schedule. Anordnung der Jobs in den Frames ist bei Einhaltung der Timingconstraints beliebig. 62 / 103 Beispiel: T1 (4, 3) und T2 (6, 1.5) Bestimmung Framegröße und Jobparameter 2 periodische Tasks: T1 (4, 3) und T2 (6, 1.5) I H = 12, f = 4 3 Frames in Hyperperiode: f1 [0, 4), f2 [4, 8), f3 [8, 12) I mehrere Aktivierungen der Tasks in H, d.h. individuelle Jobs Jx (tφ , td , te ) mit verschiedenen Bereitzeiten und Deadlines I T1 → J1,1 (0, 4, 3), J1,2 (4, 8, 3), J1,3 (8, 12, 3) I T2 → J2,1 (0, 6, 1.5), J2,2 (6, 12, 1.5) 63 / 103 Beispiel: T1 (4, 3) und T2 (6, 1.5) Zugehöriger Netzflussgraph Jobs Frames J1,1 (0,4,3) 4 f1 [0,4) J1,2 (4,8,3) 3 4 Q 4 4 3 J1,3 (8,12,3) 3 4 S f2 [4,8) 1.5 4 4 1.5 J2,1 (0,6,1.5) 4 f3 [8,12) J2,2 (6,12,1.5) Es gilt ϕ = 11 < unmöglich. P i te,i = 12, ein Schedule ist also für f = 4 64 / 103 Beispiel: T1 (4, 3) und T2 (6, 1.5) Ausweg: Jobslicing; neue Jobparameter Verkleinerung des Frames auf f = 2; somit I 6 Frames: f1 [0, 2), f2 [2, 4), f3 [4, 6), f4 [6, 8), f5 [8, 10), f6 [10, 12) I Dekomposition der Jobs von T1 : alt neu J1,1 (0, 4, 3) J1,2 (4, 8, 3) J1,3 (8, 12, 3) J111 (0, 4, 2) J121 (4, 8, 2) J131 (8, 12, 2) J112 (2, 4, 1) J122 (6, 8, 1) J132 (10, 12, 1) I J2,1 und J2,2 bleiben unverändert I Anzahl Jobs erhöht sich von 5 auf 8 65 / 103 Beispiel: T1 (4, 3) und T2 (6, 1.5) Netzwerk bei Jobslicing Jobs Frames J111 2,2 2,2 0,2 J112 f1 0,2 1,2 1,1 2,2 f2 J121 1.5,2 2,2 1,2 2,2 1,1 J122 f3 1,2 Q 2,2 0.5,2 0.5,2 J131 S 2,2 f4 2,2 1,1 J132 1.5,1.5 1.5,1.5 2,2 2,2 0.5,2 1,2 f5 J21 2,2 0,2 0,2 J22 f6 1,2 66 / 103 Beispiel: T1 (4, 3) und T2 (6, 1.5) Ergebnis P Für das neue Netzwerk gilt ϕ = 12 = i te,i , somit kann man mit f = 2 einen gültigen Schedule ableiten: J 21 J 121 J 111 J 111 J 112 J 21 0 2 J 121 4 J 22 J 122 6 J 131 J 131 J 132 J 22 8 10 ... 12 t Abbildung: Gültiger Schedule für Framegröße f = 2 67 / 103 Zusammenfassung: Off-Line-Scheduling Die Frage, ob On-Line- oder Off-Line-Scheduling geeigneter für Echtzeitsysteme ist, wird in der Fachwelt kontrovers diskutiert45 , und ist nicht einfach zu beantworten. Für On-Line-Scheduling sprechen einerseits: I Off-Line verfahren sind inhärent inflexibel (komplette Neuberechnung nötig bei Modifikationen an der Taskmenge). I Es existieren On-line-Verfahren mit sehr geringem Schedulingoverhead (RMS, DMS, EDF). Andererseits sind On-Line-Verfahren wie RMS und DMS nicht generell optimal, wie im folgenden Abschnitt gezeigt wird. Das bedeutet, es gibt Taskmengen, die per Off-Line-Verfahren planbar sind, per On-Line-Verfahren jedoch nicht geplant werden können. 4 N. Audsley, K. Tindell und A. Burns. “The End of the Line for Static Cyclic Scheduling?” In: Proceedings of the Fifth Euromicro Workshop on Real-time Systems. Oulu, Finland: IEEE Computer Society Press, Juni 1993, S. 36–41. 5 Jia Xu und David Lorge Parnas. “Priority Scheduling Versus Pre-Run-Time Scheduling”. In: International Journal of Time-Critical Computing Systems 18 (2000), S. 7–23. 68 / 103 On-Line-Scheduling periodischer Tasks Einführung Modellannahmen: ein Prozessor, unabhängige Tasks, keine aperiodischen und sporadischen Tasks Unterscheidung: 1. feste (statische) Prioritäten: jeder Job einer Task hat die gleiche Priorität 2. variable (dynamische) Prioritäten: Jeder Job erhält eine individuelle Priorität 2.1 feste Job-Prioritäten (“task-level-dynamic, job-level-fixed”): eine einem Job zugeordnete Priorität bleibt konstant 2.2 variable Job-Prioritäten (“job-level-dynamic”): die einem Job zugeordnete Priorität kann sich ändern Dynamische Verfahren sind flexibler und lasten den Prozessor möglicherweise besser aus, aber das korrekte Systemverhalten statischer Verfahren ist weitaus leichter zu garantieren! 69 / 103 Einplanungstests On-Line-Schedulingverfahren treffen zur Laufzeit Entscheidungen der Art „Gegeben ist die Taskmenge T = {T1 , T2 , . . . , Tn } der aktuell abgearbeiteten Tasks. Ist es möglich, eine neue Task Tn+1 in die Abarbeitung aufzunehmen, so daß alle Tasks ihre Deadlines einhalten?“ „Ja“ → T := T ∪ Tn+1 „Nein“ → Tn+1 wird abgewiesen Diese Entscheidung, der Einplanungstest (schedulability test), wird zur Laufzeit gefällt ⇒ einfaches Verfahren wichtig. 70 / 103 Ratenmonotones Scheduling (RMS) Verfahren Algorithmus: Die Priorität einer Task ergibt sich aus ihrer Periode. Je höher die Rate einer Task (d.h., je kürzer ihre Periode) desto höher ihre Priorität. Beispiel: 3 (periodische) Tasks Ti (tp,i , te,i ) T1 (4, 1) T2 (5, 2) da tp,1 < tp,2 < tp,3 T3 (20, 5) ⇒ Prio(T1 ) > Prio(T2 ) > Prio(T3 ) Bereitzeiten der individuellen Jobs: tr ,1 = {0, 4, 8, 12, 16, 20, . . .} tr ,2 = {0, 5, 10, 15, 20, . . .} tr ,3 = {0, 20, 40 . . .} I Ältestes publiziertes Verfahren6 ! 6 C. L. Liu und James W. Layland. “Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment”. In: Journal of the ACM 20.1 (Jan. 1973), S. 46–61. 71 / 103 Ratenmonotones Scheduling (RMS) Aus Beispiel resultierender Plan Plan für T1 (4, 1), T2 (5, 2), T3 (20, 5): T3 ... T2 ... T1 ... RMS T1 T2 0 2 T3 T1 T2 4 6 T3 T1 T3 T2 8 10 T1 T3 12 14 T2 T1 T2 16 18 T1 20 ... t Vorzeitiger Prozessorentzug zu t = 4, 8, 10 (T3 ) und t = 16 (T2 ). 72 / 103 Ratenmonotones Scheduling (RMS) Weiteres Beispiel ⇒ T1 (2, 0.9) T2 (5, 2.3) Prio(T1 ) > Prio(T2 ) Bereitzeiten: tr ,1 = {0, 2, 4, 6, 8, 10, . . .}, tr ,2 = {0, 5, 10, 15, . . .} T1 0 0.9 0.9 0.9 0.9 0.9 J 1,1 J 1,2 J 1,3 J 1,4 J 1,5 1 T2 0 1 2 3 4 1.1 1.1 J 2,1 J 2,1 2 3 5 0.1 4 6 7 8 1.0 1.1 J 2,2 J 2,2 5 6 7 J 2,1 9 10 t 10 t 0.2 8 9 J 2,2 T2 wird „im Hintergrund“ von T1 ausgeführt. Für die Auslastung gilt: u = n X te,i i=1 tp,i = 0.91. 73 / 103 Ratenmonotones Scheduling (RMS) Eigenschaften I höchstpriorisierte Task wird nie „gestört“ (unterbrochen, verzögert) I je größer Periode, desto mehr Unterbrechungen und Verzögerungen (abhängig von Last) I leicht zu implementieren I Aufwand zur Laufzeit gering (viel geringer als EDF), da statische Prioritäten I im Überlastfall gute Vorhersagbarkeit: von n Tasks werden garantiert nur k (k < n) beeinflußt, die k niedrigstpriorisierten (k ist bestimmbar) Vorteil gegenüber EDF! I Einplanbarkeitstest nicht so simpel wie bei EDF (Sonderfall: einfach periodische Taskmengen) 74 / 103 Deadlinemonotones Scheduling (DMS) Idee: Wenn relative Deadlines von den Perioden differieren, müssen diese für die Priorisierung genutzt werden. Algorithmus: Je näher die (relative) Deadline, desto größer die Priorität. Beispiel (DMS): 3 (periodische) Tasks Ti (tφ,i , tp,i , te,i , td,i ) T1 (50, 50, 25, 100) u1 = 0.5 T2 (0, 62.5, 10, 20) u2 = 0.16 T3 (0, 125, 25, 50) u3 = 0.2 PrioDMS (T2 ) > PrioDMS (T3 ) > PrioDMS (T1 ) T1 J 1,2 0 50 62.5 85 100 125 150 185 225 250 t 200 250 t 200 250 t 200 J 2,3 T2 0 10 50 72.5 100 T3 135 150 197.5 J 3,2 0 35 50 100 160 150 75 / 103 Deadlinemonotones Scheduling (DMS) Vergleich mit RMS td = tp DMS wird zu RMS td 6= tp DMS besser als RMS (d.h. generiert u. U. noch einen brauchbaren Schedule, wenn RMS bereits nicht mehr in der Lage dazu ist) Beispiel: der per RMS generierte Schedule der Taskmenge aus dem vorigen Beispiel: T1 (50, 50, 25, 100), T2 (0, 62.5, 10, 20), T3 (0, 125, 25, 50) I nun PrioRMS (T1 ) > PrioRMS (T2 ) > PrioRMS (T3 ) I I T1 ... 0 50 75 100 125 150 175 225 250 t 200 250 t 200 250 t 200 T2 0 10 50 85 100 135 150 197.5 Deadline verletzt! T3 0 35 50 100 150 Deadline verletzt! 76 / 103 Deadlinemonotones Scheduling (DMS) Vergleich mit RMS I T2 verletzt seine (absolute) Deadline td = 82.5 (erst zu t=85 beendet) und T3 verletzt seine (absolute) Deadline td = 175 (erst zu t = 185 beendet). I Tasks mit kurzer relativer Deadline (hier T2 mit tp = 62.5, td = 20) werden durch RMS benachteiligt. Weiterführende Literatur: Neil C. Audsley. Deadline Monotonic Scheduling. Techn. Ber. YCS 146. Department of Computer Science, University of York, Sep. 1990 77 / 103 EDF mit periodischen Tasks Beispiel: Taskpaar aus Beispiel 2 für RMS Ti (tp,i , te,i ) = T1 (2, 0.9), T2 (5, 2.3) 0 1 2 3 0 1 5 2 3 6 7 4 5 8 9 J 2,2 J 2,2 J 2,1 J 2,1 T2 4 J 1,5 J 1,4 J 1,3 J 1,2 J 1,1 T1 6 7 ... 10 t ... 8 9 10 I t=0: td,1 = 2, td,2 = 5 ⇒ J1,1 abgearbeitet I t=2: td,1 = 4, td,2 = 5 ⇒ J1,2 abgearbeitet I t=4: td,1 = 6, td,2 = 5 ⇒ J2,1 abgearbeitet I d.h., im Intervall [0,4) hat T1 die höhere Priorität und im Intervall [4,5) hat T2 die höhere Priorität t 78 / 103 EDF mit periodischen Tasks I ⇒ dynamische Priorität auf Task-Level (Priorität individueller Jobs ist fest) I → höherer Schedulingaufwand als R/DMS, da Neuberechnung der Prioritäten nötig Einplanungstest für EDF: Gegeben: n unabhängige, periodische Tasks, 1 Prozessor Das System ist nach EDF schedulbar, wenn gilt: n X i=1 te,i ≤1 min(td,i , tp,i ) . (6) 79 / 103 LST mit periodischen Tasks Beispiel: T1 (2, 0.8) T2 (5, 1.5) T3 (5.1, 1.5) t 0 1.2 3.5 3.6 ts,1 ts,2 ts,3 0.8 – 2.7 2.8 2 1.2 2.7 1.6 0.8 4 1.2 0.7 0.8 4.3 0.9 – 0.5 0.8 1 2 3 4 5 0 1 6 t 0.3 J 2,2 J 2,1 T2 5.4 – 3.1 3.3 J 1,3 J 2,1 1.2 4.6 0.6 – – 0.8 J 1,2 T1 J 1,1 0 2.8 – 1.9 0.8 2 3 4 J 3,1 5 6 t 4 5 6 t 1.2 J 3,1 T3 0 1 2 3 80 / 103 LST mit periodischen Tasks ⇒ dynamische Priorität auf Task-Level und auf Job-Level! (z. B. J2,1 hat zu t = 0 mittlere, zu t = 2 niedrigste und zu t = 4 höchste Priorität). I „nonstrict“ LST, da Berechnung der Slackzeiten nur, wenn Zustandswechsel eines Jobs (komplettiert oder bereit) I eigentliches („strict“) LST müßte jedesmal, wenn eine Änderung einer Slackzeit auftritt, die Prioritäten neu verteilen (Aufwand!) Situation in letztem Beispiel zu t = 3.9: ts,2 = td,2 − te,2 − t = 5 − 0.3 − 3.9 = 0.8 ts,3 = td,3 − te,3 − t = 5.1 − 0.4 − 3.9 = 0.8 (J2,1 „überholt“ J3,1 in der Priorität.) Aufwandsproblem zur Laufzeit (“runtime overhead”): ständiges Überwachen aller slack times nötig. Daher strict LST nicht praktikabel. 81 / 103 Periodisches EDF und Überlast Frage: Wie verhält sich EDF, wenn u > 1? 1. Beispiel: T1 (2, 1) T2 (5, 3) u= 0 1 2 3 0 1 4 5 6 7 8 2 3 4 9 Deadline verletzt! J 2,2 J 2,1 J 2,1 T2 J 1,5 J 1,3 J 1,4 J 1,2 J 1,1 T1 1 3 11 + = = 1.1 2 5 10 5 6 7 8 9 10 t Ein Job einer Task (J1,5 ) verpaßt seine Deadline zu t = 10. 82 / 103 Periodisches EDF und Überlast 2. Beispiel: T1 (2, 0.8) u= 0.8 T2 0 0.8 3.5 11 + = = 1.1 2 5 10 0.8 0.8 1 2 3 4 1.2 2.3 J 2,1 J 2,1 1 2 0.8 J 1,3 J 1,4 J 1,2 T1 J 1,1 0 T2 (5, 3.5) 3 4 5 6 0.1 7 J 2,2 8 9 3.4 Deadline verletzt! J 2,2 5 6 7 8 9 10 t Alle Jobs von T2 sowie J1,5 von T1 verpassen ihre Deadline. 83 / 103 Periodisches EDF und Überlast Problem: Trotz gleicher Last unterschiedliches Verhalten. Es gibt keinen (einfachen) Test für EDF, welche Jobs bei Überlast ihre Deadline verpassen. Schlußfolgerungen: I Bei EDF kann bei Überlast keine Aussage getroffen werden, welcher Job (bzw. welche Task) seine Deadline noch erreicht. I Die Verletzung einer Deadline bei EDF kann die Verletzung weiterer Deadlines auch anderer Tasks bewirken (keine “Erholung” von einer temporären Überlastung möglich) I ⇒ EDF nur zum Scheduling von periodischen Tasks geeignet, wenn u ≤ 1 garantiert. 84 / 103 Einplanbarkeitstests für RMS Übersicht I I viele verschiedene (unterschiedlicher Rechenaufwand und Pessimismus) behandeln: 1. Test für einfach periodische Taskmengen 2. Ratenmonotone Analyse (exakt, aufwändig) 3. Test nach Liu/Layland (pessimistisch, simpel) I weitere Tests in EZS2 (u.a. Hyperbolic Bound, Test von Burchard), Grundlage für partitionierendes Multiprozessor-Scheduling 85 / 103 Einplanbarkeitstests für RMS RMS-Test für einfach periodische Taskmengen Definition: Wenn innerhalb einer Taskmenge T = {T1 , T2 , . . . , Tn } für jedes Taskpaar Ti , Tj ∈ T gilt: tp,i < tp,j ⇒ tp,j = m · tp,i m∈N so nennt man T einfach periodisch. Gegeben: n unabhängige, periodische Tasks, 1 Prozessor, Taskmenge einfach periodisch Das System ist nach RMS schedulbar, wenn gilt: u= n X i=1 te,i ≤1 min(td,i , tp,i ) . (7) 86 / 103 Einplanbarkeitstests für RMS Ratenmonotone Analyse Voraussetzung: n periodische, unabhängige Tasks mit beliebigen Perioden (keine einfach periodische Taskmenge) Frage: Wann ist die Antwortzeit tresp,i = tc,i − tr ,i eines Jobs Ji maximal, wenn nach RMS geschedult wird? Vermutung: Wenn zu seiner Bereitzeit tr ,i alle höherpriorisierten Jobs (d.h. Jobs mit kürzerer Periode) ebenfalls bereit werden. Der Job wird dann maximal verzögert. Dieser spezielle Zeitpunkt wird kritischer Zeitpunkt tcrit,i des Jobs Ji genannt. 87 / 103 Ratenmonotone Analyse Veranschaulichung „Kritischer Zeitpunkt“ A) T1 t T2 t tresp,2 B) T1 t T2 t C) tresp,2 T1 t T2 t tresp,2 88 / 103 Ratenmonotone Analyse Begriff des Kritischen Zeitpunkts Jeweils 2 Tasks mit Prio(T1 ) > Prio(T2 ), 3 mögliche Fälle A) tr ,1 = tr ,2 B) tr ,1 < tr ,2 Verzögerung von J2 geringer C) tr ,1 > tr ,2 Verzögerung von J2 nicht größer als im Fall A) ⇒ Wird ein Job zu seinem kritischer Zeitpunkt bereit, so wird seine Antwortzeit maximal. Idee eines Einplanbarkeitstests für RMS: „Wenn die maximale Antwortzeit einer Task kleiner ist als ihre Periode (= Deadline), dann kann die Task gefahrlos nach RMS eingeplant werden.“ Eine Menge an Tasks kann folglich nach RMS geschedult werden, wenn diese Bedingung für alle Tasks aus der Menge gilt. 89 / 103 Ratenmonotone Analyse Iteratives Verfahren Voraussetzungen: I Tasks T1 , . . . , Ti−1 haben eine höhere Priorität und sind nach dieser absteigend geordnet I Startwert der Iteration: t (0) = te,i I iteriert, bis eine der Abbruchbedingungen erfüllt I Iteration ist monoton wachsend, d.h., t (l+1) ≥ t (l) ∀l ∈N Iterationsvorschrift: t (l+1) = te,i + i−1 (l) X t k =1 tp,k · te,k (8) Abbruchbedingungen: 1. t (l) > tp,i Task Ti kann nach RMS nicht geschedult werden, da im worst case Verzögerung über Deadline hinaus, Konvergenz; tmaxresp,i = t (l) 2. t (l+1) = t (l) RMS geschedult werden. Task Ti kann nach 90 / 103 Ratenmonotone Analyse Beispiel Gegeben: T1 = (3, 1) T2 = (5, 1.5) T3 = (7, 1.25) Frage: „Ist T3 nach RMS einplanbar?“ Iterationsgleichung: t (l+1) = 1.25 + (l) t (l) t · 1+ · 1.5 3 5 Iteration: t (0) t (1) t (2) t (3) = te,3 = 1.25 1.25 1.25 = 1.25 + + · 1.5 = 3.75 3 5 3.75 3.75 = 1.25 + + · 1.5 = 4.75 3 5 4.75 4.75 = 1.25 + + · 1.5 = 4.75 3 5 t (3) = t (2) = 4.75 < tp,3 = 7 RMS schedulbar. T3 zusammen mit T1 und T2 nach 91 / 103 Einplanungstext für RMS nach Liu/Layland Satz: Für eine Menge von n unabhängigen periodischen Tasks kann nach RMS ein brauchbarer Schedule erzeugt werden, wenn die Auslastung u die folgende (hinreichende, nicht notwendige) Bedingung erfüllt7 : √ 1 n 2−1 . (9) u ≤ uRM (n) = n 2 n − 1 = n Bemerkungen: I I Funktion fällt monoton mit steigendem n lim uRM (n) = ln(2) ≈ 0.693 n→∞ I pessimistisches Verfahren: falls Bedingung nicht erfüllt, ist trotzdem noch gültiger Schedule möglich (Voraussetzung: u < 1) I (viel) einfacher als ratenmonotone Analyse 7 C. L. Liu und James W. Layland. “Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment”. In: Journal of the ACM 20.1 (Jan. 1973), S. 46–61. 92 / 103 Einplanungstext für RMS nach Liu/Layland Verlauf der Funktion uRM (n) 1 0.95 0.9 0.85 0.8 0.75 0.7 0.65 0.6 2 4 6 8 10 12 14 16 18 20 93 / 103 Einplanungstext für RMS nach Liu/Layland Beispiel Beispiel: T1 = (3, 1) T2 = (5, 1.5) T3 = (7, 1.25) 1 1.5 1.25 + + ≈ 0.812 3 5 7 √ 3 uRM (3) = 3 2 − 1 ≈ 0.800 u = u > uRM (3) d.h., Einplanungstest 2 weist die Taskmenge als nicht planbar zurück, es existiert jedoch ein Plan (vgl. vorangegangenes Beispiel). 94 / 103 Optimalität von RMS Satz: Unter den Verfahren mit fester Priorität ist RMS optimal. Beweis: Bereits bewiesen: Antwortzeit einer Task maximal zu ihrem kritischen Zeitpunkt. Idee: I Betrachtung zweiter Tasks T1 , T2 I zu zeigen: wenn es für das Taskpaar einen nicht-RMS-basierten gültigen Schedule gibt, dann gibt es für dieses Taskpaar auch stets einen gültigen Schedule nach RMS. I danach Generalisierung auf n Tasks 95 / 103 Optimalität von RMS Beweis, Teil II I T = {T1 , T2 } mit tp,1 < tp,2 I wenn es einen gültigen (non-RMS-)-Schedule gibt, dann gilt offenbar: Prio(T1 ) < Prio(T2 ) te,1 + te,2 ≤ tp,1 te,2 ≤ tp,1 − te,1 Prio T2 also (10) te,2 t tp,2 te,1 T1 tp,1 2tp,1 3tp,1 t (Im Worst Case muss in der Periode von T1 noch Platz sein für einen ganzen Job von T2 , da letzterer nach Vereinbarung die höhere Priorität hat.) 96 / 103 Optimalität von RMS Beweis, Teil II I Es gelte nun Prio(T1 ) > Prio(T2 ). I folgende Bedingung ist für Brauchbarkeit des Schedule hinreichend: tp,2 kte,1 + (tp,2 − ktp,1 ) + te,2 ≤ tp,2 mit k = tp,1 Prio T1 tp,2 − ktp,1 k -mal te,1 te,1 te,1 tp,1 T2 0 te,2 (11) 2tp,1 3tp,1 t 00 te,2 tp,2 t 0 00 te,2 = te,2 + te,2 97 / 103 Optimalität von RMS Beweis, Teil III Umgestellt nach te,2 ergibt sich: te,2 ≤ k (tp,1 − te,1 ) Diese Bedingung folgt8 unmittelbar aus Ungleichung 10: te,2 ≤ tp,1 − te,1 ≤ k (tp,1 − te,1 ) (12) , da k ≥ 1 und tp,1 ≥ te,1 . Damit ist gezeigt, dass, wenn zwei Tasks T1 , T2 nach einem non-RMS-Verfahren planbar sind, diese auch stets nach RMS planbar sind, also ihre Priorität ausgetauscht werden kann. Bei einer Menge von mehr als 2 Tasks muss diese Vertauschung entsprechend permutiert werden. RMS ist damit unter den Verfahren mit fester Priorität optimal. 8 überraschenderweise! 98 / 103 Generelle Optimalität von RMS Satz: Ratenmonotones Scheduling ist nicht generell optimal. Beweisidee: Angabe einer Taskmenge, für die mittels RMS kein brauchbarer Schedule erzeugt werden kann und Konstruktion eines brauchbaren Schedules. I T = {T1 (8, 4), T2 (12, 5)} I Beide Einplanungstests schlagen fehl. T1 DL verletzt! T2 0 2 4 6 8 10 12 14 16 18 20 22 24 t Abbildung: (ungültiger) Schedule nach RMS 99 / 103 Generelle Optimalität von RMS Durch Verzögerung von T1 kann jedoch einen brauchbarer Schedule konstruiert werden. Verzögerung T1 T2 0 2 4 6 8 10 12 14 16 18 20 22 24 t Abbildung: (gültiger) Schedule ⇒ RMS ist nicht optimal Der konstruierte Schedule kann durch kein prioritätsbasiertes Verfahren mit statischen Prioritäten erzeugt werden! 100 / 103 Was haben wir gelernt? I Klassifizierung von Schedulingverfahren (On-Line vs. Off-Line, zeit- vs. ereignisgesteuert, statische vs. dynamische Prioritäten, präemptiv vs. kooperativ) I Bsp. für Off-Line: Scheduling mittels Network Flows, Algorithmus von Ford und Fulkerson prioritätsbasiertes On-Line-Scheduling: I I I I I statische Prioritäten: RMS dynamische Prioritäten (auf Taskebene): EDF weniger wichtig: DMS, LST 3 verschiedene Einplanungstests für RMS I I I Für einfach periodische Taskmengen Ratenmonotone Analyse Test nach Liu/Layland 101 / 103 Ausblick Multiprozessorscheduling! I partitionierende vs. globale Verfahren I weitere Einplanungstests für RMS 102 / 103 Literaturempfehlungen I Jane W. S. Liu. Real-Time Systems. Prentice Hall, 2000, Kapitel 5 und 6 I Dirk Müller. “Schedulability Tests for Real-Time Uni- and Multiprocessor Systems”. Habilitationsschrift. Chemnitz University of Technology, 2013 103 / 103