Ein neuer Monat, ein neuer Kernel-Rückblick. Dieser ist, neben vielen anderen interessanten Themen, in der aktuellen Ausgabe von freiesMagazin enthalten.
Der August war keine zwei Tage alt und hatte schon die Freigabe des Kernels 2.6.35 gesehen. Dessen Neuerungen spielen sich zu größten Teil hinter den Kulissen, kaum sichtbar für die meisten Anwender, ab.
Diese dürften noch am ehesten die nun nutzbaren Energiesparfunktionen einiger Radeon-Grafikkarten und AMD-Prozessoren bemerken. Dagegen eher im Hintergrund finden sich Verbesserungen der Netzwerkkommunikation. Hier stehen mit „Receive Packet Steering“ und „Receive Flow Steering“ zwei neue Techniken für die Optimierung der Arbeitsverteilung auf mehrere Prozessoren oder Kerne zur Verfügung. Receive Packet Steering verteilt die Bearbeitung von Netzwerkpaketen möglichst gleichmäßig über die verfügbaren Prozessoren/Kerne, Receive Flow Steering dagegen ordnet diese zu einem Strom von zusammengehörigen Netzwerkpakete („Flow“) der CPU zu, die auch die mit dieser Kommunikation betraute Anwendung abarbeitet (siehe „Der Mai im Kernelrückblick“, freiesMagazin 06/2010 [1]). Ebenfalls in den Bereich Netzwerk fällt die Unterstützung für Multicast-Routing-Instanzen. Hier war man bislang auf Userspace-Daemons angewiesen, um mit Multicasts (Verbindungen von einem Sender an eine bestimmte Gruppe von Empfängern) umzugehen [2].
Auch verfügt der Linux-Kernel jetzt über native Unterstützung für das „Layer 2 Tunneling Protocol“ (L2TP) [3] und ermöglicht damit den Aufbau virtueller privater Netzwerke (VPN), also die Verbindung von Rechnern über das Internet hinweg zu einem virtuellen lokalen Netzwerk (VLAN).
Weniger Beachtung fand die Einführung von „delayed logging“ in das Dateisystem xfs. Diese Methode, um das Journal des Dateisystems zu schreiben, bildet das Journaling-Verhalten von ext2/ext3 und ReiserFS im Kleinen nach, die nicht sofort bei der Änderung von Daten auf den Datenträger schreiben, sondern mit leichter Verzögerung. Dadurch wird das System weniger belastet, Schreibvorgänge laufen für den Anwender schneller ab. Stürzt jedoch das System ab, bevor die Änderungen tatsächlich physisch auf den Datenträger geschrieben wurden, so kann dies zu Datenverlust führen, wie es zum Beispiel bei der Einführung von ext4 passierte, das Änderungen um bis zu 60 Sekunden verzögert geschrieben hatte (siehe „Ein Tuz für den Kernel“, freiesMagazin 04/2009 [4]).
Für eine bessere Speicherverwaltung sorgt „memory compaction“, das versucht, belegte Pages zusammenzufassen. Dadurch stehen dann größere Blöcke freien Speichers zusammenhängend zur Verfügung, während der belegte Speicher ebenfalls an einem Stück ist. Die Zuweisung größerer Speicherbereich wird dadurch einfacher, da diese dann zusammenhängend zur Verfügung stehen.
Verschiedene Verbesserungen gab es an Entwicklerwerkzeugen, z.B. dem Leistungsmonitor „perf“, der nun einen Live-Monitor bietet und auch Gäste der Virtualisierungstechnik KVM (Kernel-based Virtual Machine) beobachten kann, sowie dem
Kernel-Debugger „Kgdb“, der nun den von SGI [5] entwickelten Debugger „KDB“ als Aufsatz erhalten hat. Letzterer ermöglicht es, das Frontend auf dem zu untersuchenden System zu betreiben, was bei Kgdb bislang nicht möglich war.
Eine weitergehende Auflistung der neuen Funktionen liefert hier wieder einmal die Seite Kernel Newbies [6].
Die Entwicklung des nächsten Kernels ist derweil bereits angelaufen. Zwei Wochen nach der Veröffentlichung von 2.6.35 schloss Torvalds das Merge Window mit der Freigabe des 2.6.36-rc1 [7] ab. Die übliche Mail zur Vorabversion gab es diesmal aufgrund von Problemen mit einem Speicherleck jedoch nicht, wie Torvalds bei der Veröffentlichung des -rc2 [8] mitteilte. Auch diesmal will Torvalds wieder standhaft bleiben und weiterhin nur Korrekturen während der weiteren Entwicklung in den Kernel aufnehmen, wobei er jedoch bei einigen Funktionen im Zusammenhang mit VFS (Virtual File System), einer Abstrahierungsschicht für Anwendungen zum Zugriff auf die Dateisysteme des Linux-Systems, ein Auge zugedrückt hat.
Als eine der hervorstechendsten Neuerungen sieht Torvalds „Fanotify“, das Dateisysteme auf Änderungen überwacht und gegebenenfalls Benachrichtigungen an Prozesse und Anwendungen versendet, die im Kontext des Anwenders laufen. Weiterhin kann „Fanotify“ auch das Öffnen bestimmter Dateien verhindern. Eine Anwendung hierfür sind Malware- und Viren-Scanner, die eine Echtzeitüberwachung des Dateisystems durchführen. Trotzdem verkündete Torvalds seine Absicht, in den nächsten Jahren keine weiteren Benachrichtigungs-Mechanismen mehr aufzunehmen, es sei denn sie würden mit einer besonders guten Begründung eingereicht werden.
Ebenso bemerkenswert ist „workqueue“, ein Hilfsmittel zur Prozessverwaltung, das komplett überarbeitetet wurde und durch eine Minimierung der neu erzeugten Prozesse Redundanzen verhindert und damit die Leistung auf Mehrkern- und Mehr-Prozessor-Systemen verbessert.
Daneben hat mit dem „Out-of-Memory Killer“ ein neuer Mechanismus zum Freigeben von Arbeitsspeicher Einzug gehalten, der das Verhalten des Systems verbessern soll, wenn im RAM kein freier Platz mehr zur Verfügung steht.
Nach langen Jahren konnte nun AppArmor den Weg in den offiziellen Kernel finden; seit 2.6.36-rc1 ist es Bestandteil des von James Morris gepflegten Security-Subsystems [9]. AppArmor basiert auf den Linux Security Modules, einem Framework, das die Werkzeuge zur Umsetzung von Mandatory Access Control (MAC) liefert, womit die Zugriffsberechtigungen in einem System basierend auf Regeln verwaltet werden können. Damit müssen zum Beispiel OpenSUSE oder Ubuntu künftig zumindest mit diesen Kernel-Modul nicht mehr selbst den Kernel ihrer Distribution patchen.
Kurz erläutert: „Speicherleck“Wird ein Bereich des Arbeitsspeichers von einem Programm belegt, jedoch nicht verwendet und/oder auch nicht mehr freigegeben, so spricht man von einem Speicherleck oder „Memory Leak“. Grund dafür kann ein Fehler im Programm sein, das sich dann zwar einen Speicherbereich reserviert, jedoch den Zeiger, der die Adresse zu diesem Bereich enthält, verliert oder überschreibt. Wird dann durch einen veränderten Zeiger ein anderer Speicherbereich ausgelesen oder gar beschrieben, so können Probleme in ganz anderen Anwendungen auftreten, wodurch das Auffinden des ursprünglichen Problems sehr schwer ist.
Quellen:
[1] http://www.freiesmagazin.de/freiesMagazin-2010-06
[2] http://de.wikipedia.org/wiki/Multicast
[3] http://de.wikipedia.org/wiki/Layer_2_Tunneling_Protocol
[4] http://www.freiesmagazin.de/freiesMagazin-2009-04
[5] http://de.wikipedia.org/wiki/Silicon_Graphics
[6] http://kernelnewbies.org/Linux_2_6_35
[7] http://www.pro-linux.de/news/1/16041/linux-kernel-2636-tritt-in-die-test...
[8] http://lkml.org/lkml/2010/8/22/105
[9] http://www.pro-linux.de/news/1/15985/apparmor-kommt-in-offiziellen-linux...
