zurück zum Artikel

Die Neuerungen von Linux 3.15

| Thorsten Leemhuis

Linux 3.15 wacht schneller aus dem Standby auf. Der Datenträger-Cache passt sich flotter an neue Arbeitsbedingungen an; der Berkeley Packet Filter ist nicht nur schneller, sondern kann auch viel mehr. Linux kann jetzt nicht nur den Video-Encoder der neuen Radeon-Chips ansprechen, sondern auch Nvidias neueste Grafikchipfamilie.

Knapp zweieinhalb Monate nach der Freigabe des Linux-Kernel 3.14 [1] ist jetzt Linux 3.15 verfügbar [2]. Mit der neuen Version wachen einige PCs viel schneller aus dem Suspend-to-RAM (ACPI S3) auf. Das ist Änderungen zu verdanken, durch die Linux beim Resume nicht mehr darauf wartet, bis alle Datenträger des Systems Einsatzbereitschaft melden; der Performance-Gewinn hängt daher von den verwendeten Datenträgern ab. Bei einem Testsystem verkürzte sich die Resume-Zeit von 11,6 auf 1,1 Sekunden, wie Intel-Entwickler erklärten, die die Änderungen vorangetrieben haben. Ihren Messungen zufolge [3] sollen sich die Aufwachzeit zweier anderer Systeme von 5,5 auf unter 1 Sekunde reduziert haben. Bei drei Rechnern, die wir mit einer Vorabversion von Linux 3.15 versorgt hatten, verringerte sich die Aufwachzeit um knapp die Hälfte.

Der Treiber für Radeon-GPUs spricht jetzt auch die Grafikkerne in Mullins-Prozessoren [5] an; dabei handelt es sich um CPUs für Tablets, die AMD Ende April vorgestellt hat [6]. Der Radeon-Treiber bietet jetzt ein Interface zum Zugriff auf den Video-Encoder VCE2, der in neueren AMD-Prozessoren sowie Sea-Islands-Grafikkarten [7] steckt – etwa den Radeon-HD-Modellen 7790, R7 260 und R9 290 (u. .a 1 [8]). Auf das neue Kernel-Interface greift ein Encoder-Treiber zurück [9], den das Anfang Juni erwartete Mesa 3D 10.2 mitbringen wird. Multimedia-Anwendungen können diesen Treiber über das OpenMAX API [10] ansprechen, das wie OpenGL von der Khronos Group vorangetrieben wird; beim Enkodieren von H.264-Videos kann Software so die Arbeit den Radeon-Grafikkernen aufbürden, die das viel effizienter erledigen als der Hauptprozessor.

Mehr Infos

Im Detail

Bereits in den vergangenen Wochen hat das Kernel-Log [11] in der Serie "Was 3.15 bringt" detailliert über die Änderungen von Linux 3.15 berichten können, weil dessen Hauptentwicklungsphase bereits Mitte April endete [12]:

  1. Dateisysteme & Storage [13]
  2. Speichermanagement [14]
  3. Netzwerk [15]
  4. Infrastruktur [16]
  5. Treiber [17]

Der nebenstehende Text fasst die wichtigsten Neuerungen dieser Artikel zusammen.

Der Nouveau-Kerneltreiber unterstützt jetzt den Grafikchip GM107 [18], der auf den im Februar eingeführten GeForce-GTX-Modellen 750 und 750 Ti [19] sitzt (u. a. 1 [20]). Diese GPU ist die erste der Maxwell-Familie, welche die Kepler-Familie beerbt und einen neuen Befehlssatz nutzt; daher war viel neuer Code nötig, um die noch junge GPU-Familie zu unterstützen.

Der Speichermanagement-Code des Linux-Kernels erkennt nun, wenn er Daten mehrfach nacheinander erst in den Page Cache holt, um sie kurz darauf aus Platzmangel wieder rauszuwerfen (u. a. 1 [22], 2 [23], 3 [24]). Solche Daten versucht der Kernel daraufhin im Zwischenspeicher zu behalten, der Zugriff auf wiederholt verwendete Datenträgerinhalte erheblich beschleunigt. Der Page-Cache soll sich durch die Änderungen jetzt erheblich flotter an veränderte Arbeitsbedingungen anpassen, was die Performance in manchen Situationen um ein Vielfaches steigert; etwa wenn ein Programm eine große Datei eine Weile intensiv bearbeitet, bevor es sich einer neuen Datei ebenso ausführlich widmet.

Die Unterstützung für die Version 5 des Ondisk-Formats von XFS gilt jetzt als Produktionsreif [26]; es soll in Kombination mit neuen Userspace-Tools [27] die Verlässlichkeit des Dateisystems steigern. XFS und Ext4 unterstützen jetzt eine neue Kernel-Funktion [28], um Bereiche aus Dateien herausschneiden, ohne andere Dateibereiche kopieren zu müssen [29]; Video-Schnittsoftware kann dadurch in Sekundenschnelle die Werbung aus einer Fernsehaufzeichnung entfernen.

Keine größeren Neuerungen gab es diesmal beim Kernel-Code für Btrfs. Zusätzlich zu den klassischen "POSIX Locks" beherrscht Linux jetzt "Open File Description Locks" (u. a. 1 [31]). Über beide Techniken können Prozesse und Threads den Dateizugriff koordinieren; der neue Locking-Ansatz vermeidet aber eine ganze Reihe von Stolperfallen, in die Programmierer mit POSIX Locks immer wieder tappen.

Die Kernel-Entwickler haben den im Netzwerk-Subsystem angesiedelten Berkeley Packet Filter (BPF) [33] grundlegend überarbeitet; er eignet sich dadurch für zahlreiche weitere Aufgaben und arbeitet schneller. Das ist für die Netzwerktraffic-Steuerung über Tc oder Sniffer Tools wie Tcpdump relevant, die auf den BPF zurückgreifen; auch der Browser Chromium profitiert indirekt von den Änderungen, denn er nutzt für Sandboxen den bei 3.5 eingeführten Syscall-Filter-Mechanismus [34], der den BPF verwendet. Da der neue Code mehr Möglichkeiten bietet, wollen einige Kernel-Entwickler auch den Funktions-Tracer Ftrace anpassen, damit auch er den BPF nutz [35]t. Ftrace soll dadurch erheblich effizienter arbeiten und das System bei der Ablaufverfolgung erheblich weniger bremsen, was Störeffekte vermeidet.

In den Kernel ist ein WLAN-Treiber für den PCIe-80211n-Chip RTL8723BE von Realtek eingezogen (u. a. 1 [37], 2 [38]). Der WLAN-Treiber RTL8180 unterstützt nun auch den Realtek RTL8187SE [39]; der im Staging-Bereich für schlechten Code liegende Treiber für diesen Chip wurde daher rausgeworfen [40]. Dafür ist dort ein Treiber für den USB-WLAN-Chip Realtek RTL8723AU eingezogen.

Der Linux-Kernel enthält jetzt wieder einen Treiber für USB Attached SCSI (UAS); dieser Treiber entlockt USB-3.0-Datenträgern mit UAS-Unterstützung oft bessere Performance als der USB-Mass-Storage-Treiber, weil UAS bei der Datenübertragung effizienter vorgeht. Der Code für den UAS-Treiber steckt schon lange im Kernel, bereitete aber von Anfang an Probleme und wurde daher bei Linux 3.8 lahmgelegt [41]; die Entwickler wollen diese Probleme jetzt ausgeräumt haben [42].

Die Gast-Treiber und Hintergrunddienste zur Unterstützung von Microsofts Hyper-V können nun Dateien im Dateisystem von Linux-VMs ablegen [43], wenn Microsofts Hypervisor sie dazu auffordert; diese Funktion ist Teil der "Guest Integration Services" neuerer Windows-Versionen [44].

Das bei Linux 3.14 eingeführte [46] Kernel Address Space Layout Randomization (KASLR) wurde weiter ausgebaut [47]; Schadsoftware und Angreifer haben es dadurch auf x86-Systemen noch schwerer, Kernel-Code zu finden, der ihnen zusätzlicher Rechte verschafft. Verbessert wurde auch die Kompatibilität zur Compiler-Infrastruktur LLVM, damit sich Linux mittelfristig mit dem LLVM-Frontend Clang kompilieren lässt. Der Power-Management-Code von 3.15 kann Hardware-Komponenten eine Zeitspanne vorgeben, innerhalb der sie die Arbeit aufnehmen müssen. Dadurch können Komponenten, die Stromsparmodi autark ansteuern, Wechsel in zu tiefe Schlafzustände vermeiden, damit Performance und Reaktionsgeschwindigkeit des Systems nicht leiden (1 [48], 2 [49]).

Der Firmware gegenüber meldet der ACPI-Code des Kernel jetzt Kompatibilität zu "Windows 2013" [51]. Der neue Kernel soll dadurch auch auf einigen neueren Systemen sauber laufen, bei denen ältere Versionen aufgrund von Firmware-Fehlern Probleme zeigen; in einigen Fällen bootet Linux nicht einmal. Der Kernel 3.15 beherrscht die neue x86-Instruktion RDSEED, die Zufallsdaten beim Prozessor abruft (1 [52], 2 [53]). Neu ist auch Unterstützung für den Instruktionssatz AVX512 (1 [54], 2 [55]); ihn sollen verschiedene, in den nächsten Jahren erwartete Intel-Prozessoren beherrschen [56], um über 32 Register à 512 Bit parallel 8 doppelt genaue Gleitkommawerte zu berechnen.

Das schnelle Aufwachen aus dem Standby ist eine Verbesserung, die viele Anwender spüren dürften. Auch die Unterstützung für neue GeForce-Chips und den Video-Encoder von Radeon-GPUs wird mancher begrüßen. Die Optimierungen am Page Cache, der grundlegend überarbeitete Berkeley Packet Filter und viele andere Dinge sind nicht so sichtbar – es sind aber auch wichtige Neuerungen, denn es sind Verbesserungen an wichtigen Rädchen, aus denen sich das große Ganze "Linux-Kernel" letztlich zusammensetzt.

Direkt nach der Freigabe der neuen Version beginnt nun das typischerweise zwei Wochen lange Merge Window [58], in dem Linus Torvalds das Gros der Änderungen für den Nachfolger sammelt. [Update 2014-06-11, 13:30] Diesmal hat das Merge Window bereits eine Woche vor der Freigabe der neuen Version begonnen, damit Torvalds alle wesentlichen Änderungen für 3.16 aufnehmen kann, bevor er Mitte Juni auf Reisen geht. (1 [59], 2 [60]) [/Update] Sofern er und seine Mitstreiter mit dem gewohnten Tempo arbeiten, dürfte 3.16 Mitte oder Ende August erscheinen.Ein Artikel wie dieser wird dann wieder einen Überblick über die wichtigsten Neuerungen dieser Version liefern.

Linux-
Version
Anzahl
Dateien¹
Zeilen
Quelltext
(OhneDoku)²
Entwick-
lungs-
zeitraum
Anzahl
Commits³
Diffstat⁴
3.8 [62] 41520 16416874
(15310436)
70 Tage 12394 11701 files changed,
 577188 insertions(+),
 352003 deletions(-)
3.9 [63] 42423 16686879
(15563152)
69 Tage 11910 11120 files changed,
 608436 insertions(+),
 338439 deletions(-)
3.10 [64] 43016 16955489
(15803499)
63 Tage 13637
10471 files changed,
 660572 insertions(+),
 391966 deletions(-)
3.11 [65] 44002 17403279
(16225814)
63 Tage 10893 9692 files changed,
 788982 insertions(+),
 341196 deletions(-)
3.12 [66] 44586
17726872
(16529850)
62 Tage 10927 8636files changed,
 587004 insertions(+),
 263408 deletions(-)
3.13 [67]

44970 17930916
(16703764)
77 Tage 12127 9843 files changed,
 441474 insertions(+),
 237428 deletions(-)
3.14 [68]

45935 18271989
(17002462)
70 Tage 12311 10601 files changed,
 605655 insertions(+),
 264576 deletions(-)
3.15 46780 18632574
(17323446)
53 Tage 13722 11427 files changed,
 932110 insertions(+),
 571520 deletions(-)
¹ find . -type f -not -regex '\./\.git/.*' | wc -l
² find . -type f -not -regex '\./\.git.*' | xargs cat | wc -l; echo "($(find . -name *.[hcS] -not -regex '\./\.git.*' | xargs cat | wc -l))"
³ git-log --no-merges --pretty=oneline v3.(x-1)..v3.(x) | wc -l
⁴ git diff --shortstat v3.(x-1)..v3.(x)
Mehr Infos

Linux herunterladen

Die neue Linux-Version steht über Kernel.org zum Download [69] bereit; bereits kurz nach der Veröffentlichung liefern auch viele Spiegelserver [70] den neuen Kernel aus.

Den Quellcode von Linux gibt es in Tar-Archiven, die mit Gzip und Xz komprimiert wurden. Die folgenden Befehle zeigen am Beispiel von Linux 3.1, wie Sie die Quellen herunterladen, entpacken und auf Unversehrtheit prüfen:

[thl@thl tmp]$ export linux_version=3.1
[thl@thl tmp]$ wget --quiet http://www.kernel.org/pub/linux/kernel/v3.0/linux-${
linux_version}.tar.sign \
http://www.kernel.org/pub/linux/kernel/v3.0/linux-${linux_version}.tar.xz
[thl@thl tmp]$ xz -d linux-
${linux_version}.tar.xz
[thl@thl tmp]$ gpg --verify linux-
${linux_version}.tar.sign
gpg: Unterschrift vom Mo 24 Okt 2011 09:17:58 CEST mittels RSA-Schlüssel ID 00411886
gpg: Korrekte Unterschrift von "Linus Torvalds <torvalds@linux-foundation.org>"
gpg: WARNUNG: Dieser Schlüssel trägt keine vertrauenswürdige Signatur!
gpg: Es gibt keinen Hinweis, daß die Signatur wirklich dem vorgeblichen Besitzer gehört.
Haupt-Fingerabdruck = ABAF 11C6 5A29 70B1 30AB E3C4 79BE 3E43 0041 1886

Einige Hinweise zur Einrichtung eines neuen Kernels finden Sie im Artikel "Linux-Kernel maßgeschneidert [71]", der die Einrichtung eines Kernels mit Hilfe des Make-Targets "localmodconfig" beschreibt.

(thl [72]) (thl [73])


URL dieses Artikels:
https://www.heise.de/-2196231

Links in diesem Artikel:
[1] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-12-2150433.html
[2] http://article.gmane.org/gmane.linux.kernel/1720707
[3] https://01.org/suspendresume/blogs/tebrandt/2013/hard-disk-resume-optimization-simpler-approach
[4] 
[5] https://git.kernel.org/linus/f56cfe0c35fd3419a0f5230e3638f9fe53f17c42
[6] https://www.heise.de/news/AMD-Neuer-Anlauf-fuer-Windows-8-1-Tablets-2178819.html
[7] http://xorg.freedesktop.org/wiki/RadeonFeature/#index5h2
[8] https://git.kernel.org/linus/d93f79376f210e0b19da57a3dc841ba332daa9d0
[9] http://cgit.freedesktop.org/mesa/mesa/commit/src/gallium/drivers/radeon/radeon_vce_40_2_2.c?id=9ff0cf903dc4ed806961d1e099d1308322092892
[10] http:////www.khronos.org/openmax/
[11] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[12] https://www.heise.de/news/Neuerungen-des-Linux-Kernels-3-15-jetzt-absehbar-2169318.html
[13] https://www.heise.de/hintergrund/Kernel-Log-Was-3-12-bringt-1-Dateisysteme-Storage-2183256.html
[14] https://www.heise.de/hintergrund/Kernel-Log-Was-3-12-bringt-2-Netzwerk-2192707.html
[15] https://www.heise.de/hintergrund/Kernel-Log-Was-3-12-bringt-3-Infrastruktur-2195662.html
[16] https://www.heise.de/hintergrund/Kernel-Log-Was-3-12-bringt-3-Infrastruktur-2193945.html
[17] https://www.heise.de/hintergrund/Kernel-Log-Was-3-12-bringt-4-Treiber-2195736.html
[18] http://nouveau.freedesktop.org/wiki/CodeNames/#NVC0
[19] https://www.heise.de/news/Nvidia-Maxwell-GeForce-GTX-750-und-750-Ti-hoechst-effizient-2116645.html
[20] https://git.kernel.org/linus/6f1e9b99b329238e3a3989785cf0dff67db78b1a
[21] 
[22] https://git.kernel.org/linus/a528910e12ec7ee203095eb1711468a66b9b60b0
[23] https://git.kernel.org/linus/91b0abe36a7b2b3b02d7500925a5f8455334f0e5
[24] https://git.kernel.org/linus/449dd6984d0e47643c04c807f609dd56d48d5bcc
[25] 
[26] https://git.kernel.org/linus/c99d609a16506602a7398eea7d12b13513f3d889
[27] https://www.heise.de/news/Linux-Dateisystem-XFS-soll-verlaesslicher-arbeiten-2192999.html
[28] https://www.heise.de/hintergrund/Kernel-Log-Was-3-12-bringt-1-Dateisysteme-Storage-2183256.html
[29] http://thread.gmane.org/gmane.linux.file-systems/75681
[30] 
[31] https://git.kernel.org/linus/https://git.kernel.org/linus/5d50ffd7c31dab47c6b828841ca1ec70a1b40169
[32] 
[33] http://en.wikipedia.org/wiki/Berkeley_Packet_Filter
[34] https://www.heise.de/hintergrund/Kernel-Log-Was-3-5-bringt-5-Infrastruktur-1633847.html
[35] http://thread.gmane.org/gmane.linux.kernel/1703187
[36] 
[37] https://git.kernel.org/linus/a619d1abe20cc892ddd8f6f60345b24d43971fb4
[38] https://git.kernel.org/linus/aa45a673b291fd761275493bc15316d79555ed55
[39] https://git.kernel.org/linus/9d2ffb81608da30c3293fb7e20474358a5951cca
[40] https://git.kernel.org/linus/5ed0a8e667090003fdf7b750296fcfb248349502
[41] https://www.heise.de/hintergrund/Kernel-Log-Was-3-8-bringt-3-Treiber-1801542.html
[42] https://git.kernel.org/linus/dc88608dba784f902b3127fd68d0c4f92a532cd0
[43] https://git.kernel.org/linus/01325476d6e46185031be4a9bc6443832dbc807c
[44] http://technet.microsoft.com/en-us/library/dn464282.aspx
[45] 
[46] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-12-2150433.html
[47] http://git.kernel.org/linus/e2b32e6785138d92d2a40e0d0473575c8c7310a2
[48] https://git.kernel.org/linus/2d984ad132a87ca2112f81f21039493176a8bca0
[49] https://git.kernel.org/linus/b02f6695f7601c4f8442b9cf4636802e7fa8d550
[50] 
[51] https://git.kernel.org/linus/faae404ebdc6bba744919d82e64c16448eb24a36
[52] https://git.kernel.org/linus/d20f78d252778e0fae8f8256e602bd682eb2185c
[53] https://git.kernel.org/linus/0c79893b2bad49e0c391a9499f50fcd5b0f80874
[54] http://git.kernel.org/linus/8e5780fdeef7dc490b3f0b3a62704593721fa4f3
[55] http://git.kernel.org/linus/c2bc11f10a39527cd1bb252097b5525664560956
[56] https://www.heise.de/news/Details-zu-Intels-neuen-Instruktionssaetzen-AVX512-MPX-SMAP-1930039.html
[57] 
[58] https://www.heise.de/glossar/entry/Entwicklungszyklus-des-Linux-Kernels-397915.html
[59] http://article.gmane.org/gmane.linux.kernel/1715757
[60] http://article.gmane.org/gmane.linux.kernel/1720707
[61] 
[62] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-8-1804113.html
[63] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-9-1844759.html
[64] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-10-1898006.html
[65] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-11-1944715.html
[66] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-12-1981573.html
[67] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-12-2087964.html
[68] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-12-2150433.html
[69] http://www.kernel.org/pub/linux/kernel/v3.0/
[70] http://www.kernel.org/mirrors/
[71] https://www.heise.de/tests/Linux-Kernel-massgeschneidert-1402386.html
[72] mailto:thl%40ct.de
[73] mailto:thl@ct.de