Thomas Gleixner – linutronix Linux in Automation 2004 – Uni Hannover
Was ist das ? LInux Based Enhanced RealTime Operating System Modifikation des Linux-Kernels zur Erlangung der Echtzeitfähigkeit basierend auf dem KURT Projekt (Kansas University Realtime) unter der Leitung von Prof. Douglas Niehaus
Warum ? Performance Speicherbedarf Portierbarkeit Dual Kernel ist für viele User schwierig zu handhaben
Designvorgaben Quality of Service Instrumentierbarkeit Unterstützung für vernetzte Systeme Modularität Portierbarkeit
Quality of Service As fast as specified rather than as fast as possible Zitat Douglas Niehaus
Funktionalität Microsekunden Timer Instrumentierung für Kernel / Userspace Modularer Echtzeitscheduler Interrupthandling unter Schedulerkontrolle Userspace Realtime
µsec Timer Driftkompensation Synchronisation von vernetzen Systemen Schlanke Implementation auf reiner 32 bit Arithmetik Busyloops für kurze Delays entfallen
µsec Timer Voraussetzungen Frei laufender Timer oder Time Stamp Counter. Emulation des x86 TSC für 16 und 32 bit Timer One-shot programmierbarer Timer
Instrumentierung DSKI (Data Stream Kernel Interface) DSUI (Data Stream Userspace Interface) Alle relevanten Codeteile sind instrumentiert Eventaufzeichnung selektierbar Netzwerksupport für Embedded Systeme
Instrumentierung Eventspeicher wird in XML umgewandelt Python basierte Auswertung
RT - Scheduler Erweiterung der Linux Task Struktur. Dadurch Userspace Realtime zum Nulltarif RT-Scheduler entscheidet vor dem eigentlichen Linux-Scheduler Groupscheduling Modular ladbare Scheduling Algorithmen Watchdog Funktion
RT - Scheduler Schedule() RT-Scheduler Scheduler Modul Scheduler Modul Scheduler Modul RT ? Taskswitch Linux scheduler Ja Nein
Groupscheduling Bilden von Prozessgruppen Scheduling der Prozessgruppen Scheduling der Prozesse in den Gruppen
Groupscheduling Beispiel Timeslice P4, P5 P6, P7 P1, P2, P3 Group 1 Group 2 Group 3 P8, P9 EDF Priority RR
Groupscheduling Implementierte Algorithmen Priority Priority mit Quantum Early Deadline First Round Robin Explicit Plan Periodic
Groupscheduling System Decision Function (SDF) Scheduling von Systemereignissen Scheduling von Interrupthandlern Scheduling von Tasklets
Interrupthandling CLI/STI durch Softwareflag ersetzt Interrupts sind auf Hardwareebene fast immer enabled Support für Per IRQ locking Softwarepriorisierung von Interrupts Interrupts unter Schedulerkontrolle (SDF)
Interrupthandling IRQ Entry RT IRQ ? CLI ? RT context ? Notification NN N J J IRQ handler IRQ Exit Locked ? J Can run ? (SDF) N N J J
Interrupthandling IRQ1, IRQ5 IRQ11 RT IRQ Group Priority IRQ1, IRQ5 IRQ11 Linux IRQ Group EDF Bottom Halfs, Tasklets Linux SDF Group Sequential Interrupthandling im Scheduler (SDF)
Userspace Realtime Standard Userspace Programmierung Posix-Threads Realtime Verhalten kann innerhalb des Programms oder von aussen beinflusst werden Debugging von Realtime Anwendungen mit GDB Userspace Devicedriver Support
Userspace Realtime Standard IPC Mechanismen Signale Semaphoren Fifos Pipes Shared Memory
Userspace Realtime Restriktionen Blockierende Systemcalls (Disk-I/O)
Performance P3 1,4Ghz, 100% load
Performance P3 1,4Ghz, 100% load
Performance P3 1,4Ghz, 100% load
Performance P3 1,4Ghz, 100% load
Performance Maximum Signal propagation delay Celeron 333MHz (1) 100% Userspace load (2) 50% Userspace 50% System load (ping -f, serial communication Bd)
Portierbarkeit Es müssen nur der Timer und die Interrupt Entry Funktion portiert werden ARM7 ca. 120 Zeilen Code Zeilen Makros PPC405 ca. 200 Zeilen Code Zeilen Makros
Status (1) Nicht alle Derivate implementiert WIP = Work In Progress
Verwendung Telekommunikation (ATM-Switching) ACE/TAO wird von Chris Gill auf LibeRTOS betrieben. Hierbei ist vor allem die Integration der ACE Scheduling Funktionalität in die Groupscheduling Funktion von LibeRTOS ein vorrangiges Ziel. Video/Audio Streaming, HD-Recording Messtechnik, Datenerfassung / aufbereitung