Der Linux-Kongress 2009 in Dresden
Beinahe wäre es zum dritten Mal zu einem Linux-Kongress in Hamburg gekommen. Doch zwei Monate vor dem Termin wurde der 16. Internationale Linux-Kongress auf Ende Oktober verschoben und nach Dresden verlegt. Dieser Artikel gibt eine Übersicht über die Themen und Vorträge.
Clustered Samba ist eine Neuentwicklung, um Samba auf mehreren Servern parallel betreiben zu können. Dies stellte schwere Anforderungen an den Distributed Lock Manager (DLM), die kein existierender DLM erfüllen konnte. Das Team entwickelte daher Clustered TDB (CTDB), der einsatzbereit ist.
Weitere Neuerungen in Samba sind eine optionale Registry, die Arbeit an NTFS-ACLs, die sich nicht auf die sehr beschränkten POSIX-ACLs abbilden lassen und daher eine eigene Implementierung in Samba benötigen, und eine einsatzbereite Verschlüsselung. Das Protokoll SMB2, eingeführt in Windows Vista, ist als Prototyp in Samba4 vorhanden, jetzt experimentell auch in Samba3.
In der nächste Runde von Vorträgen sprach Gazment Gerdeci über »Real-Time performance comparisons and improvements between 2.6 Linux Kernels«. Er untersuchte die Latenzzeit und Geschwindigkeit in präemptiven und Echtzeit-Kerneln anhand des Realfeel-Benchmarks. Präemtive Kernel sind heute bereits verfügbar, während Echtzeit-Kernel bekanntermaßen einen Patch benötigen. Der Autor kam zu dem Ergebnis, dass beide Kernel-Varianten bereits großartige Ergebnisse liefern und mit Version 2.6.31 gegenüber 2.6.20 und 2.6.26 spürbare Verbesserungen erzielt wurden.
Heinz Mauelshagen gab in Raum 2 ein »dmraid update«. Neu in dem kürzlich aktualisierten Tool ist vor allem die Möglichkeit, Fake-RAIDs zu erzeugen, zu löschen, neu zu konfigurieren und zu überwachen, was bisher nur entweder im BIOS oder mittels Windows-Tools machbar war. Anfangs ist dies nur mit dem Intel IMSM-Format möglich.
Nach einer letzten Kaffeepause mit Obst und Gebäck begannen die letzten beiden Vorträge des Tages. In Raum 1 referierte Wolfgang Mauerer in »The Good, the Bad, and the Ugly? Structure and Trends of Open Unix Kernels« über diverse Code-Metriken, die er für Linux, FreeBSD, OpenBSD, NetBSD und OpenSolaris ermittelte. Dazu zog er soweit wie möglich die Historie der jeweiligen Versionsverwaltungssysteme für die letzten fünf Jahre zu Rate. Damit erzielte er teilweise erstaunliche Ergebnisse, die zwar mit etwas Vorsicht genossen werden müssen, aber sich meist auch mit den jeweiligen Entwicklungsmodellen vereinbaren lassen. So fand er heraus, dass der OpenSolaris-Code fast genauso groß ist wie der von Linux und genauso schnell wächst. Nur läuft OpenSolaris auf wesentlich weniger Architekturen als Linux und weist viel weniger Treiber auf. Ein Teil des Umfangs kann auf ZFS zurückgeführt werden. Woher der Rest kommt, ist einer eingehenderen Untersuchung zu überlassen.
In Raum 2 stellte derweil Jan Blunck verschiedene Methoden zum »Userspace Application Tracing« vor. Der Vortrag befasste sich damit, wie das etablierte LTT (Linux Trace Toolkit), das bisher nur Kernel-Code tracen konnte, auf den Userspace erweitert wurde.
Anschließend erläuterte Christian Couder in Raum 1 »Fighting regressions with git bisect«. Der Vortrag war eine Mischung aus praktischer Anleitung und Betrachtung des Algorithmus mit Ideen, wie dieser verbessert werden könnte. Für alle Anwender dieses Versionsverwaltungssystems war es sicher ein lohnender Vortrag.
In Raum 2 bewertete Jörg Zinke den »System call tracing overhead« von zwei bekannten Mechanismen, ptrace und systrace. Ersteres ist POSIX-Standard, letzteres kommt aus der BSD-Welt, ist flexibler als ptrace und als Patch für Linux verfügbar. In eingen Benchmarks ermittelte Zinke für systrace einen größeren Overhead als ptrace, jedoch kann die Zahl der tatsächlich getracten Systemaufrufe gesenkt werden, so dass es insgesamt effizienter ist.
Zum Geselligen Abend trafen sich die Teilnehmer ab 19 Uhr in den Festungsmauern, einem Lokal, das wie der Name schon andeutet, in den ehemaligen Festungsmauern der Stadt, nicht weit von der Elbe entfernt, liegt. Neben gutem und reichlichem Essen und Getränken entspannen sich vielerlei Gespräche, und so mancher Teilnehmer kehrte erst lange nach Mitternacht in sein Hotel zurück.
Zweiter Konferenztag: Freitag, 30. Oktober
Der Freitag begann um 9.45 mit weiteren Vorträgen. Jörn Engel beschrieb in »Valgrind your filesystem«, wie er das Programm Valgrind, das zum Finden von Speicherfehlern dient, auf sein Dateisystem logfs anwandte. Anlass war ein schwer zu reproduzierender Fehler in logfs. Er wollte daher Valgrind anwenden. Das Problem ist nun, dass Valgrind im Userspace läuft, das Dateisystem nicht. So hatte Engel drei Möglichkeiten: Portierung des Dateisystems in den Userspace (z.B. auf das FUSE-API); dies hätte aber massive Eingriffe bedeutet und damit die Fehlersuche womöglich vereitelt. Die zweite Möglichkeit war die Portierung des Linux-VFS in den Userspace; diese Möglichkeit zog der Entwickler vor. Die dritte Alternative, den ganzen Kernel im Userspace laufen zu lassen, hätte Patches für UML und Valgrind erfordert.
Das Ergebnis von sechs Wochen Portierungsarbeit war, dass logfs unter dem in den Userspace portierten VFS lief. Valgrind fand Speicher- und Informationslecks im Dateisystem, den ursprünglichen Fehler jedoch nicht. Es trat jedoch ein erfreulicher Nebeneffekt ein: Der Fehler wurde reproduzierbar. Nach dieser Feststellung waren nur noch wenige Stunden konventionelle Arbeit mit einem Debugger nötig, um das Problem zu beheben. Falls andere Dateisystementwickler das Verfahren aufgreifen wollen, müssen sie wahrscheinlich noch Erweiterungen vornehmen, doch der Grundstein ist gelegt. Engel selbst brachte das Dateisystem ext2 teilweise zum Laufen, ließ die Arbeit jedoch unvollendet.
Gleichzeitig hielt Volker Lendecke einen zweiten Vortrag über »Async Programming in Samba«. In diesem beschrieb er die Methode zur Programmierung von asynchronen Ein- und Ausgaben, auf die sich das Samba-Team nach diversen Tests geeinigt hat. Es wird eine Ereignis-Bibliothek verwendet, deren Anwendung von Lendecke vorgestellt wurde.


