Real-Time Linux

Real-Time Linux und Preempt-RT.

Real-Time und Linux

Ein Echtzeitbetriebssystem stellt sicher, dass Aufgaben innerhalb vorgegebener Zeitgrenzen ausgeführt werden. Es geht dabei nicht darum, eine Aufgabe möglichst schnell zu erledigen, sondern darum, dass sie die nötige Rechenzeit rechtzeitig vor ihrer Deadline bekommt. Diese Zeitvorgaben hängen von der Anwendung ab und reichen von Minuten in Wasseraufbereitungsanlagen bis zu Mikrosekunden in der Robotik. Werden sie verpasst, kann das zu Fehlfunktionen oder schweren Schäden führen. Standard-Linux bietet einen hohen Durchsatz, garantiert aber kein deterministisches Echtzeitverhalten.

Preempt-RT wurde 2024 nach rund zwanzig Jahren Entwicklung in den Mainline-Kernel aufgenommen. Entwickler von Linutronix haben Preempt-RT maßgeblich mitentwickelt und pflegen es bis heute im Upstream. Preempt-RT läuft weltweit auf vielen Hardwareplattformen und in den unterschiedlichsten Industrieanwendungen. Je nach Hardware sind Reaktionszeiten deutlich unter 100 Mikrosekunden erreichbar.



Worst-Case-Latenz unter Last

Vanilla Kernel

21,5 ms

PREEMPT_RT

40 µs

Warum Preempt-RT

Ohne Preempt-RT enthält der Linux-Kernel mehrere Bereiche, in denen Preemption deaktiviert ist:

  • Durch Spinlocks geschützte Bereiche
  • Interrupt-Handler
  • Teile des Schedulers

Solche Bereiche verursachen unbegrenzte Latenzen für Echtzeitaufgaben, die
rechtzeitig vor ihrer Deadline auf der CPU laufen müssen.

Preempt-RT löst das vor allem durch:

  • Umwandlung von Spinlocks in preemptible sleeping locks auf Basis von
    rtmutex
  • Umwandlung von Interrupt-Handlern in preemptible Kernel-Threads, die
    standardmäßig mit SCHED_FIFO und Priorität 50 (MAX_RT_PRIO /
    2
    ) laufen
  • Hochauflösende Hardware-Timer mit Nanosekundenpräzision im
    Timer-Subsystem des Kernels
  • Prioritätsvererbung (Priority Inheritance) gegen Prioritätsinversion

Das Ergebnis ist ein Kernel, in dem ein Echtzeitprozess nahezu jeden anderen
Kernel-Codepfad unterbrechen kann und so vor Ablauf seiner Deadline auf die
CPU kommt.

Die Worst-Case-Latenz beim Aufwecken liegt auf moderner Hardware
typischerweise bei 20–50 Mikrosekunden, abhängig von SoC, Interrupt-Last und
Konfiguration.

Preempt-RT im Laufe der Jahre

Von seinen Ursprüngen in der akademischen Echtzeitforschung bis zur Integration in den Mainline-Kernel im Jahr 2024 erstreckt sich die Entwicklung von Preempt-RT über mehr als zwei Jahrzehnte:

1991Erstes Release des Linux-Kernels
1996RTLinux veröffentlicht (New Mexico Institute of Technology)
1997Gründung des KURT-Projekts (Kansas University Real Time, Prof. Douglas Niehaus, University of Kansas)
1998Linux/RK veröffentlicht (Carnegie Mellon)
1999KURT 2.0 für Linux 2.2.5 veröffentlicht – Vorläufer von Preempt-RT
1999RTAI veröffentlicht (Politecnico di Milano)
1999Erster Real-Time Linux Workshop in Wien
2001KURT auf Linux 2.4 portiert
2001Start des XENOMAI-Projekts
2004Erstes Release des Preempt-RT-Patches
2005Generisches Interrupt-Subsystem
2006RT-Mutex, Prioritätsvererbung, PI-Futex, Mutexe, Lockdep
2007Generisches Timekeeping, hochauflösende Timer, NOHZ
2008Verbesserungen der Tracing-Infrastruktur
2009Preemptible RCU, Threaded Interrupts, Raw Spinlocks
2011Endgültige Entfernung des Big Kernel Locks
2016Gründung des Real-Time-Linux-Projekts innerhalb der Linux Foundation
2018Kernelweite Bereinigung des Lockings
2019FPU, Stacktrace, Einführung von CONFIG_PREEMPT_RT
2020BPF-Unterstützung für RT
2021printk(), RT-Locking-Primitive, Netzwerk, Speicherverwaltung
2024RT für x86/ARM64 im Linux-Mainline-Kernel - zwanzig Jahre später

Integration mit anderen Technologien

Echtzeit-Linux steht in Embedded-Systemen selten für sich allein:

  • Hypervisor-Setups – Preempt-RT kann in einer dedizierten
    VM mit fest zugewiesenen
    CPU-Kernen und Peripheriegeräten laufen. Jailhouse und andere Hypervisoren unterstützen das für
    Mixed-Criticality-Systeme.
  • Industrielle Netzwerke – Zusammen mit TSN reicht das deterministische
    Verhalten vom Scheduler bis ins Netzwerk.
  • Safety und Zertifizierung – Preempt-RT kann Teil
    sicherheitsrelevanter Systeme sein, zusammen mit geeigneter Hardware und
    Software sowie passenden Entwicklungs-, Verifikations- und
    Validierungsprozessen.
  • Echtzeitanwendungen – Robotik, Bewegungssteuerung, SPS,
    Automotive und Bildverarbeitung: überall dort, wo vorhersagbare Reaktionszeiten
    wichtiger sind als maximaler Durchsatz.

Arbeiten Sie mit uns an Real-Time Linux

Die Ingenieure von Linutronix haben Preempt-RT entwickelt und arbeiten seit über 20 Jahren kontinuierlich an seiner Weiterentwicklung und Upstreampflege. Unser Team deckt die Bereiche Latenzanalyse, BSP-Entwicklung, Kernel-Konfiguration und Validierung für die Industrie ab:

Latenzanalyse

Identifizierung und Beseitigung von Latenzquellen auf Ihrer Hardwareplattform.

Training

Alles rund um Preempt-RT – einschließlich spezieller Schulungswochen zu Real-Time Linux.

Upstreaming

Wir bringen Unterstützung Ihre Plattform und Fehlerkorrekturen in den Mainline-Kernel.

Tests

Echtzeit-Benchmarks für vollständige Hardware-/Software-Systeme.

Besprechen Sie Ihre Latenzanforderungen mit uns