Linux 6.0-Kernel-Release

Nach zweimonatiger Entwicklungszeit präsentierte Linus Torvalds die Veröffentlichung des Linux 6.0-Kernels. Die erhebliche Änderung der Versionsnummer erfolgt aus ästhetischen Gründen und ist ein formaler Schritt, um die Unannehmlichkeiten zu lindern, die mit der Anhäufung einer großen Anzahl von Ausgaben in der Serie einhergehen (Linus scherzte, dass der Grund für die Änderung der Zweignummer eher darin lag, dass ihm die Finger ausgingen). und Zehen, um Versionsnummern zu zählen). Zu den bemerkenswertesten Änderungen gehören: Unterstützung für asynchrones gepuffertes Schreiben in XFS, der ublk-Blocktreiber, Optimierung des Taskplaners, ein Mechanismus zur Überprüfung des korrekten Betriebs des Kernels, Unterstützung für die ARIA-Blockverschlüsselung.

Wichtige Neuerungen im Kernel 6.0:

  • Festplattensubsystem, E/A und Dateisysteme
    • Das XFS-Dateisystem hat Unterstützung für asynchrone gepufferte Schreibvorgänge mithilfe des io_uring-Mechanismus hinzugefügt. Mit FIO-Tools durchgeführte Leistungstests (1 Thread, 4 KB Blockgröße, 600 Sekunden, sequentielles Schreiben) zeigen einen Anstieg der Ein-/Ausgabeoperationen pro Sekunde (IOPS) von 77 auf 209, die Datenübertragungsgeschwindigkeit von 314 MB/s auf 854 MB/s. und ein Rückgang der Latenz von 9600 ns auf 120 ns (80-mal).
    • Das Btrfs-Dateisystem implementiert eine zweite Version des Protokolls für den „send“-Befehl, die Unterstützung für zusätzliche Metadaten implementiert, Daten in größeren Blöcken (mehr als 64 KB) sendet und Extents in komprimierter Form überträgt. Durch das gleichzeitige Lesen von bis zu 3 Sektoren wurde die Leistung direkter Lesevorgänge deutlich gesteigert (bis zum Dreifachen). Reduzierte Sperrkonflikte und beschleunigte Metadatenprüfung durch Reduzierung reservierter Metadaten für zurückgestellte Elemente.
    • Dem ext4-Dateisystem wurden neue ioctl-Operationen EXT4_IOC_GETFSUUID und EXT4_IC_SETFSUUID hinzugefügt, um die im Superblock gespeicherte UUID abzurufen oder festzulegen.
    • Das F2FS-Dateisystem bietet einen Modus mit geringem Speicherverbrauch, der den Betrieb auf Geräten mit wenig RAM optimiert und es Ihnen ermöglicht, den Speicherverbrauch auf Kosten einer geringeren Leistung zu reduzieren.
    • Unterstützung für NVMe-Laufwerkauthentifizierung hinzugefügt.
    • Der NFSv4-Server implementiert eine Begrenzung der Anzahl aktiver Clients, die auf 1024 gültige Clients pro Gigabyte RAM im System festgelegt ist.
    • Die CIFS-Client-Implementierung hat die Leistung im Mehrkanal-Übertragungsmodus verbessert.
    • Dem Event-Tracking-Subsystem im fanotify FS wurde ein neues Flag FAN_MARK_IGNORE hinzugefügt, um bestimmte Ereignisse zu ignorieren.
    • Wenn Overlayfs FS auf einem FS mit Benutzer-ID-Zuordnung montiert wird, wird die korrekte Unterstützung für POSIX-kompatible Zugriffskontrolllisten bereitgestellt.
    • Der ublk-Blocktreiber wurde hinzugefügt, der bestimmte Logik auf die Seite des Hintergrundprozesses im Benutzerbereich verschiebt und das io_uring-Subsystem verwendet.
  • Speicher- und Systemdienste
    • Dem Subsystem DAMON (Data Access MONitor) wurden neue Funktionen hinzugefügt, die es ermöglichen, nicht nur den Prozesszugriff auf den RAM aus dem Benutzerbereich zu überwachen, sondern auch die Speicherverwaltung zu beeinflussen. Insbesondere wurde ein neues Modul „LRU_SORT“ vorgeschlagen, das eine Neugruppierung von LRU-Listen (Least Recent Used) ermöglicht, um die Priorität bestimmter Speicherseiten zu erhöhen.
    • Die Möglichkeit, neue Speicherbereiche zu erstellen, wurde mithilfe der Funktionen des CXL-Busses (Compute Express Link) implementiert, der zur Organisation der Hochgeschwindigkeitsinteraktion zwischen der CPU und den Speichergeräten verwendet wird. Mit CXL können Sie neue Speicherbereiche verbinden, die von externen Speichergeräten bereitgestellt werden, und diese als zusätzliche physische Adressraumressourcen verwenden, um den Direktzugriffsspeicher (DDR) oder Permanentspeicher (PMEM) des Systems zu erweitern.
    • Leistungsprobleme mit AMD Zen-Prozessoren behoben, die durch vor 20 Jahren hinzugefügten Code verursacht wurden, um ein Hardwareproblem in einigen Chipsätzen zu umgehen (eine zusätzliche WAIT-Anweisung wurde hinzugefügt, um den Prozessor zu verlangsamen, damit der Chipsatz Zeit hatte, in einen Leerlaufzustand zu wechseln). Die Änderung führte zu einer verringerten Leistung bei Arbeitslasten, die häufig zwischen Leerlauf- und Auslastungszustand wechseln. Nach der Deaktivierung des Workarounds stiegen beispielsweise die durchschnittlichen Tbench-Testergebnisse von 32191 MB/s auf 33805 MB/s.
    • Code mit Heuristik wurde aus dem Taskplaner entfernt, um die Migration von Prozessen auf die am wenigsten belasteten CPUs unter Berücksichtigung des vorhergesagten Anstiegs des Energieverbrauchs sicherzustellen. Die Entwickler kamen zu dem Schluss, dass die Heuristik nicht nützlich genug war und dass es einfacher war, sie zu entfernen und Prozesse ohne zusätzliche Bewertung zu migrieren, wenn eine solche Migration möglicherweise zu einem geringeren Stromverbrauch führen könnte (z. B. wenn sich die Ziel-CPU in einer niedrigeren Leistungsstufe befindet). Die Deaktivierung der Heuristik führte zu einer Reduzierung des Stromverbrauchs bei der Ausführung intensiver Aufgaben. Beispielsweise sank der Stromverbrauch beim Videodekodierungstest um 5.6 %.
    • Die Verteilung der Aufgaben auf die CPU-Kerne großer Systeme wurde optimiert, was zu einer verbesserten Leistung für bestimmte Arten von Arbeitslasten führte.
    • Die asynchrone E/A-Schnittstelle io_uring bietet ein neues Flag, IORING_RECV_MULTISHOT, mit dem Sie den Multi-Shot-Modus mit dem Systemaufruf recv() verwenden können, um mehrere Lesevorgänge vom selben Netzwerk-Socket gleichzeitig auszuführen. io_uring unterstützt auch die Netzwerkübertragung ohne Zwischenpufferung (Zero-Copy).
    • Es wurde die Möglichkeit implementiert, an uprobe angehängte BPF-Programme in einen Ruhezustand zu versetzen. BPF fügt außerdem einen neuen Iterator ksym für die Arbeit mit Kernel-Symboltabellen hinzu.
    • Die veraltete „efivars“-Schnittstelle in sysfs, die für den Zugriff auf UEFI-Bootvariablen gedacht war, wurde entfernt (das virtuelle FS efivarfs wird jetzt allgemein für den Zugriff auf EFI-Daten verwendet).
    • Das Dienstprogramm perf verfügt über neue Berichte zur Analyse von Sperrkonflikten und der Zeit, die der Prozessor für die Ausführung von Kernelkomponenten benötigt.
    • Die Einstellung CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 wurde entfernt, wodurch der Kernel im Optimierungsmodus „-O3“ erstellt werden konnte. Es wird darauf hingewiesen, dass Experimente mit Optimierungsmodi durchgeführt werden können, indem Flags während der Assemblierung übergeben werden („make KCFLAGS=-O3“), und das Hinzufügen einer Einstellung zu Kconfig eine wiederholbare Leistungsprofilierung erfordert, was zeigt, dass das Schleifenabrollen im „-O3“-Modus zu Ergebnissen führt ein Vorteil gegenüber der Optimierungsstufe „-O2“.
    • Es wurde eine debugfs-Schnittstelle hinzugefügt, um Informationen über die Funktionsweise einzelner „Speicherverkleinerer“ (Handler, die aufgerufen werden, wenn nicht genügend Speicher vorhanden ist und Kernel-Datenstrukturen packt, um ihren Speicherverbrauch zu reduzieren) zu erhalten.
    • Für die OpenRISC- und LoongArch-Architekturen ist Unterstützung für den PCI-Bus implementiert.
    • Für die RISC-V-Architektur wurde die Erweiterung „Zicbom“ implementiert, um Geräte mit DMA zu verwalten, das nicht Cache-kohärent ist.
  • Virtualisierung und Sicherheit
    • Ein RV-Verifizierungsmechanismus (Runtime Verification) wurde hinzugefügt, um den korrekten Betrieb auf hochzuverlässigen Systemen zu überprüfen, die garantiert keine Ausfälle verursachen. Die Überprüfung erfolgt zur Laufzeit, indem Handler an Trace-Punkte angehängt werden, die den tatsächlichen Ausführungsfortschritt anhand eines vorgegebenen deterministischen Referenzmodells der Maschine überprüfen, das das erwartete Verhalten des Systems definiert. Die Überprüfung mit dem Modell zur Laufzeit wird als leichtere und einfacher zu implementierende Methode zur Bestätigung der Korrektheit der Ausführung auf kritischen Systemen positioniert und ergänzt die klassischen Methoden zur Zuverlässigkeitsüberprüfung. Zu den Vorteilen von RV gehört die Möglichkeit einer strengen Verifizierung ohne separate Implementierung des Gesamtsystems in einer Modellierungssprache sowie die flexible Reaktion auf unvorhergesehene Ereignisse.
    • Integrierte Kernel-Komponenten zur Verwaltung von Enklaven basierend auf der Intel SGX2-Technologie (Software Guard eXtensions), die es Anwendungen ermöglicht, Code in isolierten verschlüsselten Speicherbereichen auszuführen, auf die der Rest des Systems nur begrenzten Zugriff hat. Die Intel SGX2-Technologie wird in Intel Ice Lake- und Gemini Lake-Chips unterstützt und unterscheidet sich von Intel SGX1 durch zusätzliche Anweisungen für die dynamische Speicherverwaltung von Enklaven.
    • Für die x86-Architektur wurde die Möglichkeit implementiert, den Seed für den Pseudozufallszahlengenerator über die Bootloader-Einstellungen zu übertragen.
    • Das SafeSetID LSM-Modul verfügt nun über die Möglichkeit, Änderungen zu verwalten, die über den setgroups()-Aufruf vorgenommen werden. Mit SafeSetID können Systemdienste Benutzer sicher verwalten, ohne dass Berechtigungen ausgeweitet werden müssen (CAP_SETUID) und ohne Root-Rechte zu erlangen.
    • Unterstützung für ARIA-Blockverschlüsselung hinzugefügt.
    • Das BPF-basierte Sicherheitsmanagementmodul bietet die Möglichkeit, Handler an einzelne Prozesse und Prozessgruppen (cgroups) anzuhängen.
    • Es wurde ein Mechanismus mit einer Watchdog-Implementierung hinzugefügt, um Hänge von Gastsystemen basierend auf der Überwachung der vCPU-Aktivität zu erkennen.
  • Netzwerk-Subsystem
    • Dem BPF-Subsystem wurden Handler zum Generieren und Überprüfen von SYN-Cookies hinzugefügt. Außerdem wurde eine Reihe von Funktionen (kfunc) zum Zugriff auf und Ändern des Verbindungsstatus hinzugefügt.
    • Der Wireless-Stack hat Unterstützung für den MLO-Mechanismus (Multi-Link Operation) hinzugefügt, der in der WiFi 7-Spezifikation definiert ist und es Geräten ermöglicht, gleichzeitig Daten über verschiedene Frequenzbänder und Kanäle zu empfangen und zu senden, um beispielsweise gleichzeitig mehrere Kommunikationskanäle zwischen einem einzurichten Zugangspunkt zu einem Clientgerät.
    • Die Leistung des im Kernel integrierten TLS-Protokolls wurde verbessert.
    • Es wurde eine Kernel-Befehlszeilenoption „hostname=" hinzugefügt, um die Festlegung des Hostnamens zu Beginn des Startvorgangs zu ermöglichen, bevor User-Space-Komponenten gestartet werden.
  • Ausrüstung
    • Der i915 (Intel)-Treiber bietet Unterstützung für die separaten Grafikkarten Intel Arc (DG2/Alchemist) A750 und A770. Eine erste Implementierung der Unterstützung für Intel Ponte Vecchio (Xe-HPC) und Meteor Lake GPUs wurde vorgeschlagen. Es wird weiterhin an der Unterstützung der Intel Raptor Lake-Plattform gearbeitet.
    • Der amdgpu-Treiber bietet weiterhin Unterstützung für die Plattformen AMD RDNA3 (RX 7000) und CDNA (Instinct).
    • Der Nouveau-Treiber hat den Unterstützungscode für NVIDIA nv50 GPU-Anzeige-Engines überarbeitet.
    • Neuer Logicvc-DRM-Treiber für LogiCVC-Bildschirme hinzugefügt.
    • Der v3d-Treiber (für Broadcom Video Core GPU) unterstützt Raspberry Pi 4-Boards.
    • Unterstützung für die Qualcomm Adreno 619 GPU zum MSM-Treiber hinzugefügt.
    • Unterstützung für ARM Mali Valhall GPU zum Panfrost-Treiber hinzugefügt.
    • Erste Unterstützung für Qualcomm Snapdragon 8cx Gen3-Prozessoren hinzugefügt, die in Lenovo ThinkPad X13s-Laptops verwendet werden.
    • Soundtreiber für die Plattformen AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake und Mediatek MT8186 hinzugefügt.
    • Unterstützung für Intel Habana Gaudi 2 Beschleuniger für maschinelles Lernen hinzugefügt.
    • Unterstützung für ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3 hinzugefügt.

Gleichzeitig hat die Latin American Free Software Foundation eine Version des völlig kostenlosen Kernels 6.0 erstellt – Linux-libre 6.0-gnu, frei von Firmware- und Treiberelementen, die unfreie Komponenten oder Codeabschnitte enthalten, deren Umfang ist vom Hersteller begrenzt. Die neue Version deaktiviert die Verwendung von Blobs im HD-Audio-Treiber CS35L41 und im UCSI-Treiber für STM32G0-Mikrocontroller. DTS-Dateien für Qualcomm- und MediaTek-Chips wurden bereinigt. Die Deaktivierung von Blobs im MediaTek MT76-Treiber wurde überarbeitet. Aktualisierter Blob-Reinigungscode in AMDGPU-, Adreno-, Tegra VIC-, Netronome NFP- und Habanalabs Gaudi2-Treibern und -Subsystemen. Die Bereinigung des VXGE-Treibers wurde gestoppt, da er aus dem Kernel entfernt wurde.

Source: opennet.ru

Kommentar hinzufügen