|
LIVE Linux-Verband e.V. / Universität Hannover 4. - 5. März 2004 |
|
|
|
|
|
Zeitkritische Aufgaben in Linux 2.6 Konzepte zur Steigerung der Preemptivität Linux 2.6 ist für Soft-Realtime Aufgaben geeigneter als frühere Kernel. In Linux 2.4 hängt die Scheduler-Laufzeit von der Anzahl rechenbereiter Prozesse ab, in 2.6 ist sie konstant wie unsere Messung belegt. Der Timerinterrupt kommt in 2.6 jede Millisekunde, dies führt - bei entsprechendem Overhead - zu einer 10 mal besseren Zeitauflösung als in Linux 2.4. Der in 2.6 integrierte einschaltbare Preemptible Kernel erlaubt es, Kernel-Systemdienste falls nötig zu unterbrechen, um einen hochprioren Prozess auszuführen. Aber auch der Linux 2.6 Preemptible Kernel enthält längere kritische Abschnitte mit Preemptionsperren, die immer noch zu Verzögerungen für zeitkritische Prozesse führen wie unsere Messungen zeigen. Die Häufigkeit solcher Latenzzeiten kann durch die Wandlung der Preemptionsperren in Mutexe reduziert werden wie es der Linux-GPL-Kernel der Firma Timesys tut. Greifen 2 Prozesse auf denselben Mutex zu, treten dennoch wieder Latenzen auf. Ein belegter Mutex legt den Aufrufer schlafen, Interrupt Handler dürfen dies jedoch nicht. Um auch Preemptionsperren in Interrupt Handlern in Mutexe wandeln zu können, führt der Timesys-GPL-Kernel die Interrupt Handler durch hochpriore Kernel-Threads aus. Wir messen die Interrupt Response Time des Timesys-GPL-Kernels. Mutexe können Prioritätsinversion verursachen. Der kommerzielle Timesys-Kernel begegnet dem durch ein nicht offengelegtes Prioritätsvererbungsprotokoll. Unser GPL Kernel Patch implementiert Mutexe mit Prioritätsvererbung nach einem Vorschlag von Victor Yodaiken (2001), hierzu zeigen wir exemplarische Messungen. Referent:
Arnd Christian Heursch
© 2004 Linux-Automation Orgateam
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||