Slothful Linux: An Efficient Hybrid Real-Time System by Hardware-Based Task Dispatching Rainer Müller 21. November 2013
Spezialisierung von Betriebssystemen Vielzweckbetriebssysteme (General Purpose OS, GPOS) Benutzerinteraktion, Datenkommunikation, Entertainment,... weitreichende Hardwareunterstützung Echtzeitbetriebssysteme (Real Time OS, RTOS) Steuerung von Fertigungsmaschinen, Industrieanlagen,... spezialisiert für bestimmte Aufgaben weiche, feste oder harte Terminvorgaben Rainer Müller Slothful Linux 2
Konsolidierung Trennung in Echtzeitverarbeitung und restliche Aufgaben RTOS: Maschinensteuerung GPOS: Kommunikation, Statistiken, Visualisierung,... Gemeinsamer Zugriff auf Daten Konsolidierung auf derselben Hardwareplattform Single Hardware Unit shared resources Other Components Controlled System sensor data control commands RT App RTOS Application Application Application GPOS network communication Slothful Linux: Integration des Linux-Kernels mit dem bestehendem Sloth-Echtzeitbetriebssystem Rainer Müller Slothful Linux 3
Überblick Sloth-Konzept Slothful Linux Evaluation Ausblick Rainer Müller Slothful Linux 4
Sloth-Konzept Idee: Threads as Interrupts Task-Aktivierung durch IRQ Hardware übernimmt das Einplanen und Einlasten Anwendbar auf statisch konfigurierte Echtzeitsysteme mit festen Prioritäten (z. B. OSEK/AUTOSAR OS) Rainer Müller Slothful Linux 5
Sloth-Design ActivateTask(Task1) prio=1 request IRQ Source Task1 CPU Hardware Periphery HW IRQ prio=2 request prio=3 request IRQ Source ISR2 IRQ Source Task3 IRQ Arbitration Unit curprio=x IRQ Vector Table Timer System Alarm Exp. prio=4 request IRQ Source Task4 task1() isr2() task3() task4() Hardware muss genügend Prioritäten zur Verfügung stellen Unterbrechungsanforderungen aus Software heraus für synchrone Aktivierungen Rainer Müller Slothful Linux 6
Vorteile des Sloth-Designs Schlanker, effizienter Kern Einheitliche Abstraktion für Tasks und ISRs unabhängig davon, ob Aktivierung durch Hardware oder Software ausgelöst wurde Einheitlicher Prioritätsraum für Tasks und ISRs keine Prioritätsumkehr (rate-monotonic priority inversion) Synchronisation durch Anheben der CPU-Priorität Priority Ceiling Protocol Rainer Müller Slothful Linux 7
Sloth-Familie Sloth-Konzept bereits in mehreren Bereichen erfolgreich event-triggered time-triggered OSEK OSEKtime Sloth [RTSS 09] Sleepy Sloth [RTSS 11] Sloth on Time [RTSS 12] AUTOSAR OS Rainer Müller Slothful Linux 8
Slothful Linux Übertragung der Vorteile des Sloth-Konzepts in ein kombiniertes System zusammen mit Linux Untersuchung der bestehenden auf Linux basierenden Ansätze 1. Veränderungen am Kernel, um Echtzeitverhalten zu implementieren (RT-PREEMPT-Patch) 2. Virtualisierung der Unterbrechungsbehandlung Rainer Müller Slothful Linux 9
Virtualisierung der Unterbrechungsbehandlung I-Pipe-Patch Basis von RTAI oder Xenomai Virtualisierung der Unterbrechungsbehandlung in Abstraktionsschicht Ansatz: Optimistic Interrupt Protection Rainer Müller Slothful Linux 10
Virtualisierung der Unterbrechungsbehandlung Process Process Process Linux Kernel I/O Drivers Hardware Interrupt blocking Interrupt Handlers Interrupt Shield Interrupt Controller Interrupts Interrupts Real-Time System RT-Task RT-Task RTOS kann jederzeit den Linux-Kernel unterbrechen, Linux-Kernel hat keinen Einfluss auf Ablauf im RTOS Rainer Müller Slothful Linux 11
Entwurf und Implementierung Zielplattform: Intel x86 APIC Sloth (bare-metal) Ziel: Prüfung der Realisierbarkeit Ausnutzung der Hardware ohne Einschränkungen Funktionsumfang: Tasks, Resources Slothful Linux Virtualisierung der Unterbrechungsbehandlung des Linux-Kernels Anpassung des Linux-Kernels auf Basis vorhandener Patches Kommunikationskanal zwischen Echtzeitanwendung und Prozessen unter Linux Funktionsumfang: Tasks, Resources, Pipes Rainer Müller Slothful Linux 12
Sloth auf Intel x86: Local APIC CPU Core 0 IDTR Execution Unit Local APIC Interrupt messages IPIs System Bus Interrupt messages I/O APIC External Interrupt Lines System Chipset Asynchrone Aktivierung von Tasks durch externe Interrupts Synchrone Aktivierung von Tasks durch self-ipis Rainer Müller Slothful Linux 13
Sloth auf Intel x86: Prioritäten Verdrängung von Unterbrechungsbehandlungen basiert auf Prioritätsgruppen Abbildung der Prioritäten auf Vektoreinträge Configuration: (priorities of tasks and resources) priorities 1 2 3 4 5 6 7 8 9 1011121314 APIC: vectors 0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 255 0 31 reserved 1 2 3 4 5 6 7 8 9 10 11 12 13 14 priority groups Sloth auf Intel x86 umsetzbar Rainer Müller Slothful Linux 14
Entwurf und Implementierung Zielplattform: Intel x86 APIC Sloth (bare-metal) Ziel: Prüfung der Realisierbarkeit Ausnutzung der Hardware ohne Einschränkungen Funktionsumfang: Tasks, Resources Slothful Linux Virtualisierung der Unterbrechungsbehandlung des Linux-Kernels Anpassung des Linux-Kernels auf Basis vorhandener Patches Kommunikationskanal zwischen Echtzeitanwendung und Prozessen unter Linux Funktionsumfang: Tasks, Resources, Pipes Rainer Müller Slothful Linux 15
Slothful Linux: Veränderungen am Linux-Kernel Anpassung des I-Pipe-Patches Funktionsumfang sehr komplex bietet Optimistic Interrupt Protection für den Linux-Kernel Interrupts stall point Sloth Interrupts Intercepted Interrupts Sloth Real-Time Core Real-Time Domain Linux Kernel Root Domain Echtzeitsysteme als Module für den Linux-Kernel Rainer Müller Slothful Linux 16
Slothful Linux: Pipes Pipes ermöglichen Datentransfer von Echtzeitanwendung zu Prozessen des Linux-Kernels Real-Time Domain General-Purpose Domain RT-Task Sloth Real-Time Core Linux Kernel User-Space Process WritePipe() Buffer chardev read() shared memory /dev/slothpipe0 Rainer Müller Slothful Linux 17
Evaluation: System Services Laufzeitmessung mit Timestamp Counter auf Intel Atom mit 1.6 GHz 1400 Cycles Slothful Linux Sloth 1200 1000 800 600 400 200 0 Activate() Activate() w/ dispatch Terminate() w/ dispatch Chain() w/ dispatch GetRes() ReleaseRes() ReleaseRes() w/ dispatch Rainer Müller Slothful Linux 18
Evaluation: Latenz Messung der Interrupt-Latenz mit Local-APIC-Timer vom Zeitpunkt der Aktivierung bis zur ersten Instruktion der Behandlungsfunktion 3.0 Xenomai Slothful Linux Sloth 5000 2.5 4000 Latency [µs] 2.0 1.5 1.0 3000 2000 CPU Cycles 0.5 1000 0.0 0 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 Measurements Rainer Müller Slothful Linux 19
Zusammenfassung Slothful Linux ermöglicht parallele Ausführung von Sloth und Linux auf derselben Hardware Sloth läuft ohne Beeinträchtigungen durch Linux konstanter zusätzlicher Aufwand für Wechsel zwischen den Domänen niedrige Latenz für Verarbeitung von Unterbrechungen bzw. Aktivierungen von Tasks Ausblick: Unterstützung von Multi-Core-Systemen http://www4.cs.fau.de/research/sloth Rainer Müller Slothful Linux 20
Literaturverzeichnis Wanja Hofer, Daniel Lohmann, Fabian Scheler, and Wolfgang Schröder-Preikschat. Sloth: Threads as interrupts. In Proceedings of the 30th IEEE International Symposium on Real-Time Systems (RTSS 09), pages 204 213. IEEE Computer Society Press, December 2009. Wanja Hofer, Daniel Lohmann, and Wolfgang Schröder-Preikschat. Sleepy Sloth: Threads as interrupts as threads. In Proceedings of the 32nd IEEE International Symposium on Real-Time Systems (RTSS 11), pages 67 77. IEEE Computer Society Press, December 2011. Wanja Hofer, Daniel Danner, Rainer Müller, Fabian Scheler, Wolfgang Schröder-Preikschat, and Daniel Lohmann. Sloth on Time: Efficient hardware-based scheduling for time-triggered RTOS. In Proceedings of the 33rd IEEE International Symposium on Real-Time Systems (RTSS 12), pages 237 247. IEEE Computer Society Press, December 2012. Rainer Müller Slothful Linux