Nach zwei Monaten Entwicklung prĂ€sentierte Linus Torvalds die Veröffentlichung des Linux-Kernels 6.0. Die signifikante Ănderung der Versionsnummer erfolgte aus Ă€sthetischen GrĂŒnden und stellt einen formalen Schritt dar, der das Unbehagen aufgrund der Vielzahl an Veröffentlichungen in der Reihe reduziert (Linus scherzte, dass der Grund fĂŒr die Ănderung der Branchennummer eher darin liegt, dass ihm die Finger an den HĂ€nden und FĂŒĂen zum ZĂ€hlen der Versionsnummern ausgehen). Zu den bemerkenswertesten Ănderungen gehören: UnterstĂŒtzung von asynchronem Puffer-IO in XFS, der Blocktreiber ublk, Optimierungen des Task-Schedulers, ein Mechanismus zur Verifizierung der Kernel-Korrektheit sowie UnterstĂŒtzung des Blockcipher ARIA.
Die wichtigsten Neuerungen im Kernel 6.0:
- Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
- Im Dateisystem XFS wurde UnterstĂŒtzung fĂŒr asynchrones Puffer-IO mit dem io_uring-Mechanismus hinzugefĂŒgt. Leistungstests, die mit dem Tool fio durchgefĂŒhrt wurden (1 Stream, BlockgröĂe 4KB, 600 Sekunden, sequenzielle SchreibvorgĂ€nge), zeigen einen Anstieg der Ein-/Ausgabeoperationen pro Sekunde (IOPS) von 77k auf 209k, bei der Datentransfergeschwindigkeit von 314MB/s auf 854MB/s und eine Verringerung der Latenzen von 9600ns auf 120ns (80-fach).
- Im Dateisystem Btrfs wurde die zweite Version des Protokolls fĂŒr den Befehl âsendâ implementiert, welches UnterstĂŒtzung fĂŒr zusĂ€tzliche Metadaten, das Senden gröĂerer Datenblöcke (ĂŒber 64K) sowie die Ăbertragung von Extents in komprimierter Form umfasst. Die Leistung der direkten Leseoperationen (direct read) wurde erheblich (bis zu 3-fach) durch gleichzeitiges Lesen von bis zu 256 Sektoren gesteigert. Konflikte bei Sperren wurden verringert und die ĂberprĂŒfung der Metadaten beschleunigt, indem die reservierten Metadaten fĂŒr verzögerte Elemente reduziert wurden.
- Im Dateisystem ext4 wurden neue ioctl-Operationen EXT4_IOC_GETFSUUID und EXT4_IC_SETFSUUID hinzugefĂŒgt, um die UUID-Identifizierung, die im Superblock gespeichert ist, auszulesen oder festzulegen.
- Im Dateisystem F2FS wurde ein Modus mit niedrigem Speicherverbrauch eingefĂŒhrt, der die Leistung auf GerĂ€ten mit wenig RAM optimiert und den Speicherverbrauch auf Kosten der Leistung reduziert.
- UnterstĂŒtzung fĂŒr die Authentifizierung von NVMe-Speichern wurde hinzugefĂŒgt.
- Im Server NFSv4 hat eine Begrenzung fĂŒr die Anzahl aktiver Clients implementiert, die als 1024 zulĂ€ssige Clients pro Gigabyte RAM im System festgelegt ist.
- Die Leistung des CIFS-Clients wurde im Modus der MehrkanalĂŒbertragung verbessert.
- In das Ereignisverfolgungssystem des FS fanotify wurde ein neues Flag FAN_MARK_IGNORE hinzugefĂŒgt, um spezifische Ereignisse zu ignorieren.
- Im FS Overlayfs wird beim Ăberlagern eines FS mit Benutzer-ID-Mapping die korrekte UnterstĂŒtzung von POSIX-kompatiblen Zugriffssteuerungslisten gewĂ€hrleistet.
- Ein Blocktreiber ublk wurde hinzugefĂŒgt, der spezifische Logik auf den Hintergrundprozess im Benutzerspeicher auslagert und das io_uring-System verwendet.
- Speicher und Systemdienste
- In das DAMON (Data Access MONitor)-System wurden neue Funktionen integriert, die es ermöglichen, nicht nur den Zugriff von Prozessen auf den Arbeitsspeicher aus dem Benutzerspeicher zu verfolgen, sondern auch das Speichermanagement zu beeinflussen. Insbesondere wurde ein neues Modul "LRU_SORT" vorgeschlagen, das eine Neuanordnung der LRU-Listen (Least Recently Used) ermöglicht, um bestimmten Speicherseiten eine höhere PrioritÀt zu geben.
- Die Möglichkeit zur Erstellung neuer Speicherregionen wurde implementiert, indem die Funktionen des CXL (Compute Express Link)-Bus genutzt werden, der fĂŒr die Organisation der Hochgeschwindigkeitsinteraktion zwischen CPU und Speichereinheiten verwendet wird. CXL ermöglicht das AnschlieĂen neuer Speicherregionen, die von externen Speichereinheiten bereitgestellt werden, und deren Verwendung als zusĂ€tzliche Ressourcen des physischen Adressraums zur Erweiterung des Systemspeichers (DDR) oder des persistenten Speichers (PMEM).
- Probleme mit der Leistung von Systemen mit AMD Zen-Prozessoren, die durch Code verursacht wurden, der vor 20 Jahren zur Umgehung eines Hardwareproblems in bestimmten ChipsĂ€tzen hinzugefĂŒgt wurde (es wurde eine zusĂ€tzliche WAIT-Anweisung hinzugefĂŒgt, die die CPU verlangsamt, damit der Chipsatz in den Leerlauf wechseln kann), wurden gelöst. Diese Ănderung fĂŒhrte zu einer Leistungssteigerung bei Lasten, bei denen hĂ€ufig zwischen Leerlauf- (idle) und AktivitĂ€tszustĂ€nden (busy) gewechselt wurde. Beispielsweise stiegen die durchschnittlichen Testergebnisse von tbench nach der Deaktivierung des Umgehungsmanövers von 32191 MB/s auf 33805 MB/s.
- Der Code mit der Heuristik, der den Prozessmigration auf die am wenigsten belasteten CPUs unter BerĂŒcksichtigung der prognostizierten Energieeinsparung ermöglicht hat, wurde aus dem Task-Planer entfernt. Die Entwickler schlossen daraus, dass die Heuristik keinen signifikanten Nutzen bringt und es einfacher ist, Prozesse ohne zusĂ€tzliche Bewertungen zu verschieben, wann immer ein solcher Transfer potenziell zu einer Senkung des Energieverbrauchs fĂŒhren kann (z. B. wenn die Ziel-CPU auf einem niedrigeren Energieverbrauchsniveau arbeitet). Die Deaktivierung der Heuristik fĂŒhrte zu einer Senkung des Energieverbrauchs bei intensiven Aufgaben, z. B. wurde der Energieverbrauch beim Video-Decodierungstest um 5,6 % gesenkt.
- Es wurde eine Optimierung der Aufgabenverteilung auf CPU-Kerne in groĂen Systemen vorgenommen, die die Leistung bei bestimmten Arten von Lasten steigert.
- Im Interface fĂŒr asynchrone Ein-/Ausgabe io_uring wurde ein neuer Flag IORING_RECV_MULTISHOT eingefĂŒhrt, der die Nutzung des "Multi-Shot"-Modus mit dem system call recv() ermöglicht, um mehrere LesevorgĂ€nge von einem Netzwerk-Socket gleichzeitig durchzufĂŒhren. In io_uring wurde auch die UnterstĂŒtzung fĂŒr die NetzwerkĂŒbertragung ohne zwischenzeitliche Pufferung (zero-copy) implementiert.
- Es wurde die Möglichkeit implementiert, BPF-Programme, die an uprobe angehĂ€ngt sind, in den Schlafzustand zu versetzen. In BPF wurde auch ein neuer Iterator ksym hinzugefĂŒgt, der mit Kernelsymbollisten arbeitet.
- Die veraltete Schnittstelle "efivars" in sysfs, die fĂŒr den Zugriff auf UEFI-Bootvariablen gedacht war, wurde entfernt (nun wird eine virtuelle FS efivarfs fĂŒr den Zugriff auf EFI-Daten allgemein verwendet).
- In der Perf-Utility wurden neue Berichte zur Analyse von Lock-Konflikten und der Zeit, die der Prozessor fĂŒr die AusfĂŒhrung von Kernelkomponenten aufbringt, implementiert.
- Die Konfiguration CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3, die es ermöglichte, den Kernel im Optimierungsmodus "-O3" zu kompilieren, wurde entfernt. Es wird darauf hingewiesen, dass Experimente mit Optimierungsmodi ĂŒber die Ăbergabe von Flags beim Kompilieren (make KCFLAGS=-O3) durchgefĂŒhrt werden können, wĂ€hrend fĂŒr das HinzufĂŒgen von Einstellungen in Kconfig reproduzierbare Leistungsprofilierungen erforderlich sind, die zeigen, dass die im Modus "-O3" angewandte Schleifenentwicklung Vorteile im Vergleich zu der Optimierungsstufe "-O2" bietet.
- Ein debugfs-Interface wurde hinzugefĂŒgt, um Informationen ĂŒber die Funktion einzelner "Memory Shrinker" (Handler, die bei Speichermangel aufgerufen werden und die Struktur Daten des Kernels komprimieren, um deren Speicherverbrauch zu reduzieren) zu erhalten.
- FĂŒr die Architekturen OpenRISC und LoongArch wurde die UnterstĂŒtzung fĂŒr den PCI-Bus implementiert.
- FĂŒr die RISC-V-Architektur wurde die Erweiterung "Zicbom" zur Steuerung von GerĂ€ten mit DMA, die nicht cache-kohĂ€rent sind, implementiert.
- Virtualisierung und Sicherheit
- Ein Mechanismus zur Laufzeitverifikation (Runtime Verification, RV) wurde hinzugefĂŒgt, um die Korrektheit des Betriebs in hochzuverlĂ€ssigen Systemen zu ĂŒberprĂŒfen, die AusfĂ€lle garantieren. Die ĂberprĂŒfung erfolgt zur Laufzeit durch das AnhĂ€ngen von Handlern an Tracepoints, die den tatsĂ€chlichen AusfĂŒhrungsverlauf mit einem im Voraus definierten Referenzmodell eines Automaten abgleichen, das das erwartete Verhalten des Systems definiert. Die ĂberprĂŒfung gegen das Modell zur Laufzeit wird als leichter und einfacher umsetzbar in der Praxis dargestellt, um die Korrektheit des Betriebs in kritischen Systemen zu bestĂ€tigen, und ergĂ€nzt klassische Methoden zur BestĂ€tigung der ZuverlĂ€ssigkeit. Zu den Vorteilen der RV gehört die Möglichkeit, eine strenge Verifikation ohne die separate Umsetzung des Gesamtsystems in einer Modellierungssprache zu gewĂ€hrleisten sowie ein flexibles Reagieren auf unvorhergesehene Ereignisse.
- Die Kernel-Komponenten zur Verwaltung von Enklaven auf Basis der Intel SGX2 (Software Guard eXtensions)-Technologie wurden integriert, die es Anwendungen ermöglicht, Code in isolierten, verschlĂŒsselten Speicherbereichen auszufĂŒhren, auf die der Rest des Systems eingeschrĂ€nkten Zugriff hat. Die Intel SGX2-Technologie wird in den Intel Ice Lake- und Gemini Lake-Chips unterstĂŒtzt und unterscheidet sich von Intel SGX1 durch zusĂ€tzliche Anweisungen zur dynamischen Speicherverwaltung fĂŒr Enklaven.
- FĂŒr die x86-Architektur wurde die Möglichkeit zur Ăbertragung von Seed fĂŒr den Pseudozufallszahlengenerator ĂŒber die Bootloader-Einstellungen implementiert.
- Im LSM-Modul SafeSetID wurde die Möglichkeit zur Verwaltung von Ănderungen hinzugefĂŒgt, die ĂŒber den Aufruf von setgroups() vorgenommen werden. SafeSetID ermöglicht es Systemdiensten, Benutzer sicher zu verwalten, ohne die Privilegien zu erhöhen (CAP_SETUID) und ohne die Rechte des Root-Benutzers zu erlangen.
- Die UnterstĂŒtzung des Blockchiffers ARIA wurde hinzugefĂŒgt.
- Im Sicherheitsauditmodul auf Basis von BPF wurde die Möglichkeit zur Anbringung von Handlern an einzelnen Prozessen und Prozessgruppen (cgroup) implementiert.
- Ein Mechanismus mit der Implementierung eines Watchdogs wurde hinzugefĂŒgt, um das HĂ€ngenbleiben von Gast-Systemen basierend auf der Ăberwachung der vCPU-AktivitĂ€t zu bestimmen.
- Netzwerksubsystem
- In das BPF-Subsystem wurden Handler zur Generierung und ĂberprĂŒfung von SYN-Cookies hinzugefĂŒgt. AuĂerdem wurde eine Funktionensammlung (kfunc) zum Zugriff auf und zur Ănderung des Verbindungsstatus integriert.
- Im WLAN-Stack wurde die UnterstĂŒtzung fĂŒr den MLO-Mechanismus (Multi-Link Operation) hinzugefĂŒgt, der in der Spezifikation WiFi 7 definiert ist und es GerĂ€ten ermöglicht, gleichzeitig Daten mit unterschiedlichen Frequenzbereichen und KanĂ€len zu empfangen und zu senden, beispielsweise um mehrere KommunikationskanĂ€le zwischen dem Access Point und dem Client-GerĂ€t gleichzeitig einzurichten.
- Die Leistung der im Kernel integrierten TLS-Protokollimplementierung wurde verbessert.
- Ein neuer Kernel-Befehlszeilenparameter "hostname=" wurde hinzugefĂŒgt, der es ermöglicht, den Hostnamen frĂŒh im Bootprozess einzustellen, bevor die Komponenten des Benutzerraums gestartet werden.
- AusrĂŒstung
- Im i915-Treiber (Intel) wird die UnterstĂŒtzung fĂŒr die dedizierten Grafikkarten Intel Arc (DG2/Alchemist) A750 und A770 sichergestellt. Eine erste Implementierung zur UnterstĂŒtzung von Intel Ponte Vecchio (Xe-HPC) und Meteor Lake wurde vorgeschlagen. Die Arbeit an der UnterstĂŒtzung der Intel Raptor Lake-Plattform wurde fortgesetzt.
- Im amdgpu-Treiber wurde die UnterstĂŒtzung fĂŒr die AMD RDNA3 (RX 7000) und CDNA (Instinct) Plattformen weiterhin vorangetrieben.
- Im Nouveau-Treiber wurde der Code zur UnterstĂŒtzung der Display-Engines von NVIDIA GPU nv50 ĂŒberarbeitet.
- Ein neuer DRM-Treiber logicvc fĂŒr LogiCVC-Bildschirme wurde hinzugefĂŒgt.
- Im v3d-Treiber (fĂŒr Broadcom Video Core GPUs) wurde die UnterstĂŒtzung fĂŒr Raspberry Pi 4-Platinen implementiert.
- Im msm-Treiber wurde die UnterstĂŒtzung fĂŒr GPU Qualcomm Adreno 619 hinzugefĂŒgt.
- Im Panfrost-Treiber wurde die UnterstĂŒtzung fĂŒr GPU ARM Mali Valhall hinzugefĂŒgt.
- Die erste UnterstĂŒtzung fĂŒr die Qualcomm Snapdragon 8cx Gen3-Prozessoren, die in Lenovo ThinkPad X13s Notebooks verwendet werden, wurde hinzugefĂŒgt.
- Soundtreiber fĂŒr AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake und Mediatek MT8186 wurden hinzugefĂŒgt.
- Die UnterstĂŒtzung fĂŒr Intel Habana Gaudi 2-Maschinenlern-Beschleuniger wurde hinzugefĂŒgt.
- Die UnterstĂŒtzung fĂŒr ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530 und Google Chameleon v3 wurde integriert.
Gleichzeitig hat die lateinamerikanische Freie Software-Stiftung eine vollstĂ€ndig freie Kernel-Version 6.0 â Linux-libre 6.0-gnu â erstellt, die von Firmware- und Treiberelementen befreit ist, die nicht-freie Komponenten oder Codeabschnitte enthalten, deren Verwendung vom Hersteller eingeschrĂ€nkt ist. In der neuen Version wurde die Verwendung von Blobs im Treiber CS35L41 HD-Audio und im Treiber mit UCSI-Schnittstelle fĂŒr STM32G0-Mikrocontroller deaktiviert. Die dts-Dateien fĂŒr Qualcomm- und MediaTek-Chips wurden bereinigt. Die Blob-Deaktivierung im MediaTek MT76-Treiber wurde ĂŒberarbeitet. Der Blob-Bereinigungscode in den Treibern und Subsystemen AMDGPU, Adreno, Tegra VIC, Netronome NFP und Habanalabs Gaudi2 wurde aktualisiert. Die Bereinigung des VXGE-Treibers, der aus dem Kernel entfernt wurde, wurde eingestellt.
Quelle: opennet.ru
