zurück zum Artikel

Kernel-Log: 15.000.000 Zeilen Code, 3.0 wird Longterm-Kernel

Trends & News | Kernel-Log

Mit den ersten für Linux 3.3 aufgenommenen Änderungen haben die Kernel-Quellen die Marke von 15 Millionen Codezeilen durchbrochen. Die Pflege für Linux 2.6.32 endet vermutlich in einem Monat; Linux 3.0 und der darauf basierende Echtzeit-Kernel sollen für zwei Jahre gepflegt werden.

Kernel-Log: 15.000.000 Zeilen Code, 3.0 wird Longterm-Kernel

Nachdem das vergangene Woche freigegebene Linux 3.2 [1] ganz knapp unter der Marke von 15 Millionen Zeilen Quellcode blieb, hat der Kernel diese Marke am Wochenende überschritten, als Torvalds die ersten Änderungen für Linux 3.3 in den Hauptentwicklungszweig [2] aufnahm. Damit sind die Quellen des Linux-Kernels [3] in etwas über drei Jahren um mehr als fünfzig Prozent gewachsen, denn die 10-Millionen-Marke hat der Kernel im Oktober 2008 [4] durchbrochen; Kommentare, Leerzeilen, Dokumentation, Skripte und Userland-Werkzeuge, die dem Kernel beiliegen, werden dabei mitgezählt (find . -type f -not -regex '\./\.git.*' | xargs cat | wc -l ).

Unter den Kernel-Entwicklern wird der steigende Umfang eher selten kritisiert. Erst kürzlich [5] hat Linux-Urgestein Theodore 'tytso' Ts'o auf der Mailingliste [6] der Kernel-Entwickler angedeutet, Analysen zum Umfang hätten Unterhaltungswert, ließen aber keine Rückschlüsse auf die Komplexität zu. Letztere war in letzter Zeit häufiger Thema unter den Kernel-Entwicklern. Andrew Morton sagte [7] etwa kürzlich bei der Begutachtung von Änderungen, die Kernel-Entwicklung hätte den Punkt überschritten, ab dem jede weitere Komplexität als Rückschritt ("regression") angesehen werden müsse. Normalerweise versuchen die Kernel-Entwickler, "Regressions" zu vermeiden, damit ein neuer Kernel keine Probleme bereitet, die die Vorgänger nicht zeigten.

Torvalds selbst hat die wachsende Komplexität vor einigen Wochen in einem Interview [8] der "Zeit Online" ebenfalls kritisiert: Er sähe mit Bangen dem Tag entgegen, an dem die Kernel-Entwickler mit einen Fehler zu tun hätten, den niemand mehr nachvollziehen könne. Einem LWN.net-Bericht [9] zufolge war Komplexität auch auf dem diesjährigen Treffen der Kernel-Entwickler ein Thema. Kritik gab es insbesondere am Code für das Memory Management: Demnach habe etwa die Lösung eines Problems im Umfeld von "page migration" drei wichtige Entwickler erfordert; niemand habe den Überblick über das große Ganze dieses Kernel-Bereichs. Schon im letzten Jahr hatte LWN.net einen Bericht [10] veröffentlicht, der die Hintergründe eines während der Entwicklung von Linux 2.6.34 bemerkten Fehlers beim Code des Memory-Management-Codes erläuterte, dessen Ursache Torvalds und einige andere erfahrene Kernel-Entwickler tagelang nachgespürt hatten.

Zum Erscheinen dieses Kernel-Log [11] enthielt ein aktueller Git-Checkout des Hauptentwicklungszweigs [12] von Linux 15.046.951 Zeilen. Es ist möglich, aber eher unwahrscheinlich, dass der Codeumfang wieder unter diese Marke sinkt. Langfristig ist Wachstum sicher, denn von einigen Ausreißern abgesehen waren die letzten Versionen typischerweise um hundert- bis dreihunderttausend Zeilen größer als ihre jeweiligen Vorgänger.

Der Löwenanteil des Codes entfällt auf Treiber, Dateisysteme und architekturspezifischen Code.
Der Löwenanteil des Codes entfällt auf Treiber, Dateisysteme und architekturspezifischen Code.

Eine etwas näherer Blick auf den Kernel-Code gelingt mit dem Analyse-Programm Sloccount [13]. Bei Linux 3.2, das mit 14.998.651 Zeilen Code knapp unter der 15-Millionen-Marke liegt, sind knapp 1,9 Millionen Zeilen für die Unterstützung der verschiedenen Prozessor-Architekturen zuständig; fast 700.000 Zeilen enthält das Verzeichnis für Dateisysteme. Das Treiber-Verzeichnis ist mit 5,6 Millionen Zeilen das größte. Letztlich geht allerdings noch mehr Code auf das Konto von Treibern, denn manche finden sich in anderen Verzeichnissen – die Treiber für Sound-Hardware beispielsweise in sound/drivers/.

SLOC    Directory       SLOC-by-Language (Sorted) 
5615064 drivers ansic=5610304,yacc=1688,asm=1475,perl=792,lex=779,sh=26
1876166 arch ansic=1632759,asm=241881,sh=692,awk=470,pascal=231, perl=58,python=45,sed=30
698974 fs ansic=698974
533134 sound ansic=532951,asm=183
493711 net ansic=493615,awk=96
301646 include ansic=299895,cpp=1709,asm=42
120454 kernel ansic=120149,perl=305
56177 tools ansic=51029,perl=3272,python=1399,sh=476,asm=1
54529 mm ansic=54529
44171 security ansic=44171
42627 crypto ansic=42627
37307 scripts ansic=22487,perl=8287,sh=2028,cpp=1820,yacc=1291,lex=947,python=447
28486 lib ansic=28473,awk=13
14382 block ansic=14382
11579 Documentation ansic=6896,perl=2369,sh=1018,python=949,lisp=218,awk=129
5705 ipc ansic=5705
4661 virt ansic=4661
2377 init ansic=2377
1876 firmware asm=1660,ansic=216
1232 samples ansic=1232
564 usr ansic=550,asm=14
0 top_dir (none)

Sloccount schaut sich die Dateien zudem noch näher an und erstellt eine Aufstellung zu den verwendeten Programmiersprachen. Demnach enthält Linux 3.2 nicht ganz 10 Millionen Zeilen Programmcode; davon sind 97 Prozent Ansi-C und 2,5 Prozent Assembler.

Totals grouped by language (dominant language first): 
ansic: 9667982 (97.22%)
asm: 245256 (2.47%)
perl: 15083 (0.15%)
sh: 4240 (0.04%)
cpp: 3529 (0.04%)
yacc: 2979 (0.03%)
python: 2840 (0.03%)
lex: 1726 (0.02%)
awk: 708 (0.01%)
pascal: 231 (0.00%)
lisp: 218 (0.00%)
sed: 30 (0.00%)
Total Physical Source Lines of Code (SLOC) = 9,944,822

Das Programm wurde aber schon einige Jahre nicht mehr aktualisiert und lässt sich in die Irre leiten, wie die Angaben zum Pascal-Code zeigen. Perl- und Python-Code findet sich aber durchaus in den Linux-Quellen; bei einigen Kernel-Versionen wird der Perl-Interpreter sogar zum Übersetzen benötigt.

Greg Kroah-Hartman hat zum Jahresanfang die Kernel-Versionen 2.6.32.52 [14], 3.0.15 [15] und 3.1.7 [16] freigegeben, die ein Problem beim Aufwachen aus systemweiten Schlafzuständen beseitigen sollen. Einige Tage später folgten der Longterm-Kernel 2.6.32.53 [17] sowie die Stable-Kernel 3.0.16 [18] und 3.1.8 [19].

In einem Blog-Eintrag [20] und einer Mail [21] an die LKML [22] erläuterte Kroah-Hartman wenig später, wie er bei der Pflege der verschiedenen Kernel-Versionen weiter vorgehen will. Die Betreuung der 3.1er-Reihe will er in Kürze einstellen; lediglich ein oder maximal zwei Updates sollen noch erscheinen. Linux 3.2 wird wie bei Stable-Kerneln üblich [23] bis kurz nach der Freigabe von Linux 3.3 weiter gepflegt.

Dem bislang als "Stable-Kernel" gewarteten Linux 3.0 verlieh Kroah-Hartman den Status "Longterm-Kernel". Um den will er sich mindestens zwei Jahre kümmern, wie er es vor einigen Monaten in einer Diskussion um die Vorgehensweise bei Stable- und Longterm-Kerneln vorgeschlagen hatte [24].

Die Pflege des Longterm-Kernels 2.6.32 will Kroah-Hartman bald einstellen; vermutlich in einem Monat "oder so". Möglicherweise würde jemand anders die Betreuung dann übernehmen, was aber noch nicht sicher sei. Er betont in dem Rahmen, dass alle anderen Longterm-Kernel von anderen Leuten gewartet werden und er zu den weiteren Planungen dieser Entwickler nichts sagen könne.

Steven Rostedt erläuterte [25] in Umfeld der Ankündigungen von Kroh-Hartman, die auf Echtzeit-Eigenschaften hin optimierten RT-Kernel auf Basis von Linux 3.0 (3.0.y-rtx) ebenfalls zwei Jahre warten zu wollen.

Kernel-Log: 15.000.000 Zeilen Code, 3.0 wird Longterm-Kernel

Kernel

Unterstützung für Grafikhardware

Kernel-Umland ("Plumbing layer"), Userland-Treiber, Entwicklertools, ...

LKML-Diskussionen

Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs [56] auf heise open [57] und in c't [58]. Neue Ausgaben des Kernel-Logs [59] werden auf den Identi.ca [60]- und Twitter [61]-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H [62]" erscheinenden Übersetzungen auf den Identi.ca [63]- und Twitter [64]-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige Kernel-Log-Themen bei Identi.ca [65] und Twitter [66] als "@kernellogauthor". (thl [67]).


URL dieses Artikels:
http://www.heise.de/-1406404

Links in diesem Artikel:
[1] https://www.heise.de/ct/artikel/Die-Neuerungen-von-Linux-3-2-1398004.html
[2] http://www.heise.de/glossar/entry/Hauptentwicklungslinie-397933.html
[3] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=tree
[4] https://www.heise.de/meldung/Kernel-Log-Mehr-als-10-Millionen-Zeilen-in-den-Linux-Quellen-212534.html
[5] http://thread.gmane.org/gmane.linux.kernel/1214227/focus%3D1214710
[6] http://www.heise.de/glossar/entry/Linux-Kernel-Mailing-List-397973.html
[7] http://thread.gmane.org/gmane.linux.kernel/1232735/focus%3D1232760
[8] http://www.zeit.de/digital/internet/2011-11/linux-thorvalds-interview
[9] http://lwn.net/Articles/464292/
[10] http://lwn.net/Articles/383162/
[11] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[12] http://www.heise.de/glossar/entry/Hauptentwicklungslinie-397933.html
[13] http://www.dwheeler.com/sloccount/
[14] http://thread.gmane.org/gmane.linux.kernel/1234639
[15] http://thread.gmane.org/gmane.linux.kernel/1234676
[16] http://thread.gmane.org/gmane.linux.kernel/1234679
[17] http://thread.gmane.org/gmane.linux.kernel/1236367
[18] http://thread.gmane.org/gmane.linux.kernel/1236364
[19] http://thread.gmane.org/gmane.linux.kernel/1236363
[20] http://www.kroah.com/log/linux/stable-status-01-2012.html
[21] http://thread.gmane.org/gmane.linux.kernel/1237185/
[22] http://www.heise.de/glossar/entry/Linux-Kernel-Mailing-List-397973.html
[23] https://www.heise.de/ct/artikel/Kernel-Log-X-Server-1-11-neue-Kernel-Pflegestrategie-1332450.html
[24] https://www.heise.de/ct/artikel/Kernel-Log-X-Server-1-11-neue-Kernel-Pflegestrategie-1332450.html
[25] http://thread.gmane.org/gmane.linux.kernel/1237185/focus%3D1237210
[26] http://census-labs.com/news/2012/01/03/linux-kernel-heap-exploitation/
[27] http://de.wikipedia.org/wiki/Slab_allocator
[28] http://xorg.freedesktop.org/wiki/RadeonFeature
[29] https://www.heise.de/meldung/Radeon-HD-7970-Mit-2048-Kernen-an-die-Leistungsspitze-1399905.html
[30] http://thread.gmane.org/gmane.comp.freedesktop.xorg.announce/1512
[31] https://www.heise.de/ct/artikel/Kernel-Log-Multitouch-fuer-X-org-1396360.html
[32] http://who-t.blogspot.com/2011/12/multitouch-in-x-getting-events.html
[33] http://who-t.blogspot.com/2011/12/multitouch-in-x-pointer-emulation.html
[34] http://who-t.blogspot.com/2012/01/multitouch-in-x-touch-grab-handling.html
[35] http://cgit.freedesktop.org/mesa/mesa/commit/?id=a53cb348baa8b6f3142ac0bda2c339ee1ba1ea86
[36] http://thread.gmane.org/gmane.comp.video.dri.devel/63948
[37] http://airlied.livejournal.com/75555.html
[38] https://www.heise.de/ct/artikel/Kernel-Log-Multitouch-fuer-X-org-1396360.html?artikelseite=2
[39] http://thread.gmane.org/gmane.linux.kernel.modules/640
[40] http://www.politreco.com/2012/01/announce-kmod-3/
[41] http://www.politreco.com/2011/12/announce-kmod-2/
[42] http://thread.gmane.org/gmane.linux.kernel.modules/618/
[43] http://www.jonmasters.org/blog/2011/12/20/libkmod-replaces-module-init-tools/
[44] http://thread.gmane.org/gmane.linux.kernel/1235907
[45] http://thread.gmane.org/gmane.linux.kernel/1233026
[46] http://thread.gmane.org/gmane.linux.raid/36620
[47] http://download.intel.com/design/intarch/PAPERS/326024.pdf
[48] http://www.isdn4linux.de/pipermail/isdn4linux/2012-January/005580.html
[49] https://www.heise.de/meldung/Freie-ISDN-Treiber-fuer-aktive-und-passive-Karten-unterstuetzen-CAPI-2-0-Update-1406659.html
[50] https://www.heise.de/meldung/Android-Treiber-sollen-in-Kernel-3-3-einfliessen-1400888.html
[51] http://www.heise.de/glossar/entry/Linux-Kernel-Mailing-List-397973.html
[52] http://thread.gmane.org/gmane.linux.kernel/1232247/
[53] http://thread.gmane.org/gmane.linux.kernel/1232247/focus%3D1236307
[54] http://thread.gmane.org/gmane.linux.kernel/1235959/focus%3D1236386
[55] http://thread.gmane.org/gmane.linux.kernel/1227503/focus%3D1231524
[56] http://www.heise.de/open/kernel-log-3007.html
[57] http://www.heise.de/open/
[58] http://www.heise.de/suche/?q=Kernel-Log&search_submit=Suchen&rm=search&channel=ct&mediatype=ct_2
[59] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[60] http://identi.ca/kernellog
[61] http://twitter.com/kernellog
[62] http://www.h-online.com
[63] http://identi.ca/kernellog2
[64] http://twitter.com/kernellog2
[65] http://identi.ca/kernellogauthor
[66] http://twitter.com/kernellogauthor
[67] mailto:thl@ct.de