Oracle hat die erste stabile Version des Unbreakable Enterprise Kernel 8 (UEK R8) vorgestellt, einer Linux-Kernel-Variante, die für die Verwendung in der Oracle Linux-Distribution als Alternative zum Standardkern aus Red Hat Enterprise Linux entwickelt wurde. Der Kernel ist nur für die Architekturen x86_64 und ARM64 (aarch64) verfügbar. Der Quellcode des Kernels, inklusive der Aufteilung in einzelne Patches, wurde im öffentlichen Git-Repository von Oracle veröffentlicht.
Das Unbreakable Enterprise Kernel 8-Paket basiert auf dem Linux-Kernel 6.12 (die UEK R7-Version basierte auf dem Kernel 5.4, und in der Beta-Version RHEL 10 wurde der Kernel 6.11 angeboten), der um neue Funktionen, Optimierungen und Fehlerbehebungen ergänzt und auf die Kompatibilität mit den meisten in RHEL verwendeten Anwendungen überprüft wurde und für die Nutzung mit Oracle-Industrie-Software und -Hardware optimiert ist. Installations- und Quellpakete für den UEK R8-Kernel wurden für Oracle Linux 9.5 vorbereitet (es gibt keine Hindernisse für die Verwendung dieses Kernels in ähnlichen Versionen von RHEL, CentOS, Alma Linux und Rocky Linux).
Wesentliche Neuerungen des Unbreakable Enterprise Kernel 8:
- Die Aufteilung der Kernelkomponenten von UEK in separate Pakete wurde geändert. Die Kernelmodule wurden vom Basis-Image des Kernels getrennt und in Sammlungen ausgeliefert, die in separaten Paketen bereitgestellt werden: kernel-uek-modules-core (Basisversion), kernel-uek-modules (für Server), kernel-uek-modules-desktop, kernel-uek-modules-extra-netfilter, kernel-uek-modules-usb und kernel-uek-modules-wireless. Die zugehörigen Dienstprogramme wurden aus dem Basispaket kernel-uek-core in ein separates Paket kernel-uek-tools ausgelagert. Die Konfigurationsdateien mit der Liste der verbotenen Module für das Booten wurden von „blacklist“ in „denylist“ umbenannt, im Rahmen einer Initiative zur Verwendung inklusiver Terminologie.
- Für die ARM Ampere-Systeme, die in Oracle Cloud eingesetzt werden, wurde ein separates Kernelpaket kernel-uek64k erstellt, dessen Basis seitenspeichergröße von 4 KB auf 64 KB erhöht wurde.
- Die Unterstützung für den in Intel SGX2 (Software Guard Extensions) bereitgestellten Hardware-Mechanismus EDMM (Enclave Dynamic Memory Management) wurde hinzugefügt, der den Zugriff auf einzelne Seiten des Speichers des Enklaves verwaltet und Seiten dynamisch hinzufügen oder entfernen kann.
- Im Intel QAT-Treiber, der Geräte mit Intel Quick Assist Technology (QAT) unterstützt, wurde die Unterstützung für die 4. Generation der Intel Xeon-Prozessoren hinzugefügt.
- Ein System zur Erkennung von "split-locks" wurde hinzugefügt, das auftritt, wenn auf nicht ausgerichtete Daten im Speicher zugegriffen wird, da die Daten bei der Ausführung einer atomaren Anweisung zwei Cache-Zeilen des CPUs überqueren. Solche Sperren führen zu einem erheblichen Leistungsabfall (1000 Zyklen langsamer als eine atomare Operation mit Daten, die in eine Cache-Zeile fallen).
- Eine neue Methode zum Schutz vor der Retbleed-Schwachstelle in Intel- und AMD-CPUs wurde implementiert, die das Verfolgen der Rückruf-Tiefe nutzt und nicht so viel die Leistung beeinträchtigt wie der vorherige Schutz vor Retbleed.
- Auf x86-Systemen wird die gleichzeitige Aktivierung sekundärer CPU-Kerne unterstützt, was die Bootzeit des Kernels auf Systemen mit einer großen Anzahl von Kernen verkürzt.
- Ein neuer Kernel-Befehlszeilenparameter "ia32_emulation" wurde hinzugefügt, der es während des Bootvorgangs ermöglicht, die Unterstützung für den 32-Bit-Modus in für die x86-64-Architektur kompilierte Kerne ein- oder auszuschalten.
- Standardmäßig wird anstelle des CFS (Completely Fair Scheduler) der EEVDF (Earliest Eligible Virtual Deadline First) verwendet. Bei der Auswahl des nächsten Prozesses für die Ausführung berücksichtigt der neue Scheduler Prozesse, die unter CPU-Ressourcen gelitten haben oder unangemessen viel CPU-Zeit erhalten haben. Im ersten Fall wird die Kontrolle an den Prozess übergeben, im zweiten Fall hingegen verzögert. Der alte CFS-Scheduler verwendete Heuristiken und Feineinstellungen, um Prozesse zu identifizieren, die besondere Aufmerksamkeit benötigten, während der neue Scheduler diese deutlicher verfolgt und keine Feineinstellungen erfordert. EEVDF wird die Latenzzeiten beim Ausführen von Aufgaben reduzieren, bei denen der CFS-Scheduler Schwierigkeiten mit der Planung hatte.
- Die Bereitstellung des dynamischen Debugging-Systems DTrace 2.0 wurde fortgesetzt, das auf die Verwendung der eBPF-Kernel-Subsystem umgestellt wurde. DTrace 2.0 funktioniert über eBPF, ähnlich wie die bestehenden Tracing-Tools in Linux, die auf eBPF basieren.
- Im KVM-Hypervisor ist die Verwendung von bis zu 4096 virtuellen CPUs (VCPUs) erlaubt.
- Die Verwendung von KTLS, einer Implementierung des TLS-Protokolls auf Kernel-Ebene, wurde fortgesetzt.
- Die Implementierung des Pseudozufallszahlengenerators RDRAND, der für das Arbeiten mit dem Gerät /dev/random zuständig ist, wurde aktualisiert, um die Hash-Funktion BLAKE2s anstelle von SHA1 für Entropiemischoperationen zu verwenden. Diese Änderung ermöglicht eine Erhöhung der Sicherheit des Pseudozufallszahlengenerators. Um die Generierung zufälliger Zahlen über den Systemaufruf getrandom() zu beschleunigen, wurde der Mechanismus vDSO (virtual dynamic shared object) verwendet, der den Systemaufruf-Handler aus dem Kernel in den Benutzermodus überträgt, um Kontextwechsel zu vermeiden.
- Die Unterstützung für die BIG TCP-Erweiterung wurde hinzugefügt, die die maximale Größe eines TCP-Pakets auf 4 GB erhöht, um die Leistung von Hochgeschwindigkeits-Intranets in Rechenzentren zu optimieren. Eine solche Erhöhung der Paketgröße bei einer 16-Bit-Kopfzeilenfeld wird durch die Implementierung von „Jumbo“-Paketen erreicht, deren Größe im IP-Header auf 0 gesetzt wird, während die tatsächliche Größe in einem separaten 32-Bit-Feld in einem angehängten Header übertragen wird.
- Für Netzwerk-Sockets wurde die Option SO_RESERVE_MEM implementiert, mit der ein bestimmter Speicherumfang für den Socket reserviert werden kann, der immer für den Socket verfügbar bleibt und nicht entnommen wird. Die Verwendung dieser Option ermöglicht eine Leistungssteigerung durch die Reduzierung der Speicherzuweisungs- und Rückgabebetriebe im Netzwerkstapel, insbesondere bei Auftreten von Speicherknappheit im System.
- Die Leistung des fq (Fair Queuing) Paketplaners wurde optimiert, was zu einer Steigerung der Durchsatzrate um 5 % bei hohen Lasten im tcp_rr (TCP Request/Response) Test und um 13 % bei ungebremstem UDP-Paketstrom führte.
- Die Netzwerkstrukturen des Kernels wurden umstrukturiert, um die Effizienz der Datencaching durch die CPU zu verbessern, was die Leistung des TCP-Stacks auf Systemen, die eine große Anzahl paralleler Anfragen bedienen, erhöhte.
- Die Unterstützung für die ASMLib 3-Bibliothek zur automatischen Speicherverwaltung in der Oracle-Datenbank wurde hinzugefügt.
- Es wurden Optimierungen zur Leistungssteigerung und Verbesserung der Sicherheit des asynchronen I/O-Mechanismus io_uring durchgeführt. Es wurden io_uring-optimierte Features für die Dateisysteme XFS und Ext4 hinzugefügt, die paralleles direktes Schreiben in eine Datei in mehreren Threads ermöglichen.
- Die Unterstützung des Btrfs-Dateisystems wurde verbessert. Für Geräte mit Unterstützung für trim/discard ist die Mount-Option „discard=async“ standardmäßig aktiviert, die es ermöglicht, diese Operationen sofort für alle Dateisysteme im asynchronen Modus durchzuführen. Unterstützung für das Senden und Empfangen komprimierter Daten ohne Umwandlung wurde hinzugefügt. Unterstützung für das Schreiben von Blöcken größer als 64 KB wurde hinzugefügt. Die Verwaltung von Quoten wurde vereinfacht. Unterstützung für die Montage von geklonten Geräten wurde implementiert. Die Überprüfungen des Schreibens im NOCOW-Modus wurden verbessert (dabei stieg die Durchsatzrate um 9 %). Die Mount-Optionen „ignoremetacsums“ und „ignoresuperflags“ wurden hinzugefügt, um ungültige Prüfziffern von Metadaten und Superblock-Flags zu ignorieren. Es wurde sichergestellt, dass Aufgaben zum Entfernen von Geräten, zur Balance und zur Neuzuteilung von Blöcken im parallelen Modus ausgeführt werden.
- Im XFS-Dateisystem wurde die Verwendung von Blockgrößen, die größer sind als die Seitengröße des Speichers, erlaubt. Es wurden große Extent-Zähler für sehr große virtuelle Festplatten hinzugefügt. Ein atomarer Commit-Modus für den Inhalt von Dateien wurde hinzugefügt. Eine experimentelle Implementierung zur Überprüfung (fsck) und Wiederherstellung des Dateisystems im Online-Modus wurde vorgeschlagen.
- Im NFS ist standardmäßig die Verwendung der in der NFS 4.2-Spezifikation definierten READ_PLUS-Operation aktiviert, die für ein effizienteres Lesen von Daten aus Dateien mit Lücken verwendet wird.
- Das Speichermanagementsystem wurde auf die Verwendung von Folios-Datenstrukturen umgestellt. Folios sind vergleichbar mit zusammengesetzten Seiten (compound pages), unterscheiden sich jedoch durch eine verbesserte Semantik und eine klarere Organisation der Arbeit.
- Für Speicherabbildungsoperationen wird die Datenstruktur „maple tree“ verwendet, die als effizientere Alternative zur Struktur „red-black tree“ positioniert wird. Maple tree ist eine Variante des B-Baums, die eine Bereichsindizierung unterstützt und für eine effiziente Cache-Nutzung konzipiert ist. moderner Prozessoren.
- In mmap wurden Sperren auf der Ebene einzelner VMA (Virtual Memory Area) implementiert, die die Leistung von multithreaded Anwendungen steigern.
- Eine ptdesc-Datenstruktur wurde hinzugefügt, die die Arbeit mit Seitentabellen optimiert, indem sie Metadaten- und Datenstrukturen für Seiten speichert und trennt.
Quelle: opennet.ru
