Linux-Kernel 2.6: Kampfansage an Unix

08.06.2004
Von Jürgen Quade

Die verbesserten dynamischen Systemeigenschaften lassen sich am besten am Zeitverhalten ablesen. Geht es um das Abspielen von Musik oder von Videos, kann der Zwo-Sechser auftrumpfen. Die Interrupt- und vor allem die Task-Latenzzeiten sind im Mittel um den Faktor zehn besser als zuvor - im Durchschnitt. Denn das Verhalten im Worst und auch im Best Case ist nur marginal verbessert worden. Der Einsatz von Linux in harten Echtzeitumgebungen ist nach wie vor nur in Kombination mit einer Echtzeiterweiterung (zum Beispiel RTAI oder RT-Linux) möglich.

Für die verbesserte Performance und das gute Zeitverhalten lassen sich eine Reihe von Ursachen ausmachen. Linus Torvalds beispielsweise hat den bereits für Kernel 2.4 verfügbaren "Preemption Patch" in den Kernel übernommen. Die Folge: Fast jede Systemfunktion kann unterbrochen werden, nur noch sehr wenige Codeteile sind durch Spinlocks vor Unterbrechungen geschützt.

Darüber hinaus ist die interne Systemfrequenz - quasi der Herzschlag des Kernels - von 100 Hertz auf 1000 Hertz erhöht. Der neue Kernel tickt in jeder Millisekunde einmal. Weil mehr Unterbrechungen zugelassen werden, erfolgt die Reaktion auf Ereignisse direkter. Leistungsschwächere Systeme indes müssen einen geringen Performance-Verlust in Kauf nehmen, der aktuelle und schnelle Systeme nicht betrifft.

Auch der neue Scheduling-Algorithmus hat einen wesentlichen Anteil an besserer Performance und Reaktionsfreudigkeit des Kernels. Der Name ist Programm: O(1) Scheduler. In der Informatik steht das Landau-Symbol O für die Komplexität eines Algorithmus. Entsprechend lässt sich ablesen, dass die Rechenzeit für die Prozessauswahl im Kernel konstant bleibt - wie viele Prozesse lauffähig sind, spielt keine Rolle mehr. Damit nicht genug: Ein weiteres Gimmick des Schedulers besteht darin, die Interaktivität eines Rechenprozesses bei der Verteilung der Rechenzeit einzubeziehen. Hiervon profitieren Prozesse, die viele Ein- und Ausgaben tätigen, typischerweise Desktop- und Multimedia-Applikationen.

Besonders gründlich haben sich die Kernel-Entwickler das I/O-Subsystem vorgeknöpft. Zugriffe auf Blockgeräte lassen sich nunmehr durch einen I/O-Scheduler optimieren. Während für die meisten Einsatzfälle der standardmäßig vorgesehene "Anticipatory Scheduler" ausreicht, wird der Entwickler eingebetteter Systeme den schlanken "Deadline-Scheduler" beim Plattenzugriff vorziehen.