Archiv der Kategorie: PREEMPT-RT

Raspberry Pi 2 und Real-Time Linux

Das Echtzeitverhalten des Single-Core Raspberry Pi wurde im Beitrag Echtzeitfähiger Raspberry Pi untersucht. Der RT Patch des Kernel wurde beschrieben.

Mittlerweile sind auch Ergebnisse für den Quad-Core Raspberry Pi 2 verfügbar. In der QA-Farm von OSADL wird das Real-Time Verhalten einem ständigen Monitoring unterzogen. Bei Interesse sollte unbedingt der betreffende Beitrag in den OSADL News gelesen werden.

Mit dem RT Patch des Kernels werden nunmehr die folgenden Latenzzeiten erreicht.

rbs3s

 

Echtzeitfähiger Raspberry Pi

In vielen Bereichen der Steuerungstechnik wird echtzeitfähiges Verhalten der eingesetzten Rechner erwartet. Für Mikrocontroller, die ohne Betriebssystem (bare metal) arbeiten, ist das in der Regel kaum ein Problem. Will man auf ein Betriebssystem nicht verzichten, dann stehen zahlreiche Echtzeit-Betriebssysteme (RTOS) zur Verfügung.

Für Linux-Devices gibt es verschiedene Möglichkeiten, Echtzeitfähigkeit sicher zu stellen. Im White Paper „LINUX und Echtzeit – Eine Übersicht prinzipieller Lösungsansätze“ werden unterschiedliche Möglichkeiten dazu aufgezeigt. Der PREEMPT_RT Patch des Mainline-Linux-Kernels ist der favorisierte und durch die Linux-Community getragene Ansatz.

Die Schritte zum Aufsetzen eines PREEMPT_RT Kernels für den Raspberry Pi  sind auf einer separaten Webseite dokumentiert.

An dieser Stelle werden die Ergebnisse der Latenzzeitmessung mit dem Programm cyclictest für Raspbian Jessie und den Kernel mit  PREEMPT_RT Patch verglichen:

Linux raspberrypi 4.4.9+ #884 Fri May 6 17:25:37 BST 2016 armv6l GNU/Linux

$ sudo ./cyclictest -l50000000 -m -n -a0 -t1 -p99 -i400 -h400 –q

hist
# Total: 049929616
# Min Latencies: 00014
# Avg Latencies: 00033
# Max Latencies: 03978
# Histogram Overflows: 70384

Die mittlere Latenzzeit beträgt 33 µs, wobei 70384 der insgesamt 50 Mio Messungen oberhalb von 400 µs liegen und die maximale Latenzzeit sogar 3978 µs beträgt.

Linux raspbberypi 4.1.15-rt15 #1 PREEMPT RT Tue May 17 17:19.15 CEST 2016 armv6l GNU/Linux

$ sudo ./cyclictest -l50000000 -m -n -a0 -t1 -p99 -i400 -h400 –q

rthist
# Total: 050000000
# Min Latencies: 00015
# Avg Latencies: 00027
# Max Latencies: 00146
# Histogram Overflows: 00000

Die mittlere Latenzzeit beträgt 27 µs und die maximale Latenzzeit nur 146 µs.

Fazit

Durch den Einsatz des PREEMPT_RT Patchs auf den Kernel werden die Latenzzeiten deutlich reduziert und Determinismus des zeitlichen Verhaltens erreicht.

Für den hier untersuchten Raspberry Pi wurde die maximale Latenzzeit von fast 4 ms auf weniger als 150 µs reduziert.