verbesserung der reaktivität des linux-kernels steffen mazanek

22
Verbesserung der Verbesserung der Reaktivität des Reaktivität des Linux-Kernels Linux-Kernels Steffen Mazanek Steffen Mazanek

Upload: vala

Post on 12-Jan-2016

31 views

Category:

Documents


3 download

DESCRIPTION

Verbesserung der Reaktivität des Linux-Kernels Steffen Mazanek. Gliederung. Einführung: Was ist real-time Fähigkeit, wofür braucht man sie und was ist zur Zeit mit Linux in diesem Bereich möglich? Wie kann man die Reaktivität verbessern? Preemption Patch Low Latency Patch RTLinux Ausblick. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

Verbesserung der Verbesserung der Reaktivität des Reaktivität des Linux-KernelsLinux-Kernels

Steffen MazanekSteffen Mazanek

Page 2: Verbesserung der Reaktivität des  Linux-Kernels Steffen 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

Page 3: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

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

Page 4: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

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)

Page 5: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

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

Page 6: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

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

Page 7: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

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

Page 8: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek
Page 9: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

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

Page 10: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

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

Page 11: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

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

Page 12: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek
Page 13: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

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)

Page 14: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

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

Page 15: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

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

Page 16: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

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)

Page 17: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

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

Page 18: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

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)

Page 19: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek
Page 20: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

ZusammenfassungZusammenfassung

Page 21: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

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

Page 22: Verbesserung der Reaktivität des  Linux-Kernels Steffen Mazanek

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