Linux 5.2: Einfacherer Modulbau, viele Dateiänderungen und Stromsparen individueller konfigurieren Update

Linux Kernel 5.2

Trends & News | Kernel-Log

Linux kann die Dateien zum Bau von Kernel-Modulen bald mitbringen. Die Entwickler haben für Version 5.2 doppelt so viele Dateien verändert wie üblich.

Das am 8. oder 15. Juli erwartete Linux 5.2 kann die Dateien via Procfs bereitstellen, die man zum Bau von Kernel-Modulen braucht. Durch Lizenzauszeichnungen haben die Entwickler für Version 5.2 ungefähr doppelt so viele Dateien verändert wie sonst für eine neue Version. Außerdem kann man jetzt die Auslastung besser im Blick behalten und das Stromsparverhalten gezielter konfigurieren. Über eine neue Intel-Technik lassen sich jetzt Funktionen von Hardware kleinteiliger an virtuelle Maschinen oder Container überstellen, ohne den Host zu gefährden.

Linux kann über die Datei /proc/kheaders.tar.xz jetzt eine Reihe von Entwicklerdateien bereitstellen, die man für Kernel-nahe Tätigkeiten gelegentlich braucht – etwa zur Ablaufverfolgung (Tracing) oder zum nachträglichen Kompilieren von Kernel-Modulen. Die Datei mit Header- und Devel-Dateien wird dabei von einem vergleichsweise großen Modul bereitgestellt, das sich bei Bedarf aber laden und später wieder entladen lässt.

Laut dem zuständigen Entwickler ist dieser Ansatz für Android und andere Embedded Systems gedacht: Dort ist es unüblich, diese Entwicklerdateien mit dem Root-Dateisystem auszuliefern, wie es Linux-Distributionen für PCs typischerweise machen. Abzuwarten bleibt, ob Distributoren das neue Feature in ihren Kernel-Images aktivieren werden.

Die Linux-Entwickler haben für Linux 5.2 über 26.000 Dateien verändert – ungefähr doppelt so viele wie sonst bei neuen Versionen. Für diesen Rekord sind Thomas Gleixner und einige Mitstreiter verantwortlich, die tausende Lizenzhinweise in Quelltextdateien durch einzeilige Lizenzauszeichner ersetzt haben, die der Spezifikation des SPDX (Software Package Data Exchange) entsprechen. Diese am Dateianfang stehenden "SPDX License Identifier" lauten etwa "GPL-2.0-or-later" oder "GPL-2.0-only". Compliance-Werkzeuge können diese leicht und unmissverständlich abfragen. Vor allem Unternehmen setzen solche Werkzeuge ein, um sich einen Überblick über die in Produkten verwendeten Software-Lizenzen zu verschaffen, damit sie besser sicherstellen können, die Lizenzen auch einzuhalten.

Die Bestrebungen zur SPDX-Auszeichnung der Quelldateien von Linux begannen bei Linux 4.14 und bekamen bei Linux 4.16 einen ersten Schub. Die jetzt vorgenommenen Änderungen (u. a. 1, 2, 3, 4, 5) sind ein enormer Schritt vorwärts, durch den jetzt über sechzig Prozent der Dateien einen SPDX License Identifier tragen.Die Änderungen nahmen die Entwickler im Wesentlichen mit Skripten vor. Bei den verbliebenden Dateien ist mehr Handarbeit nötig, weil die Skripte die Lizenzen dort nicht zweifelsfrei erkennen können.

Mehr als die Hälfte der Quellcodedateien trägt jetzt eine unmissverständliche Lizenz-Kennzeichnung.

Mithilfe des von Google-Mitarbeitern eingebrachten PSI Monitors (u. a. 1, 2) können Überwachungsprogramme jetzt innerhalb von Millisekunden und ohne viel Overhead von drohender oder akuter Überlastung erfahren. Solche Tools können früher Maßnahmen ergreifen und notfalls Programme beenden – etwa wenn ein Hintergrundprozess den Arbeitsspeicher übermäßig belastet und so die Desktop-Oberfläche oder ein Vordergrundprogramm spürbar verlangsamt.

Google will das Feature bei Android nutzen. Einige Hintergründe zum Ansatz erläutert der LWN.net-Artikel "Pressure stall monitors". Die neue Technik erweitert das bei Linux 4.20 integrierten PSI (Pressure-Stall Information), mit dem Administratoren deutlich leichter als bei /proc/loadavgerkennen können, wie stark und wodurch ein System ausgelastet is.

Über Dateien unter Pfaden wie /sys/devices/system/cpu/cpu0/power/energy_perf_bias kann man jetzt den Intel Energy and Performance Bias Hint (EPB) abfragen und setzen. Dieser Wert beeinflusst bei EBP-tauglichen Prozessoren, ob der Prozessor im Zweifel zu bestmöglicher Performance oder möglichst geringem Stromverbrauch tendiert, wenn er die Betriebsgeschwindigkeit wählt. Diese Entscheidung der CPU zu überlassen ist für PC-Prozessoren die typischerweise beste Herangehensweise, denn die früher übliche Steuerung über Userspace-Programme ist zu träge und hat nicht so viel EInblick in CPU-Interna.

Mit Intels Scalable I/O Virtualization soll sich Hardware kleinteiliger an VMs oder Container überstellen lassen. (Bild: Vortragsfolien )

Die IOMMU-Infrastruktur des Linux-Kernels bietet jetzt "AUX domain support" und unterstützt damit Intels Scalable I/O Virtualization – eine Technik, mit der sich Funktionen von Hardwarekomponenten unter die Kontrolle von virtuellen Maschinen (VMs), Containern oder Prozessen stellen lassen, ohne die Sicherheit des Systems zu gefährden (u. a. 1, 2, 3, 4, 5, 6). Auf diese Weise kann der Kernel etwa virtuelle, vom Netzwerkchip bereitgestellte virtuelle Netzwerkschnittstellen zur freien Verfügung an VMs oder Container überstellen. Für derlei wird bislang meist Single Root I/O Virtualization (SR-IOV) genutzt, das allerdings mehr Overhead hat und unter anderem dadurch nicht hunderte oder gar tausende Sub-Funktionen exportieren kann, wie es heutige hoch-skalierbare Systeme manchmal erfordern. Details zur mit VT-d 3.0 spezifizierten Scalable I/O Virtualization liefern ein Blog-Beitrag und einige Vortragsfolien von Intel-Mitarbeitern. Wie bei SR-IOV muss die Hardware aber auch für Scalable I/O Virtualization ausgelegt sein.

Beim Erzeugen eines neuen Prozesses über den Systemaufruf clone() können Programme mit dem neuen Syscall-Flag CLONE_PIDFD jetzt gleich den seit Linux 5.1 unterstützten PID File Descriptor (PIDFD) erhalten, der auf den neu erstellten Prozess verweist. Die neue Funktion ist unter anderem für System-Management-Werkzeuge gedacht, die mit diesem File Descriptor hundertprozentig sicher gehen können, dass sie später an diesen Prozess gesendete Signale nicht versehentlich an einen anderen, vollkommen unbeteiligten Prozess schicken. Details zu dem Feature, das die Android- und Systemd-Entwickler nutzen wollen, erläutert der LWN.net-Artikel "Rethinking race-free process signaling".

Die zweite Generation der Control Groups (Cgroups v2) bringt nun auch einen Controller mit, um Prozesse vorübergehend einzufrieren – etwa um derweil in Ruhe einige Ressourcen für den Weiterbetrieb frei schaufeln zu können, falls Überlastung droht. Dieser Freezer ist einer der letzten Controller, die zum kompletten Umstieg auf Cgroup v2 noch fehlten. Im Commit-Kommentar und der Dokumentation weist der zuständige Entwickler indes darauf hin, dass der neue Freezer Controller etwas anders vorgeht als der ältere.

Wie bei jeder neuen Kernel-Version haben die Kernel-Entwickler zahlreiche Optimierungen vorgenommen – die sorgen bei bestimmten Umgebungsbedingungen manchmal für einen größeren Geschwindigkeitsgewinn, können bei anderen Systemen aber nur geringen oder gar keinen Einfluss auf die Performance haben. Unter diesen Optimierungen sind etwa Umbauten am Code zur Speicherplatz-Anforderung via Vmalloc, die Latenzen reduziert und dadurch die Performance deutlich verbessern kann. Durch diese "Improve Vmap Allocation" genannten Änderungen konnte der zuständige Entwickler ein Testprogramm in viereinhalb Minuten ausführen, das auf seinem Einplatinencomputer mit ARM64-Prozessor zuvor nach 24 Stunden noch nicht fertig war.

Eine effizientere Nutzung der Prozessor-Caches verspricht die Patch-Serie "Randomize free memory". Laut dem Entwickler wirkt sich das in vielen Tests nicht sonderlich aus, führt in bestimmte Szenarien aber zu enormen Performance-Gewinnen.

Der Kernel kann jetzt die mit GCC 9 eingeführte Option -flive-patching nutzen, um Optimierungen zu umgehen, die Kernel Live Patching (KLP) verkomplizieren. Laut den Entwicklern schnitten einige Scheduler-Benchmarks durch die neue Option allerdings ein bis drei Prozent schlechter ab.

Unter den wie üblich zahlreichen Änderungen an Infrastruktur und Werkzeugen zum Performance Monitoring mit perf war Support für Adaptive PEBSv4 (Precise Event-Based Sampling), das Intel in neue CPUs verbaut und den Overhead bei Geschwindigkeitsanalysen erheblich reduzieren kann. Ebenfalls neu: Die Perf-Record-Option --mmap-flush=<number>, Unterstützung zur Kompression mit Zstandard (Zstd) sowie Support für Intels-CPUs der Generationen Tremont und Ice Lake.

Für Entwickler wichtig: Die Kernel-Macher haben das mmiowb() genannte Macro für Memory-Mapped I/O (MMIO) entfernt, das allerlei Tücken hatte, die LWN.net im Artikel "Memory-mapped I/O without mysterious macros" erläutert.

Neu dabei ist auch ein Dokument, das einige Performance-Aspekte bei Arbeitsspeicherzugriffen in NUMA-Systemen näher erläutert. Ferner gab es einen ganzen Schwung Änderungen (u. a. 1, 2, 3), um den Support für Heterogenous Memory Management (HMM) zu verbessern – die in Linux 4.14 integrierte Infrastruktur, die die effiziente Nutzung von Zusatzprozessoren wie Crypto-Beschleunigern oder GPUs erleichtert, denen eigener Arbeitsspeicher zur Seite steht.

Die Kommentare der Git-Merges zahlreicher Subsysteme nennen einige weitere wichtige Änderungen – etwa in dem Bereichen ACPI, Dokumentation (1, 2), Cgroup, EFI, Ftrace, Iommu, Kbuild (1, 2), Kgdb, Ktest, Kselftest (1, 2), Livepatching, PCI, Percpu, Pidfd, Power Management, Printk, RCU Core, Scheduler, Thermal und VFIO.

Schrittweise aktualisierter Text zu Linux 5.2

Die Neuerungen des am 8. oder 15 Juli erwarteten Linux 5.2 sind seit dem 20. Mai absehbar, als Linus Torvalds die erste Vorabversion dieser Kernel-Version freigegeben hat. Damit hat er die "Merge Window" genannte Phase des Entwicklungszyklus abgeschlossen, in der er alle wesentlichen Umbauten für eine neue Kernel-Version vornimmt. Größere, erwähnenswerte Änderungen erfolgen danach nur in Ausnahmefällen; es passiert auch nur äußerst selten, dass die Entwickler eine umfangreichere, im Merge Window integrierte Änderung vor der Fertigstellung deaktivieren oder gar entfernen.

Das Kernel-Log der c't kann daher bereits jetzt die Neuerungen der nächsten Linux-Version in einem detaillierten Text beschreiben. Er wird zwischen Erstpublikation und der Fertigstellung des neuen Kernels mehrfach erweitert, um die wesentlichen Änderungen der verschiedenen Kernel-Bereiche schrittweise in leichter handhabbaren Mengen zu beschreiben. Der Text reißt daher die Highlights bislang nur an und beschreibt nur die Neuerungen bei Grafiktreibern und Infrastrukturnäher; es folgen aber noch Textupdates, die sich Dateisystemen & Storage, Netzwerk-Unterstützung, Treibern, und Architektur-Support noch näher widmen und dabei auch Details zu den Highlights liefern.

Der Newsticker von heise online und der Twitter-Account @kernellog erwähnen größere Erweiterungen des Textes zum neuen Linux-Kernel. Diese finden Sie immer auf der ersten Artikelseite; ältere Textpassagen finden Sie auf den folgenden Seiten. Details zur Versionshistorie des Artikels liefert das Changelog am Artikelende.

Kommentare

Kommentare lesen (674 Beiträge)

Anzeige
Anzeige