Tekniska bevis11 min läsning

En realtidskärna räckte inte: resultat från vårt 10 ms-test med Linux-styrning

Två styrenheter, en jittergräns på en millisekund och flera underkända konfigurationer. Här är resultaten och begränsningarna.

Testbänk för styrtiming med två styrenheter, I/O-moduler, oscilloskop och jitterhistogram

Om författaren

Dr. Mehran Kiani-Oshtorjani

Ingenjör inom industriell programvara och simulering

Mehran Kiani-Oshtorjani är maskiningenjör och programvaruutvecklare med erfarenhet av realtidssimulering, fluidteknik, industriell styrning och uppkopplad programvara. Hans doktorsforskning vid LUT University handlade om beräkningseffektiva metoder för industriella realtidssystem.

Tekniska slutsatser

  • PREEMPT_RT ensamt överskred jittergränsen på en millisekund på båda enheterna.
  • PREEMPT_RT med SCHED_FIFO prioritet 80 klarade fyra stationära körningar.
  • Resultatet gäller en avgränsad 10 ms-pilot och är inget generellt realtids- eller säkerhetsgodkännande.

Jitter är en fördelning, inte ett adjektiv

Att kalla Linux deterministiskt utan period, last, varaktighet och maxvärde hjälper inte ett tekniskt beslut. Frågan är om det observerade värsta fallet ryms i maskinens tidsbudget.[3][4][5]

PREEMPT_RT gör fler kärnvägar avbrytbara. SCHED_FIFO ändrar prioriteten mellan körklara uppgifter. De behandlar olika orsaker till samma timingproblem.[2][3]

Bestäm acceptanskraven före testet

En 10 ms-körning godkändes bara med högst 1 ms jitter, noll missade cykler och överskridanden, högst 20 ms ögonblicksbildsålder och högst 1 ms publicering.[1]

Konfigurationen som klarade testet

PREEMPT_RT med SCHED_FIFO prioritet 80 klarade kraven på båda styrenheterna. Maximalt jitter låg mellan 0,063612 och 0,094448 ms utan missade cykler, överskridanden eller minnesökning.[1]

StyrenhetLastMax jitterBildålderPubliceringMissad / överrun
ANej0,085877 ms1,982421 ms0,096610 ms0 / 0
BNej0,063612 ms9,277714 ms0,064073 ms0 / 0
AJa0,094448 ms3,851881 ms0,081295 ms0 / 0
BJa0,067025 ms9,068315 ms0,079147 ms0 / 0

De underkända körningarna förklarar resultatet

Standard- eller trimmad konfiguration gav 2,258783–3,662989 ms. PREEMPT_RT utan FIFO förbättrade läget men missade fortfarande gränsen med 1,014743 och 1,340064 ms.[1][2][3]

  • Mät hela schemaläggningen, inte bara kärnan.
  • Håll nätverk, loggning och blockerande I/O utanför den cykliska tråden.
  • Arkivera underkända körningar tillsammans med de bästa.

Vad detta bevisar och inte bevisar

Resultatet stödjer fortsatt 10 ms-pilotarbete. Det bevisar inte slutligt godkännande, fysisk I/O-timing, långtidsbeteende, korrekta värden eller safety-lämplighet.[1]

Kvar finns kallstart under last, 100 ms-profiler, servicekonkurrens på samma kärna, backendens färskhet och validering från ände till ände.[1]

Nästa test ska försöka knäcka resultatet

  1. Kallstarta när alla laster börjar samtidigt.
  2. Kör service och runtime på samma kärna.
  3. Kör länge nog för temperatur och loggrotation.
  4. Mät fysisk I/O utöver mjukvarutidsstämplar.
  5. Publicera rådata, konfiguration och misslyckanden.

Vanliga frågor

Garanterar PREEMPT_RT deterministisk styrning?

Nej. Hårdvara, drivrutiner, prioriteringar, last och applikation avgör fortfarande det mätta resultatet.

Varför SCHED_FIFO?

Det låter styrtråden med högre prioritet avbryta normala uppgifter, när arbetet är begränsat och övervakat.

Är detta ett produktionsgodkännande?

Nej. Det är fyra stationära pilotkörningar på två enheter med öppet redovisade luckor.

Källor och standarder

  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 granskade senast de tekniska påståendena och källänkarna den 26 juli 2026. Produktpåståenden kontrolleras mot aktuella implementationsrepon; arbete på färdplanen presenteras inte som lanserad funktionalitet.

Definiera tidsbudgeten före styrenheten

Ta med period, I/O-väg, last och felkriterier. Vi gör dem till en mätbar pilot.

Diskutera en pilot