Die Entwicklung von 2.6.37 ist in vollem Gange, wenn auch durch Linux Plumbers Conference und Kernel Summit zu Beginn etwas ausgebremst. Daneben gibt es auch eine neue Entwicklung aus dem Bereich des Schedulings in diesem Kernelrückblick zu berichten. Dieser ist, neben vielen anderen interessanten Themen, in der aktuellen Ausgabe von freiesMagazin enthalten.
Kernel 2.6.37
Die erste Vorabversion des kommenden Kernels konnte Torvalds bereits am 1. November veröffentlichen (siehe „Der Oktober im Kernelrückblick“, freiesMagazin 11/2010 [1]), die unter anderem eines großen Teils des mittlerweile ungeliebten Big Kernel Locks verlustig wurde. Da darauf erst einmal das Linux Kernel Summit und die Linux Plumbers Conference folgten, die einen guten Teil der Zeit der Kernel-Hauptentwickler in Anspruch nahmen, konnte die zwei Wochen später erscheinende Version -rc2 [2] nicht allzu viele Änderungen aufweisen. Eine größere Aktion, zumindest was den Niederschlag in der Menge der gelöschten und hinzugekommenen Quelltextzeilen betrifft, stellt das Verschieben der tty-Umgebung in einen neuen, eigenen Bereich dar. Der „Teletypewriter“ (deutsch: Fernschreiber), der die Standardeingabe und -ausgabe verwaltet und an Prozesse und Anwendungen weiterreicht beziehungsweise dem Nutzer darstellt, war bisher im Umfeld des Char-Treibers angesiedelt. Eigentlich wäre das passend, bietet dieser Treiber doch die Basis für zeichenorientierte Geräte wie der seriellen Schnittstelle oder den meisten Eingabegeräten. Doch derzeit liegt hier einiges an überflüssigem Code herum, den aufzuräumen Greg Kroah-Hartman nun offensichtlich mit tty begonnen hat.
Auch die dritte Entwicklerversion [3] kam mit relativ wenig spektakulären Änderungen daher. Ein großer Teil wurde durch Arbeiten an Nouveau und Radeon, den freien Treibern für die Grafik-Chipsätze von NVIDIA und ATI/AMD, in Anspruch genommen. Eine kleines Problem, das in manchen Situationen auch den Endanwendern zu schaffen machen könnte, wurde von dem VMware-Entwickler Dmitry Torokhov durch einen Patch behoben: Die Systemabfragetaste, durch die Tastenkombination Alt-SysRq/Druck ausgelöst, dient dazu, Befehle unter Umgehung der aktuellen Oberfläche direkt an das System zu senden, um zum Beispiel einen nicht mehr reagierenden X-Server zu beenden. Diese Tastenkombination, auch als Magic SysRq Key [4] bekannt, wird allerdings vom Kernel abgefangen und nicht an die Oberfläche weitergeleitet, sodass beispielsweise Screenshots darüber nicht konfiguriert oder zumindest durchgeführt werden können. Torokhovs Patch behebt diesen Umstand nun, in dem die Weiterleitung an den Userspace nur unterbunden wird, wenn zu der Tastenkombination eine weitere Taste mit einem gültigen Befehl betätigt wird.
2.6.37-rc4 [5] brachte Ergänzungen der in 2.6.36 neu hinzugekommenen Tile64-Architektur [6], indem der Treiber für die auf dem Chip integrierte Netzwerk-Hardware aufgenommen wurde. Dieser einzelne Patch war für mehr als die Hälfte der Änderungen verantwortlich, der Rest war in erster Linie kleinen Verbesserungen und Korrekturen geschuldet. Aus diesen stach nach Ansicht Torvalds noch eine Reihe von Patches aus der Feder von Trond Myklebust, Entwickler im Dienste von Netapp, hervor, die ein Problem mit der Darstellung von NFS-Verzeichnissen endgültig beheben sollten. Leider hat sich mittlerweile gezeigt, dass der Effekt, bei dem die zurückgelieferte Verzeichnisliste leer ist, weiterhin auftreten kann [7]. Das Problem wurde bei 2.6.37-rc1 zum ersten Mal berichtet und scheint die Entwickler noch ein wenig weiter narren zu wollen.
Neue Wege für das Scheduling
Immer wieder wird von verschiedenen Seiten darauf aufmerksam gemacht, dass Linux zwar auf Rechnern mit hunderten von Prozessoren gut skaliert, das ruckelfreie Abspielen eines Flash-Videos auf Ein- oder Zweikern-Systemen jedoch nicht immer funktioniert - zuletzt von dem Anästhesisten und ehemaligen Kernel-Entwickler Con Kolvias, der mit dieser Aussage seinen Brain Fuck Scheduler [8] vorstellte. Jedoch können Verbesserungen der Leistung eines Desktop-System nicht nur über den Scheduler (siehe Kasten „Kurz erläutert“) erreicht werden, sondern auch über die Art und Weise, wie die laufenden Prozesse sortiert werden. Für den Desktop-Nutzer misst sich die Leistung des Systems meist durch dessen Antwortverhalten: reagiert es prompt auf Maus und Tastatureingaben ist der Anwender zufrieden, bewegt sich der Mauszeiger jedoch ruckhaft, so ist die Bedienmöglichkeit eher eingeschränkt.
Mike Galbraith verfolgt nun den Ansatz, Prozesse zu Gruppen nach Terminal sortiert zusammenzufassen und die CPU-Rechenzeit gleichmäßig auf diese Gruppen zu verteilen, während innerhalb der Gruppe die ihr zur Verfügung gestellte Zeit wiederum gerecht verteilt wird [9]. Das Kompilieren eines Kernels in 64 parallelen Threads make -j64 würde zum Beispiel (in einem Terminal) in einer Prozess-Gruppe laufen, während der Webbrowser und das Mail-Programm des Anwenders in einer anderen zu finden wäre, beide Gruppen erhalten jedoch den gleichen Anteil an Rechenzeit zugeteilt. So wäre dem Nutzer das Surfen und Lesen der E-Mail noch möglich, dafür würde der Vorgang des Kompilierens geringfügig ausgebremst. Rechenzeit, die die Browser-E-Mail-Gruppe nicht benötigt, würde frei und damit automatisch vom Scheduler der Kompilierungs-Gruppe zugewiesen. Eben dieser Fall war das Testszenario von Torvalds, der sich daraufhin von Galbraiths Patch durchaus angetan zeigte [10] und sich sogar dazu hinreißen ließ, das Scheduling von Gruppen als „Killer-Feature“ zu bezeichnen. War die Diskussion um diesen Patch bisher sehr umfangreich, so werden Anwender bald in Kontakt mit „Group Scheduling“ kommen, denn der Scheduler-Experte des Linux-Kernels, Ingo Molnar, bat Galbraith bereits um die Einsendung des Patches für seinen Kernel-Zweig um ihn in 2.6.38 einbringen zu können [11].
Neue Server für den Kernel
Die Server, auf denen der Kernel entwickelt wird, haben nun Verstärkung bekommen [12] - zwei Spiegelserver wurden durch Neugeräte mit jeweils 66 300GB-Festplatten ersetzt. Daneben stehen nun zwei neue Server zur Verfügung, von denen einer als Backup des Master-Servers von kernel.org fungiert, während der andere parallel zu „demeter.kernel.org“, dem Server für den Kernel Bugzilla und die Wikis, laufen und diesem unter die Arme greifen wird. Die Geräte wurden von HP und Google gesponsert, die Betreiber von kernel.org sprechen insbesondere Chris DiBona und Bdale Garbee ihren Dank dafür aus.
Der Scheduler (zu deutsch etwa: Arbeitsplaner) ist der Manager des Prozessors; er verteilt die Rechenzeit der CPU möglichst gleichmäßig auf die wartenden Prozesse. Der in aktuellen Versionen des Linux-Kernels (seit 2.6.24) verwendete Completely Fair Scheduler (CFS) nutzt dazu Gruppen, in denen Prozesse jeweils eines Users zusammengefasst werden. Jede Gruppe wird mit dem gleichen Anteil an Rechenzeit versehen, sodass jeder Anwender gleichberechtigt ist, unabhängig von der Anzahl und dem Leistungsbedarf der von ihm gestarteten Prozesse. Die einem Anwender zugeteilte CPU-Zeit wird wiederum gleichmäßig auf alle in seinem Kontext laufenden Prozesse verteilt. Wird die verfügbare Rechenzeit von einem Anwender nicht benötigt, so wird sie „zurückgegeben“ und vom Scheduler neu zugewiesen.
Quellen:
[1] http://www.freiesmagazin.de/freiesMagazin-2010-11
[2] http://lkml.org/lkml/2010/11/15/568
[3] http://lkml.org/lkml/2010/11/21/153
[4] http://de.wikipedia.org/wiki/Magic_SysRq_key
[5] http://lkml.org/lkml/2010/11/30/5
[6] http://en.wikipedia.org/wiki/TILE64
[7] http://lkml.org/lkml/2010/11/30/162
[8] http://de.wikipedia.org/wiki/Brain_Fuck_Scheduler
[9] http://www.heise.de/open/artikel/Kernel-Log-Flinker-mit-Prozessgruppen-1...
[10] http://lkml.org/lkml/2010/11/14/222
[11] http://lkml.org/lkml/2010/11/16/307
[12] http://www.linux-magazin.de/NEWS/Hardware-Update-Linux-Quellen-kommen-vo...
