Die Neuerungen von Linux 2.6.37
Seite 4: Storage, Virtualisierung
Storage
Der für Schreibbarrieren zuständigen Code arbeitete nach Ansicht einiger Kernel-Hacker bislang an einigen Stellen übervorsichtig. Eine größere Umstrukturierung soll dem ein Ende machen und verlagert die Verantwortung zum Ordnen der Schreibreihenfolge größtenteils an den Dateisystemcode, was den Datendurchsatz bei bestimmten Aufgaben deutlich steigern soll. Über Control Groups (Cgroups) lässt sich nun auch der maximale Durchsatz von Datenträgern limitieren; Details liefern einige der Commit-Kommentare (1, 2, 3, 4) und die aktualisierte Dokumentation.
Das Libata-Subsystem arbeitet nun auch mit Festplatten zusammen, die nicht nur physisch, sondern auch logisch mit Sektoren arbeiten, die nicht 512 Byte groß sind; getestet hat der Entwickler den Code mit einem "Engineering Sample" eines mit 4K-Sektoren arbeitenden Datenträgers von Hitachi GST. Im SCSI-Subsystem und dem darauf aufbauenden Libata-Code gab es einige größere Änderungen, die die Locking-Mechanismen umbauen, was manche Treiber beschleunigen soll (u. a. 1, 2)
Was sich an den Treibern für Ihr System geändert hat
Über das Git-Web-Frontend auf Kernel.org lassen sich Informationen zu Änderungen an einzelnen Dateien des Linux-Kernels aufrufen – das können Sie nutzen, um herauszufinden, ob es Neuerungen an den auf Ihrem System eingesetzten Treibern gab. Dazu muss man allerdings wissen, wo sich die Treiberdateien im Quellcodebaum des Linux-Kernels finden. Bei den modularisierten Kerneln der Linux-Distributionen helfen häufig die Ausgaben bei der Suche, welche das Programm modinfo zusammen mit den von lsmod ausgegebenen Modulnamen aufruft:
$ /sbin/modinfo e100 e1000 | grep filename:
filename: /lib/modules/[...]/kernel/drivers/net/e100.ko
filename: /lib/modules/[...]/kernel/drivers/net/e1000/e1000.ko
Liegt ein kompiliertes Modul etwa in [...]/kernel/drivers/net/e100.ko, dann findet sich dessen Quellcode im Linux-Quellcodearchiv normalerweise im Verzeichnis drivers/net/ in Dateien mit ähnlichem Namen – etwa e100.c im Falle des Treibers e100 für 100-MBit-Netzwerkhardware von Intel. Andere Module wie der für Intels PCI-Gigabit-LAN-Chips zuständige Treiber e1000 haben hingegen ein eigenes Verzeichnis unterhalb von drivers/net/.
Kennt man die ungefähre Position des Treiber-Quellcodes, navigiert man im Git-Webinterface der Linux-Quellen über die Tree-Ansicht zu den jeweiligen Quellcode-Dateien und ruft über den Link "History" eine Übersicht über die jüngsten Änderungen an den zugehörigen Dateien oder dem ganzen Verzeichnis auf. Im Verzeichnis für die Netzwerktreiber lassen sich so beispielsweise die Änderungen am Treibercode von e100 (drivers/net/e100.c) und e1000 (drivers/net/e1000/) anzeigen und begutachten.
Virtualisierung
Unter den von den Xen-Entwicklern für Linux 2.6.37 beigesteuerten Änderungen war auch der "Initial Domain Support", der den Kernel um Funktionen zum Betrieb als Dom0 erweitert (u. a. 1, 2, 3, 4, 5, 6, 7). Für Xen-Anwender ist das aber fürs erste keine große Hilfe, da der Treiber zum Aufsetzen der Xen-Backends fehlt, über die die Gastsysteme auf Datenträger und Netzwerk zugreifen. Die Xen-Entwickler planen, den dafür zuständigen Code zur Aufnahme bei 2.6.38 einzusenden, sodass mit dieser Version der Dom0-Betrieb möglich sein könnte. Beim diesem und dem jetzt in den Kernel integrierten Xen-Code handelt es sich jedoch um eine abgespeckte Variante, die weniger Funktionen bietet als aktuelle Xen-Versionen oder der XenServer von Citrix.
Wie geplant hat ein VMware-Entwickler die UnterstĂĽtzung fĂĽr die ursprĂĽnglich von VMware propagierte Paravirtualisierungschnittstelle VMI (Virtual Machine Interface) aus dem Linux-Kernel entfernt: Der Aufwand lohne nicht nicht mehr, da sich x86-CPUs mit Virtualisierungstechniken durchsetzten und man damit bessere Performance erziele als bei voller Paravirtualisierung. HintergrĂĽnde dazu liefert ein Blog-Eintrag auf der VMware-Homepage.