Technischer Nachweis11 Min. Lesezeit

Ein Echtzeit-Kernel reichte nicht: Ergebnisse unseres 10-ms-Linux-Steuerungstests

Zwei Controller, ein Jitter-Budget von einer Millisekunde und mehrere gescheiterte Konfigurationen. Hier sind die Zahlen und ihre Grenzen.

Prüfstand für Controller-Timing mit zwei Controllern, I/O-Modulen, Oszilloskop und Jitter-Histogrammen

Über den Autor

Dr. Mehran Kiani-Oshtorjani

Ingenieur für Industriesoftware und Simulation

Mehran Kiani-Oshtorjani ist Maschinenbauingenieur und Softwareentwickler mit Erfahrung in Echtzeitsimulation, Fluidtechnik, industrieller Steuerung und vernetzter Software. Seine Promotion an der LUT University befasste sich mit recheneffizienten Methoden für industrielle Echtzeitsysteme.

Technische Kernaussagen

  • PREEMPT_RT allein verfehlte auf beiden Pilotgeräten das maximale Jitter-Kriterium von einer Millisekunde.
  • PREEMPT_RT plus SCHED_FIFO Priorität 80 bestand vier stationäre Läufe mit und ohne definierte Last.
  • Das Ergebnis gilt für ein enges 10-ms-Pilotprofil und ist keine allgemeine Echtzeit- oder Sicherheitsfreigabe.

Jitter ist eine Verteilung, kein Adjektiv

Ein Linux-System ohne Periode, Last, Laufzeit und Maximalwert als deterministisch zu bezeichnen, ist Marketing. Entscheidend ist, ob der beobachtete Worst Case innerhalb des Zeitbudgets der Maschine bleibt.[3][4][5]

PREEMPT_RT macht mehr Kernel-Pfade unterbrechbar; SCHED_FIFO verändert, welcher lauffähige Prozess Vorrang erhält. Beides adressiert unterschiedliche Teile desselben Timing-Problems.[2][3]

Akzeptanzkriterien vor dem Test festlegen

Bestanden war der 10-ms-Lauf nur bei maximal 1 ms Jitter, null verpassten und überlaufenen Zyklen, höchstens 20 ms Snapshot-Alter, maximal 1 ms Veröffentlichungsdauer und höchstens 2048 KB Speicherwachstum.[1]

Die bestandene Konfiguration

PREEMPT_RT mit SCHED_FIFO Priorität 80 bestand auf beiden Controllern. Der maximale Jitter der vier Läufe lag zwischen 0,063612 ms und 0,094448 ms; verpasste Zyklen, Overruns und Speicherwachstum blieben bei null.[1]

ControllerLastMax. JitterSnapshot-AlterPublikationVerpasst / Overrun
ANein0,085877 ms1,982421 ms0,096610 ms0 / 0
BNein0,063612 ms9,277714 ms0,064073 ms0 / 0
AJa0,094448 ms3,851881 ms0,081295 ms0 / 0
BJa0,067025 ms9,068315 ms0,079147 ms0 / 0

Die Fehlschläge erklären den Erfolg

Stock- oder Tuning-Konfigurationen erreichten 2,258783 bis 3,662989 ms. PREEMPT_RT ohne FIFO verbesserte das Ergebnis, scheiterte aber mit 1,014743 und 1,340064 ms weiterhin am Grenzwert.[1][2][3]

  • Die gesamte Scheduling-Konfiguration messen, nicht nur den Kernel.
  • Netzwerk, Logging und blockierende I/O aus dem zyklischen Thread halten.
  • Fehlgeschlagene Läufe zusammen mit den Bestwerten archivieren.

Was bewiesen ist und was nicht

Die Daten rechtfertigen die Fortsetzung der 10-ms-Pilotstudie. Sie beweisen weder finale Freigabe noch I/O-Timing, Langzeitverhalten, Wertkorrektheit oder Safety-Eignung.[1]

Offen bleiben Kaltstart unter Last, 100-ms-Profile, Service-Konkurrenz auf demselben Kern, Backend-Freshness und Ende-zu-Ende-Wertprüfung.[1]

Der nächste Test muss das Ergebnis angreifen

  1. Kaltstart mit gleichzeitig einsetzender CPU-, Speicher- und Netzlast testen.
  2. Service und Runtime auf demselben Kern gegeneinander laufen lassen.
  3. Langläufe mit Temperatur, Log-Rotation und Reconnects durchführen.
  4. Physische I/O zusätzlich zu Software-Zeitstempeln messen.
  5. Rohdaten, Konfiguration und Fehlschläge veröffentlichen.

Häufig gestellte Fragen

Garantiert PREEMPT_RT deterministische Steuerung?

Nein. Kernel, Hardware, Treiber, Prioritäten, Last und Anwendungsdesign bestimmen gemeinsam das messbare Ergebnis.

Warum SCHED_FIFO für die Runtime?

Ein höher priorisierter Steuerungsthread kann normale Aufgaben verdrängen. Dafür muss seine Arbeit begrenzt und überwacht sein.

Sind die Ergebnisse eine Produktionsfreigabe?

Nein. Es sind vier stationäre Pilotläufe auf zwei Geräten mit klar veröffentlichten Lücken.

Quellen und Standards

  1. MCR Demo 1 steady-state 10 ms timing evidenceBootCtrl, 26 July 2026
  2. PREEMPT_RT theory of operationLinux kernel documentation
  3. sched(7): overview of CPU schedulingLinux man-pages project
  4. clock_nanosleep(2): high-resolution process sleepLinux man-pages project
  5. Cyclictest documentationLinux Foundation Real-Time Linux project

BootCtrl Engineering hat die technischen Aussagen und Quellenlinks zuletzt am 26. Juli 2026 geprüft. Produktaussagen werden mit den aktuellen Implementierungs-Repositories abgeglichen; Roadmap-Arbeit wird nicht als verfügbare Funktion dargestellt.

Zeitbudget vor der Controllerwahl definieren

Bringen Sie Zyklus, I/O-Pfad, Last und Fehlerkriterien mit. Wir machen daraus einen messbaren Piloten.

Steuerungspilot besprechen