Linux 5.1: Performance-Verbesserungen und neue Speichertechnik
Seite 6: Versiegelung, Raspi 3a+, NXP i.MX8QuadXPlus, …
Allerlei Verbesserungen unter der Haube
Der neue Pidfd Syscall sollte es möglich machen, beim Senden von Signalen wie SIGKILL oder SIGHUP sicherzugehen, dass diese auch tatsächlich an den vogesehenen Prozess gehen. Bei unter Feuer stehenden Systemen können mit den bisherigen Wegen nämlich Race Conditions auftreten, durch die manchmal ein vollkommen unbeteiligter Prozess das Signal erhält und dadurch womöglich abgeschossen wird. Nach Einführung des Ganzen wurden aber noch einige bei LWN.net näher erläuterte Detailprobleme gefunden; einzelne Anpassungen helfen, aber schon bei 5.2 sollen weitere Änderungen folgen.
Die Kernel-Dokumentation liefert jetzt Details zur Arbeitsweise von Energy Aware Scheduling (EAS). Dabei handelt es sich um die jüngst bei Linux 5.0 eingeführte und bei 5.1 weiter verbesserte Technik, durch sie sich der Kernel deutlich mehr für Konzepte wie ARMs big.LITTLE eignet, bei denen in einem Prozessor unterschiedlich schnelle CPU-Kerne arbeiten.
Google-Entwickler haben eine Versiegelungsfunktion für Memfd beigesteuert. Bei Memfd handelt es sich um ein Feature, mit dem mehrere Programme Daten über einen gemeinsam genutzten Arbeitsspeicherbereich austauschen können. Durch die Änderungen soll es jetzt alles bieten, damit Google von der Android-eigenen Technik Ashmem auf Memfd umsteigen kann.
Mit der neuen Konfigurationsoption CONFIG_PRINTK_CALLER übersetzte Kernel-Images versehen ihre Logging-Meldungen mit Thread- oder CPU-IDs. Das soll das Auseinanderdröseln der via dmesg
oder /dev/kmsg abrufbaren Informationen erleichtern, denn bei Mehrkernprozessoren vermischen sich dort leicht Ausgaben von Tätigkeiten, die der Kernel parallel ausführt.
Einige Merge-Commits der Subsysteme Ftrace und Perf (1, 2, 3, 4, 5, 6) listen einen ganzen Schwung von Neuerungen bei den Tracing- und Performance-Monitoring-Lösungen – darunter etwa eine Snapshot-Möglichkeit für die Histogramm-Funktion von Ftrace (u. a. 1, 2, 3) und eine Sample-Funktion für perf report
.
Einige weitere Änderungen an der Infrastruktur des Kernels nennen Merge-Commits der Subsysteme ACPI, Clock, DMA-Mapping, DMA-Engine, Dokumentation, I2C, IOMMU, IRQ Core, Locking, Kbuild (1, 2), Livepatching, PCI, Pinctl Power-Management.
Unterstützung für Raspberry Pi 3 Model A+
(Bild: c't 25/2018, S. 46 )
Der Linux-Kernel bringt jetzt alles zum Betrieb auf einem Raspberry Pi 3 Model A+ mit, der keine Ethernet-Schnittstelle hat und weniger Arbeitsspeicher aufweist. Ferner stieß ein Power-Management-Treiber für Raspis zum Kernel; er arbeitet autark, statt das Gros der Arbeit an die Firmware zu delegieren, wie es der Treiber Raspberrypi-Power macht.
Linux unterstützt jetzt auch die SoC-Platformen Renesas RZ/A2M (R7S9210), Renesas RZ/G2E (r8a774c0) und NXP i.MX8QuadXPlus. Das ist aber nur die Spitze des Eisbergs bei neuem ARM-Support, denn die Kernel-Entwickler haben Support für eine ganze Reihe anderer Produkte mit ARM-Kernen nachgerüstet, wie der Git-Pull-Kommentar mit den Updates für ARM SoC Device Trees (DT) zeigt. Einige weitere Neuerungen in diesem Bereich nennen die Git-Merge-Kommentare zu ARM, ARM64, ARM SoC Drivers, ARM SoC Platform und der Commit, der Support für die Milbeaut ARM-SoC-Familie SC2000 nachrüstet.
Beim Betrieb unter Microsofts Virtualisierungslösung Hyper-V stellt Linux jetzt einige weitere Informationen im Sysfs bereit, die beim Eingrenzen von Performance-Probleme helfen können.
Im BPF des Kernels ausgeführter Code kann jetzt einen Spinlock nutzen, um möglichst zügig Zugriff auf eine Datenstruktur zu erhalten, die parallel ausgeführter Code gesperrt hat, weil er dort zugreift. Das kann die Performance der mittlerweile von vielen Subsystemen des Kernels verwendeten BPF Virtual Machine (VM) verbessern, steigert aber zugleich die CPU-Belastung; Details liefert der LWN.net-Artikel "Concurrency management in BPF".
Eine Menge weitere Neuerungen rund um Support für Architekturen, Plattformen und Virtualisierung nennen die Kommentare der Git-Merge-Commits aus den Bereichen Devicetree, EFI, KVM, M68K, MIPS, Parisc, Powerpc, Rproc, RISC-V, s390, Vfio und x86 (1, 2, 3). Diese und ähnliche Linklisten dieses Kernel-Logs nennen übrigens nur Merges, die der Autor für verlinkenswert hielt – zumeist weil sie weitere Änderungen nennen, die für den ein oder anderen Leser relevant sein dürften. Hunderte andere Merges haben diese Hürde nicht geschafft.
Ausblick auf Linux 5.2
Mit der Freigabe von Linux 5.1 beginnt zugleich die "Merge Window" genannte Phase, in der Linus Torvalds das Gros der Änderungen für den Nachfolger integriert. In den nächsten Tagen fließen daher viele tausend Änderungen in den Hauptentwicklungszweig von Linux ein, die Entwickler in den letzten Wochen zur Aufnahme für die nächste Version vorbereitet haben.
Linus Torvalds beendet das Merge Window typischerweise nach zwei Wochen, indem er die erste Vorabversion einer neuen Kernel-Version veröffentlicht. Das läutet zugleich die Stabilisierungsphase ein, die derzeit meist sieben oder acht Wochen dauert. Linux 5.2 erscheint daher wahrscheinlich am 8. oder 15. Juli.
Daten und Zahlen zu den jüngsten Versionen des Linux-Kernels
Kernel- Version |
Anzahl Dateien¹ |
Zeilen Quelltext (Ohne Doku)² |
Entwick- lungs- zeitraum |
Commits (Ohne Merges)³ |
Diffstat⁴ |
Linux 4.14 | 61.290 |
25.041.284 (23.050.486) |
70 Tage |
14.659 (13.452) |
23.388 files changed, 719.862 insertions(+), 445.585 deletions(-) |
Linux 4.15 | 62.303 |
25.364.802 (23.329.451) |
77 Tage |
16.223 (14.866) |
13.265 files changed, 643.912 insertions(+), 320.289 deletions(-) |
Linux 4.16 | 62.915 |
25.558.805 (23.495.643) |
63 Tage |
14.896 (13.630) |
12.239 files changed, 1.133.069 insertions(+), 939.066 deletions(-) |
Linux 4.17 | 61.362 |
25.379.564 (23.314.368) |
63 Tage |
14.745 (13.541) |
14.504 files changed, 777.301 insertions(+), 956.941 deletions(-) |
Linux 4.18 | 61.003 |
25.280.872 (23.183.236) |
70 Tage |
14.432 (13.283) |
13.141 files changed, 583.336 insertions(+), 682.028 deletions(-) |
Linux 4.19 | 61.734 |
25.588.455 (23.449.221) |
70 Tage |
15.204 (14.043) |
11,693 files changed, 552.223 insertions(+), 244.235 deletions(-) |
Linux 4.20 | 62.481 |
25.955.520 (23.776.585) |
63 Tage |
14.995 (13.844) |
11402 files changed, 685.027 insertions(+), 317.959 deletions(-) |
Linux 5.0 | 63.135 |
26.203.035 (23.933.016) |
70 Tage |
13.921 (12.808) |
12.100 files changed, 579.084 insertions(+), 331.570 deletions(-) |
Linux 5.1 | 63.873 |
26.459.776 (24.141.004) |
63 Tage |
14.160 (13.034) |
11.977 files changed, 545.423 insertions(+), 288.683 deletions(-) |
¹ git ls-tree -r --name-only HEAD | 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 --pretty=oneline vx.(y-1)..vx.(y) | wc -l; echo "($(git-log --pretty=oneline --no-merges vx.(y-1)..vx.(y) | wc -l))" ⁴ git diff --shortstat vx.(y-1)..vx.(y) |
Den neuen Linux-Kernel herunterladen und einrichten
Direkt nach der Freigabe steht die neue Linux-Version nur über einen Git-Checkout des offiziellen Enwicklerzweigs bereit; die Download-Möglichkeit über die Frontseite von Kernel.org folgt meist erst einige Stunden später, wenn sich die Büros in Europa richtig füllen.
Auf dem Server der Linux-Entwickler finden Sie eine Anleitung, wie Sie die Authentizität und die Unversehrtheit der Kernel-Quellen prüfen; dort gibt es auch ein Skript, das eine Version herunterlädt und diese Aufgaben anschließend durchführt.
Hinweise zur Einrichtung eines eigenen Kernels liefert der c't-Artikel "Linux-Kernel maßgeschneidert". Das darin beschriebene Make-Target make localmodconfig
erzeugt weitgehend automatisch eine recht gut auf das jeweilige System zugeschnittene Kernel-Konfiguration, mit der Sie in wenigen Minuten eine neue Linux-Version einrichten können.
Fedora und Rolling-Release-Distributionen wie Arch Linux, Gentoo und OpenSuse Tumbleweed erhalten die neue Linux-Version in den nächsten Tagen und Wochen im Rahmen der regulären Systemaktualisierung. Bei bereits erhältlichen oder kurz vor der Veröffentlichung stehende Releases von Debian, OpenSuse Leap, Ubuntu und den meisten anderen klassisch gewarteten Distributionen macht der Kernel normalerweise keine größeren Versionssprünge; deutlich neuere Kernel erhält man dort meist erst beim Wechsel auf eine neuere Version der Distribution.
Allerlei weitere Informationen zu Linux (dem Kernel, nicht dem Betriebssystem!) liefern der erste, zweite und dritte Teil einer c't-FAQ-Reihe mit "Basiswissen zum Linux-Kernel".
(thl)