Zum Hauptinhalt Zur Navigation

Linux-Kernel 2.6.23 mit neuem Scheduler und Xen

Neuer Hypervisor Lguest aufgenommen. Der neue Linux-Kernel 2.6.23 enthält mit Xen und Lguest gleich zwei neue Virtualisierungskomponenten, doch auch die vorhandene KVM wurde um neue Funktionen ergänzt. Eine weitere wichtige Änderung ist der neue Scheduler CFS.
/ Julius Stiebert
15 Kommentare News folgen (öffnet im neuen Fenster)

In der Diskussion um einen neuen Scheduler entschieden sich die Linux-Entwickler für den Completely Fair Scheduler (CFS) von Ingo Molnar. Der CFS vereint viele Verbesserungen für den zeitlich gesteuerten Prozessablauf, die in den letzten Jahren vorgeschlagen wurden. Dazu zählen hierarchisch aufgebaute Klassen, die Regeln zur Steuerung unterstützen. CFS verwendet zudem eine Nanosekunden-Granularität und ist unabhängig von Jiffies(öffnet im neuen Fenster) oder anderen Hz-Werten.

Außerdem kann CFS im laufenden Betrieb zwischen einer Desktop- und einer Serveroptimierung umschalten und die Last auf Mehrprozessor-Systemen – zu denen auch Computer mit einer CPU, aber mehreren Kernen zählen – besser verteilen. Das "Fair" im Namen kommt nicht von ungefähr: Der Ansatz des neuen Schedulers ist bewusst "fair" gehalten, so dass bei zwei Prozessen mit gleicher Priorität jedem 50 Prozent der CPU-Zeit zugewiesen werden. CFS tritt damit die Nachfolge des O(1)-Schedulers an, der während der Kernel-2.5-Entwicklung integriert und ebenfalls von Red-Hat-Mitarbeiter Molnar geschrieben wurde.

Im Vorfeld wurde der neue Scheduler viel diskutiert, auch der Staircase-Scheduler warb um die Aufnahme in den Kernel. Nachdem sich abzeichnete, dass die Linux-Programmierer CFS bevorzugen würden, zog sich der Staircase-Autor Con Kolivas komplett von der Kernel-Entwicklung zurück.

Einen weiteren wichtigen Meilenstein markiert die Aufnahme erster Teile des Hypervisors Xen. Die ursprünglich an der Universität Cambridge entwickelte Virtualisierungslösung buhlt schon lange um die Integration in den offiziellen Linux-Kernel. Bereits Anfang 2005 stellte dann auch Andrew Morton, der zusammen mit Linus Torvalds die Entwicklung von Linux 2.6 leitet, in Aussicht, den Quellcode des Projektes schon bald aufzunehmen.

Nun sind tatsächlich erste Xen-Komponenten in den Linux-Kernel gelangt. Noch ist dies aber wirklich nur ein Anfang, denn Linux lässt sich damit künftig direkt als Gastsystem in einer unprivilegierten Domäne (bei Xen "DomU" genannt) installieren. Diese dürfen nicht direkt auf die Hardware zugreifen. Die Domäne 0 (Dom0) hingegen – die den unprivilegierten Domänen Speicherplatz und Ähnliches zur Verfügung stellt – lässt sich auch weiterhin nur in einem angepassten Kernel einrichten. Die Patches für die Suspend- und Resume-Funktion fehlen ebenfalls noch.

Dafür hat es mit Lguest ein weiterer Hypervisor in den Kernel geschafft. Er ist besonders einfach gehalten, mit dem Anspruch, Entwicklern und Anwendern vor allem für Experimente mit Virtualisierung zu dienen. Im Unterschied zu der schon länger vorhandenen Kernel-based Virtual Machine (KVM) braucht Lguest keinen Prozessor mit AMD-V- bzw. Intel-VT-Technik. Insofern gibt es aber auch keine volle Virtualisierung und nur Linux läuft als Gast. Eine 64-Bit-Variante des Hypervisors existiert zwar bereits, der Variante im Linux-Kernel fehlt die 64-Bit-Unterstützung allerdings noch. KVM kann in der im neuen Kernel enthaltenen Version dafür auch Gastsystemen mehrere CPUs zur Verfügung stellen.

Mit dem Kernel 2.6.22 wurde der von SGI entwickelte Slab-Allocator(öffnet im neuen Fenster) SLUB eingeführt – und damit ein neuer Teil für das Speicher-Subsystem des Kernels. Der Slab-Allocator verwaltet den Arbeitsspeicher und ist damit entscheidend für die Leistung des Systems. SGI beklagte einige Probleme mit dem derzeitigen System und entwickelte daher ein neues. In einigen Fällen kann so eine höhere Leistung durch effizientere Speichernutzung erreicht werden, obwohl das grundlegende Design einfacher ist als das des Standard-Slab-Allocators. War SLUB in 2.6.22 noch nicht aktiv, ist er nun der Standard-Slab-Allocator.

Weiter verbessert wurde auch das Read-Ahead-System, eine Technik, bei der eine Datei einfach in den Speicher geladen wird, da der Linux-Kernel damit rechnet, dass sie bald von einem laufenden Prozess angefordert wird. Das neue On-Demand-Read-Ahead-System vereinfacht das vorherige System vor allem, soll aber beispielsweise in MySQL-Benchmarks auch Geschwindigkeitsvorteile bewiesen haben.

Aufgenommen wurde ferner Userspace-I/O (UIO), das Treiber in den Userspace bringt. Direkt für den Kernel ist nur noch ein sehr kleiner Treiber nötig, der mit den Interrupts umgeht. Andere Funktionen können durch das Userspace-Programm erfolgen, das hierfür Sysfs und eine Gerätedatei nutzt.

Damit können auch die Hauptfunktionen in einem proprietären Programm stecken, während nur die Kernel-Schnittstelle unter der GPL veröffentlicht werden muss. Dabei ist von Vorteil, dass diese Schnittstelle stabil bleiben kann und Änderungen am Treiber bei neuen Kernel-Versionen nicht nötig werden. Heute ist es bei proprietären Kernel-Treibern häufig der Fall, dass diese nicht mehr funktionieren, wenn ein neuer Kernel API-Änderungen enthält. Fehler im Treiber würden außerdem nicht zu einem Absturz des Kernels führen.

Änderungen gab es wie so oft auch bei den Dateisystemen. Eine neue Funktion in XFS soll Flaschenhälse bei mehreren hundert Dateitransaktionen auf einmal vermeiden. Dies lässt sich allerdings nur über "mkfs" einschalten, also beim Erstellen eines neuen Dateisystem. Nachträglich ist dies bisher nicht möglich, eine Lösung soll aber noch entwickelt werden. Eine weitere neue XFS-Funktion soll zur besseren Arbeit mit Videos führen, bei denen bestimmte Bildraten erreicht werden sollen.

Das noch in der Entwicklung befindliche Ext4 unterstützt den ebenfalls neu eingeführten Systemaufruf Fallocate, mit dem Anwendungen Speicher für Dateien vorbelegen können. Der Speicher wird so in jedem Fall gesichert, auch wenn das Dateisystem später voll werden sollte. OCFS2 unterstützt den Aufruf ebenfalls.

Neben neuen Sound-Treibern bringt der Kernel 2.6.23 auch einen Treiber für den Gigabit-Netzwerkchip der PlayStation 3 mit und einen Treiber für Realtek-8187-USB-WLAN-Sticks, der auf den mit Linux 2.6.22 integrierten WLAN-Stack Mac80211 setzt. Für die PlayStation 3 kamen darüber hinaus noch weitere Treiber hinzu, beispielsweise für einen HDMI-RGB-Modus und für das Blu-ray-Laufwerk der Spielekonsole.

Auch in anderen Bereichen wie Video4Linux, ACPI und Firewire integrierten die Entwickler neue Treiber.

Wie üblich steht der neue Kernel 2.6.23 als komplettes Archiv(öffnet im neuen Fenster) und als Patch(öffnet im neuen Fenster) zum Download bereit. Auch auf diversen Mirror-Servern(öffnet im neuen Fenster) liegen die Dateien.


Relevante Themen