Erscheinung des Linux-Kerns 6.0

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

60GB SSD 8Gb DDR4