Linux Realtime-Fähigkeiten

Linux Realtime-Fähigkeiten

Abstract

Deutsch

Der Wirtschaftspartner möchte in einem Produktentwicklungsprojekt eine Realtimeanwendung mit Linux realisieren. Diese soll alle 200μs ein Ethernet-Frame versenden können, wobei höchstens 1ms Verzögerung eintreten darf. Als Plattform steht der ARM-Embedded-Computer TS-7800 zur Verfügung. Im ersten Teil dieser Arbeit wird gezeigt, dass sich für die geplante Anwendung die Lösungsvariante den Linux-Kernel selbst als Realtime-Betriebssystem zu verwenden am besten eignet. Damit der Linux-Kernel selbst realtimefähig ist, muss dieser mit dem Preempt-RT-Patch abgeändert werden. Dadurch werden Interrupt-Service-Routinen zu Threads und die meisten nicht unterbrechbaren Bereiche mittels wechselseitigem Ausschluss (Mutex) unterbrechbar gemacht. Das detaillierte Aufzeigen dieser Techniken ist ein Schwerpunkt der Arbeit welcher im mittleren Teil thematisiert wird. Um die Implementierung von Realtimeanwendungen mit Preempt-RT aufzuzeigen, werden zwei Beispielanwendungen (Squarewave Erzeugung und Ethernet-Frames senden) in zwei Varianten (als Kernelmodul und als Userspace-Anwendung) erstellt und erläutert. Es wird gezeigt mit welchen Hilfsmitteln Verzögerungen gemessen und aufgedeckt werden können. Im letzten Teil wird mit Messungen die Realtimefähigkeit des abgeänderten Linux-Kernels bewiesen. Auf der gegebenen Plattform sind mit dem Preempt-RT-Patch maximale Latenzzeiten von 212μs gemessen worden. Der abgeänderte Linux-Kernel zeigt etwas höhere Durchschnittslatenzzeiten, die maximalen Latenzzeiten sind jedoch deutlich tiefer als beim herkömmlichen Linux-Kernel. Der Unterschied der maximalen Latenzzeiten zwischen Kernelmodul und Userspace-Anwendung ist gering gewesen. Bei Performancemessungen der Beispielanwendungen sind erheblich tiefere CPU-Lasten bei der Kernelmodulimplementation der Ethernet- Frames-Anwendung nachgewiesen worden. Um zu entscheiden mit welcher Variante eine Realtimeanwendung implementiert wird, sollten daher Faktoren wie Performance, Portabilität, Lizenzfragen oder generelle technische Unterschiede herbeigezogen werden.

English

A commercial partner would like to use Linux in a product development project to implement a real time application. This application should send an Ethernet frame every 200μs, with a worst-case latency of 1ms. As platform, the ARM Embedded Computer TS-7800 is used. In the first chapters of this work is shown, that the solution using the Linux kernel itself as real time operating system is best suited. To gain real time abilities with the Linux kernel it has to be altered with the Preempt RT patch. Thereby threads are made out of interrupt service routines and the most uninterruptible areas are made interruptible by using mutexes. This is explained in detail in the middle part of the work which is a focal point of this work. In order to demonstrate the implementation of a real time applications with Preempt RT two sample applications (square- wave and Ethernet frame sending) in two variants (as a kernel module and a user space application) are created and explained. It is shown with which tools latencies can be found and exposed. In the last part measures are made to show the real time abilities. On the given platform worst-case latencies of 212μs has been measured. The altered Linux kernel shows slightly higher average latencies, but the worst-case latency are much lower than with the conventional Linux kernel. The difference in the worst-case latency times between the kernel module and user space application is very low. Performance measures with the sample application have shown significantly lower CPU loads at the kernel module implementation of the Ethernet frame sending application. To decide with which variant a real time application should be implemented, factors such as performance, portability, licensing questions or general technical differences should be used.