Auf dem Linux-Kongress geben sich traditionell Kernelentwickler die Ehre und beraten sich über Neuerungen und Verbesserungen. Dieses Jahr stellten mehrere Referenten Leistungsdaten über Erweiterungen und diskutierten, wo sich aus Linux noch mehr herausholen lässt.
Der jährlich von der German Unix Users Group veranstaltete Linux-Kongress machte in diesem Jahr in der sächsischen Elbmetropole Dresden Station. Rund 100 Teilnehmer nahmen an dem zunehmend familiärer werdenden Treffen teil. Nach zwei Tutoriumstagen folgen noch bis Freitag zwei Tage mit insgesamt 25 Vorträgen in zwei parallelen Tracks. In seiner Keynote predigte der amtierende Verbindungsentwickler zur Linux-Foundation, Ted T’so, mit einer Auflistung der guten Gründe für das freie Entwicklungsmodell von Linux ein wenig vor den Bekehrten. Spannender gerieten da die Forschungsergebnisse von Felix “Fefe” von Leitner: Er untersuchte mehrere Compiler darauf, was diese aus typischen Code-Fragmenten für Maschinencode erzeugten. Dabei zeigte er sich überrascht, dass der oft gescholtene GCC in vielen Fällen schlaue Optimierungen beherrsche. Spezialcompiler wie der von Intel angebotene ICC setzen zwar architekturtypische Eigenschaften wie Vektorisierungen gut in Szene, kennen aber nicht so viele Detailtricks. “Der GCC hat als Open-Source-Projekt eben praktisch unbegrenzte Ressourcen an Doktoranden von Unis”, begründete dies der Entwickler gegenüber Linux-Magazin Online. Insgesamt rät er Entwicklern, lieber verständlichen Code zu schreiben, als diesen per Hand zu optimieren: “Der Compiler gewinnt meist, wenn es um effizienten Code geht.”
Dies gilt nur in begrenztem Maße für Programme und den Linux-Kern, wenn es darum geht, für immer größere Mehrkern-Systeme zu entwickeln, erläutert Kernel-Hacker Andi Kleen. Der Entwickler, der lange Zeit Linux’ 64-Bit-Port betreute, steht heute bei Intel auf der Gehaltsliste. Er verwies darauf, dass CPU-Anbieter heute die Leistung ihrer Prozessoren in viel stärkerem Maße durch weitere Kerne statt durch schnelleres Takten erreichen. Bislang hätten vor allem Großrechner wie Wettersimulationen davon profitiert, die immer die gleiche Aufgabe sehr häufig parallel ausführten. Damit aber alle Systeme bis hin zu Desktops oder Netbooks von Multi-Core-Systemen profitieren, müssten Entwickler Maßnahmen ergreifen, um stärker zu paralelisieren. Vieles davon gehe nur per Hand, wenngleich Kleen auf Nachfrage von Linux-Magazin Online auf mehrere Bibliotheken hinweist.
Eine zentrale Rolle komme Locks zu, die dafür sorgen, dass nicht mehrere Kerne gleichzeitig auf gemeinsame Ressourcen zugreifen und so inkonsistente Daten vorfinden. Der Entwickler unterstrich die Wichtigkeit, diese möglichst kleinschrittig zu entwerfen, also beispielsweise in einer Baumstruktur nur Unterbäume oder einzelne Blätter zu sperren statt den ganzen Baum oder gar alle Funktionen, die auf dieser Struktur operieren. Ein anderes Problem sei der erhöhte Kommunikationsauswand zwischen den einzelnen Kernen. Im schlimmsten Fall sorgt der nämlich dafür, dass diese aufeinander Warten, damit Caches unnötig entleeren und sich schließlich damit gegenseitig mit Mehraufwand aufschaukeln. Kleen blickt aber recht zufrieden auf den Kernel. Der nutze schon weitgehend moderne Formen von Locks, die sich selbst schlafen legen. Entwickler für das Userland hätten aber mitunter noch Nachholbedarf bei diesem Thema. Tipps gibt Kleen in seiner Ausarbeitung, die GUUG-Organisator Wolfgang Stief bis Anfang der kommenden Woche auf die Webseiten des Verbandes stellen will.



