FreeBSD Status Report Juli - September 2010

Der Statusreport für den Zeitraum Juni bis September 2010 des FreeBSD Projektes wurde veröffentlicht und ich habe darin einige interessante Sachen gefunden. So gibt es Entwicklung in der Richtung den Default-Compiler (GCC) durch Clang zu ersetzen, Umbau der Eventverwaltung im Kernel, ZFS v28 zu integrieren und einige Sachen mehr.

Clang ersetzt GCC im Basissystem

Clang ist ein Compilerfrontend, welches auf dem Projekt LLVM aufbaut. Mit Clang ist es möglich Quellcode schneller zu kompilieren, bei einem geringeren Speicherverbrauch. Die Performance wird dadurch nicht beeinträchtigt, allein die entstehenden Kompilate sind etwas grösser.

In Version 9 von FreeBSD soll der default compiler für den Kernel und das Basissystem von GCC zu Clang umgezogen werden. Am 25.02.2009 konnte der FreeBSD Kernel kompiliert ([ANNOUNCE]: clang/llvm can compile booting FreeBSD kernel on i386/amd64) werden, war damals in etwa in dem Zustand, wie der Linux Kernel 1,5 Jahre ([cfe-dev] Clang builds a working Linux Kernel (Boots to RL5 with SMP, networking and X, self hosts)) später.

Mittlerweile läft der FreeBSD Kernel und das Userland stabil und braucht nur noch Tests. Es ist geplant auch Ports auf Clang umzustellen. Es gibt allerdings Ports, die auch in Zukunft nur mit dem GCC gebaut werden können, da sie meist Erweiterungen des GCC nutzen, welche in keinem Standard vorkommen.

Eventverwaltung im Kernel

Jeder Architektur hat im Kernel ihre eigene Timerarchitektur, was zu einer grossen Fragmentierung des Codes beigetragen hat. Zudem wurde der Timer immer mit 1Hz oder 4*1Hz aktiv, so dass es 10.000 und mehr Interrupts gab, welche die CPU nicht zur Ruhe kommen liess.

Bei diesem Projekt wird nun ein einheitliches Interface geschaffen, welches die zur Verfügung stehenden Timer benutzt. Zusätzlich gibt es Bemühungen Ticks zu sparen und den Scheduler auf Tickless oder auf viel weniger Ticks zu bringen. Bei ersten Tests konnte damit die Zahl der Interrupts von ~16.000 auf 90 gesenkt werden. Zudem gibt es bebühungen den Scheduler dazu zu bringen, schlafende Cores nur zu wecken, wenn es absolut nötig ist, da bei neueren Prozessoren einzelne Cores auch übertaktet werden können.

neues sysinstall

Seit mehr als einer Dekade begleitet sysinstall nun das FreeBSD Projekt und ist damit zu einem der stabilsten und verlässlichsten Installer geworden. Allerdings unterstützt er viele neuere Features des FreeBSD Projektes nicht mehr, wie zum Beispiel GPT, ZFS, Raidinstallationen und so weiter, so dass nun an einem neuen Installer gearbeitet wird. Dieser kommt nun von PC-BSD, einem FreeBSD-Derivat und heisst pc-sysinstall. Er soll mit FreeBSD 9 der neue Standardinstaller werden.

pc-sysinstall arbeitet etwas anders als die meisten Installer, die bisher entwickelt wurden. So Ist pc-sysinstall im ersten Moment nichts weiter als eine Bibliothek, an der verschiedene Frontends angeschlossen werden können. So sind zum Beispiel installer in QT, GTK, ncurses usw. machbar. Was allerdings dabei herauskommt ist keine fertige Installation, sondern ein Script, welches dann erst die Installation ermöglicht. Das hat den Vorteil, dass man sich seine Installation zusammenbauen kann und diese dann immer wiederholen kann. Ob auf der selben Maschine oder auf vielen weiteren ist dabei egal.

Der neue Installer ist bereits in HEAD implementiert, Testmedien, mit denen der Installer ausprobiert werden kann, befinden sich in Entwicklung.

Eine kleine Liste der Features kann auch im vorherigen Report nachgelesen werden.

Featureliste des Kernels

In FreeBSD 8.0 kam ein neues Set an Ausgaben in Sysctl hinzu, welches kern.features hiess. Darin enthalten war eine kleine Liste an Optionen, was von dem System unterstützt wurde.

In Version 9 kommen nun viele weitere Optionen hinzu (mehr als 80). Es ist geplant, dass sich jedes Subsystem bei sysctl registriert und somit eine Liste der Features zustande kommt, welche auf dem aktuell laufenden System vorhanden sind. Werden Subsysteme nicht in den Kernel kompiliert, so erscheinen diese einfach nicht und man hat Gewissheit darüber, dass das Feature nicht vorhanden ist.

ZFS

Die aktuelle ZFS-Version in FreeBSD 8.1 ist die Version 15. Die letzte in OpenSolaris verfügbare Version war 28. In FreeBSD 9 soll nun Version 28 in FreeBSD verfügbar sein. Die meiste Arbeit daran ist schon getan und ein Patch existiert. Allerdings muss dieser noch ausgiebig getestet werden. Was kommt damit alles hinzu? Deduplication,triple parity RAIDZ, diff, split, snapshot reference count, die Möglichkeit zu einem früheren Stand eines Pools zurückzukehren und read-only import. Eine Gute Zusammenfassung zu dem Patch gibt es im im Announcement.

Es gibt noch einige weitere tolle Projekte, welche in FreeBSD 9 enthalten sein werden und teilweise auch noch auf 8-CURRENT portiert werden sollen, wie zum Beispiel Ressourcelimits, Erweiterungen an VIMAGE/VNET, dem Chromiumport usw. FreeBSD 9 koennte also fast wie Weihnachten und Geburtstag auf einmal werden ;)