+++
title = "FreeBSD Status Report Juli - September 2010"
date = "2010-10-29T18:00:00+00:00"
author = "Gibheer"
draft = false
+++

Der Statusreport f&uuml;r den Zeitraum Juni bis September 2010 des
FreeBSD Projektes wurde ver&ouml;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](http://www.freebsd.org/news/status/report-2010-07-2010-09.html#Clang-Replacing-GCC-in-the-Base-System)
-----------------------------------------------------------------------------------------------------------------------------------------

Clang ist ein Compilerfrontend, welches auf dem Projekt
<a href="http://llvm.org">LLVM</a> aufbaut. Mit Clang ist es
m&ouml;glich Quellcode schneller zu kompilieren, bei einem geringeren
Speicherverbrauch. Die Performance wird dadurch nicht
beeintr&auml;chtigt, allein die entstehenden Kompilate sind etwas
gr&ouml;sser.

In Version 9 von FreeBSD soll der default compiler f&uuml;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)](http://lists.freebsd.org/pipermail/freebsd-current/2009-February/003743.html)
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))](http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-October/011711.html)
sp&auml;ter.

Mittlerweile l&auml;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&ouml;nnen, da sie meist Erweiterungen des GCC nutzen, welche in
keinem Standard vorkommen.

[Eventverwaltung im Kernel](http://www.freebsd.org/news/status/report-2010-07-2010-09.html#Kernel-Event-Timers-Infrastructure)
------------------------------------------------------------------------------------------------------------------------------

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&uuml;gung stehenden Timer benutzt. Zus&auml;tzlich
gibt es Bem&uuml;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&uuml;hungen den Scheduler dazu zu bringen, schlafende Cores nur
zu wecken, wenn es absolut n&ouml;tig ist, da bei neueren Prozessoren
einzelne Cores auch &uuml;bertaktet werden k&ouml;nnen.

[neues sysinstall](http://www.freebsd.org/news/status/report-2010-07-2010-09.html#pc-sysinstall)
------------------------------------------------------------------------------------------------

Seit mehr als einer Dekade begleitet sysinstall nun das FreeBSD Projekt
und ist damit zu einem der stabilsten und verl&auml;sslichsten Installer
geworden. Allerdings unterst&uuml;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&ouml;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&ouml;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](http://www.freebsd.org/news/status/report-2010-04-2010-06.html#New-System-Installer-%E2%80%94-pc-sysinstall)
nachgelesen werden.

[Featureliste des Kernels](http://www.freebsd.org/news/status/report-2010-07-2010-09.html#Registration-of-Optional-Kernel-Subsystems-via%0A------sysctl)
--------------------------------------------------------------------------------------------------------------------------------------------------------

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&uuml;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&uuml;ber,
dass das Feature nicht vorhanden ist.

[ZFS](http://www.freebsd.org/news/status/report-2010-07-2010-09.html#ZFSv28-is-Ready-for-Wider-Testing)
-------------------------------------------------------------------------------------------------------

Die aktuelle ZFS-Version in FreeBSD 8.1 ist die Version 15. Die letzte
in OpenSolaris verf&uuml;gbare Version war 28. In FreeBSD 9 soll nun
Version 28 in FreeBSD verf&uuml;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&ouml;glichkeit zu einem fr&uuml;heren Stand eines Pools
zur&uuml;ckzukehren und read-only import. Eine Gute Zusammenfassung zu
dem Patch gibt es im im
[Announcement](http://lists.freebsd.org/pipermail/freebsd-fs/2010-August/009197.html).

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 ;)
