Upload
rupprecht-nartker
View
106
Download
0
Embed Size (px)
Citation preview
Verbesserung der Verbesserung der Reaktivität des Reaktivität des Linux-KernelsLinux-Kernels
Steffen MazanekSteffen Mazanek
GliederungGliederung
- Einführung: Was ist real-time Fähigkeit, Einführung: Was ist real-time Fähigkeit, wofür braucht man sie und was ist zur Zeit wofür braucht man sie und was ist zur Zeit mit Linux in diesem Bereich möglich?mit Linux in diesem Bereich möglich?
- Wie kann man die Reaktivität verbessern?Wie kann man die Reaktivität verbessern?- Preemption PatchPreemption Patch- Low Latency PatchLow Latency Patch- RTLinux RTLinux
- AusblickAusblick
Was ist real-time?Was ist real-time?
IEEE: a real-time system is a system IEEE: a real-time system is a system whose correctness includes its response whose correctness includes its response time as well as its functional correctnesstime as well as its functional correctness
Diese Definition lässt viele Interpretations-Diese Definition lässt viele Interpretations-spielräume spielräume
Deshalb: Einteilung in Deshalb: Einteilung in hardhard und und soft real-soft real-timetime
Arten von real-time SystemenArten von real-time Systemen
Hard real-time: Garantierte Hard real-time: Garantierte anwendungsabhängige worst-case anwendungsabhängige worst-case Reaktionszeiten (nicht unbedingt kurz, Reaktionszeiten (nicht unbedingt kurz, aber sehr deterministisch)aber sehr deterministisch)
Soft real-time: Rechtzeitigkeit wird Soft real-time: Rechtzeitigkeit wird benötigt, aber Scheitern bleibt ohne benötigt, aber Scheitern bleibt ohne schwerwiegende Folgen (evt. Qualitäts-schwerwiegende Folgen (evt. Qualitäts-verluste)verluste)
Wer benötigt real-time?Wer benötigt real-time?
Systeme mit hoher Verantwortung, z.B.Systeme mit hoher Verantwortung, z.B.- Gefahr für MenschenlebenGefahr für Menschenleben- Industrielle AutomationIndustrielle Automation
Steigender Bedarf ausgelöst durch Steigender Bedarf ausgelöst durch Anwendungen der Vernetzung, z.B.Anwendungen der Vernetzung, z.B.- Voice-over-IPVoice-over-IP
Im Bereich Multimedia, z.B.Im Bereich Multimedia, z.B.- Video streamingVideo streaming
Linux und real-time?Linux und real-time?
Linux ist Linux ist keinkein real-time Betriebssystem real-time Betriebssystem- Andere Entwurfskonzepte mit teilweise Andere Entwurfskonzepte mit teilweise
konkurrierenden Zielenkonkurrierenden Zielen- Im Sinne einer weiteren Verbreitung, versucht Im Sinne einer weiteren Verbreitung, versucht
man, die Qualitäten in diesem Bereich zu man, die Qualitäten in diesem Bereich zu verbessern, so dass ein Einsatz etwa in verbessern, so dass ein Einsatz etwa in embedded systems o.ä. möglich wäreembedded systems o.ä. möglich wäre
Dank open source möglich und teilweise Dank open source möglich und teilweise schon realisiert, entweder direkt im Kernel schon realisiert, entweder direkt im Kernel oder mit entsprechenden Patchesoder mit entsprechenden Patches
Was der aktuelle Linux Kernel Was der aktuelle Linux Kernel leistetleistet
Zeitvorgaben im Millisekundenbereich werden Zeitvorgaben im Millisekundenbereich werden standardmäßig nicht eingehalten, aber soft real-standardmäßig nicht eingehalten, aber soft real-time ist kein Problemtime ist kein ProblemKritische Bereiche werden unter Interruptsperre Kritische Bereiche werden unter Interruptsperre abgearbeitet abgearbeitet
- Kernel ist nicht preemptiv Kernel ist nicht preemptiv →→ Langwährende Langwährende Systemaufrufe halten hochpriore Benutzerprozesse Systemaufrufe halten hochpriore Benutzerprozesse auf auf → Quelle für Indeterminismus der Antwortzeiten→ Quelle für Indeterminismus der Antwortzeiten
Thread scheduling policiesThread scheduling policies- SCHED_FIFO, SCHED_RR, SCHED_OTHERSCHED_FIFO, SCHED_RR, SCHED_OTHER- Nicht gerade fein-granuliert und parametrisierbarNicht gerade fein-granuliert und parametrisierbar
Scheduler LatencyScheduler Latency
Latency: Latency: - Allg: Intervall zwischen Stimulus und Reaktion (meist Allg: Intervall zwischen Stimulus und Reaktion (meist
stochastisch)stochastisch)- hier: Zeit, die nach Ereignis vergeht, bis betroffener hier: Zeit, die nach Ereignis vergeht, bis betroffener
Thread den Prozessor erhält (PDLT)Thread den Prozessor erhält (PDLT)
Was passiert in dieser Zeit? Was passiert in dieser Zeit? - Interrupt Interrupt → ISR → Interrupt Handler des Device → ISR → Interrupt Handler des Device
Drivers (aktiviert betroffenen Thread) → Drivers (aktiviert betroffenen Thread) → need_resched flag des current task → … → need_resched flag des current task → … → scheduling (muss diesen Thread aber nicht scheduling (muss diesen Thread aber nicht auswählen) → … → Thread läuftauswählen) → … → Thread läuft
Möglichkeit I: RTLinuxMöglichkeit I: RTLinux
Läuft „außerhalb“ vom eigentlichen KernelLäuft „außerhalb“ vom eigentlichen Kernel- ist eigenständiges RT OSist eigenständiges RT OS- Linux als niedrigst-priorer RT-TaskLinux als niedrigst-priorer RT-Task
Besitzt das System und kann auf Besitzt das System und kann auf Ereignisse nahezu sofort reagierenEreignisse nahezu sofort reagierenSoftware emuliert Interrupt Controller Software emuliert Interrupt Controller →→ transparent für Linux (Virtuelle Maschine)transparent für Linux (Virtuelle Maschine)Nachteile: zwei APIs, verbessert nicht die Nachteile: zwei APIs, verbessert nicht die real-time Fähigkeiten von Linux, Overheadreal-time Fähigkeiten von Linux, Overhead
Möglichkeit II: Möglichkeit II: Kernel PreemptionKernel Preemption
Nicht im aktuellen Standard KernelNicht im aktuellen Standard Kernel- im 2.5er Entwicklerkernel optional auswählbarim 2.5er Entwicklerkernel optional auswählbar
Kernel Preemption Patch verfügbar:Kernel Preemption Patch verfügbar:- von Monta Vista entwickeltvon Monta Vista entwickelt- von Kernel Maintainer Robert Love gewartet von Kernel Maintainer Robert Love gewartet
und weiterentwickeltund weiterentwickelt
Kernel Preemption PatchKernel Preemption PatchKonzepte/Änderungen IKonzepte/Änderungen I
Veränderte Implementierung von Veränderte Implementierung von SpinlocksSpinlocks- SMP Synchronisation SMP Synchronisation → Preemption Lock, → Preemption Lock,
kontrolliert Wiedereintritt in kritische Bereichekontrolliert Wiedereintritt in kritische Bereiche
Modifizierte Interrupt-Behandlung Modifizierte Interrupt-Behandlung - erlaubt Re-Scheduling sofort danach, selbst erlaubt Re-Scheduling sofort danach, selbst
wenn unterbrochener Prozess im System-wenn unterbrochener Prozess im System-Modus war (Ausnahme: dessen Region ist Modus war (Ausnahme: dessen Region ist preemption locked)preemption locked)
Kernel Preemption PatchKernel Preemption PatchKonzepte/Änderungen IIKonzepte/Änderungen II
Andere Implementierung von spin unlockAndere Implementierung von spin unlock- System wird wieder in preemptable state System wird wieder in preemptable state
gebracht und es wird sofort geprüft, ob gebracht und es wird sofort geprüft, ob context switch nötig istcontext switch nötig ist
Angepasste Kernel build definitionAngepasste Kernel build definition- Speziell Uniprozessor Systeme müssen auch Speziell Uniprozessor Systeme müssen auch
spin locks aktivierenspin locks aktivieren
BewertungBewertung
Forderung: sehr kurze kritische Regionen Forderung: sehr kurze kritische Regionen
Reaktivität drastisch gesteigertReaktivität drastisch gesteigert- Durchschnitt und worst caseDurchschnitt und worst case
Wenige Änderungen → gute Wartbarkeit Wenige Änderungen → gute Wartbarkeit und Verträglichkeitund Verträglichkeit
Nachteil: gewisser (kleiner) OverheadNachteil: gewisser (kleiner) Overhead- Wird ausgeglichen, da I/O channels besser Wird ausgeglichen, da I/O channels besser
beschäftigt gehalten werden könnenbeschäftigt gehalten werden können
Möglichkeit III:Möglichkeit III:Low LatencyLow Latency
Regelmäßige Ausführung des Schedulers, Regelmäßige Ausführung des Schedulers, damit kritische Tasks möglichst schnell damit kritische Tasks möglichst schnell bedient werdenbedient werden- aber: zu häufige Ausführung stellt einen aber: zu häufige Ausführung stellt einen
beachtlichen Overhead dar (Kompromiss)beachtlichen Overhead dar (Kompromiss)
Low Latency PatchLow Latency PatchKonzepte/Änderungen IKonzepte/Änderungen I
Eingeführt von Ingo Molnar, jetzt gewartet Eingeführt von Ingo Molnar, jetzt gewartet durch Andrew Mortondurch Andrew Morton
Einführung von expliziten Preemption Einführung von expliziten Preemption Points in den Blöcken des Kernel Codes, Points in den Blöcken des Kernel Codes, die für lange Zeit ausgeführt werden die für lange Zeit ausgeführt werden (Iterationen über große Datenstrukturen)(Iterationen über große Datenstrukturen)
Problem: finden dieser Stellen (z.B. mit Problem: finden dieser Stellen (z.B. mit Tools möglich) und SICHERES EinfügenTools möglich) und SICHERES Einfügen
Preemption PointsPreemption Points
Wenn Schleife eine gewisse Zeit gelaufen Wenn Schleife eine gewisse Zeit gelaufen ist, Scheduler aufrufenist, Scheduler aufrufen
if (current->need_resched) if (current->need_resched) schedule();schedule();
Mögliche Taktik: Spinlock freigeben, Mögliche Taktik: Spinlock freigeben, Scheduler aufrufen und danach Spinlock Scheduler aufrufen und danach Spinlock wieder reservieren (lock breaking) wieder reservieren (lock breaking)
ZusammenfassungZusammenfassung
Weitere AnsatzpunkteWeitere Ansatzpunkte
An real-time Anforderungen angepasster An real-time Anforderungen angepasster Schedulingalgorithmus Schedulingalgorithmus - Pre-SchedulingPre-Scheduling- Flexiblere PoliciesFlexiblere Policies
Höhere Timer-AuflösungHöhere Timer-Auflösung
AusblickAusblick
Preemption Patch hat gute Aussichten, in Preemption Patch hat gute Aussichten, in den offiziellen Kernel als Option integriert den offiziellen Kernel als Option integriert zu werden, vielleicht auch in Kombination zu werden, vielleicht auch in Kombination mit dem Low Latency Patchmit dem Low Latency Patch
Persönliche Meinung: Mit höheren Persönliche Meinung: Mit höheren Multimedia-Anforderungen steigt der Multimedia-Anforderungen steigt der Wunsch nach real-time auch für den Wunsch nach real-time auch für den Ottonormal-Benutzer Ottonormal-Benutzer →→ Integration nötig Integration nötig