Oracle heeft de eerste stabiele release van de Unbreakable Enterprise Kernel 8 (UEK R8) gepresenteerd, een variant van de Linux-kernel die wordt ontwikkeld voor gebruik in de Oracle Linux-distributie als alternatief voor de standaardkernel van Red Hat Enterprise Linux. De kernel is alleen beschikbaar voor de architecturen x86_64 en ARM64 (aarch64). De brontcode van de kernel, inclusief de opsplitsing in afzonderlijke patches, is gepubliceerd in de openbare Git-repository van Oracle.
Het Unbreakable Enterprise Kernel 8-pakket is gebaseerd op de Linux-kernel 6.12 (de UEK R7-release was gebaseerd op de kernel 5.4, en in de bèta-versie van RHEL 10 werd kernel 6.11 aangeboden), die is aangevuld met nieuwe mogelijkheden, optimalisaties en bugfixes, en is getest op compatibiliteit met de meeste applicaties die draaien op RHEL. Het is geoptimaliseerd voor gebruik met industrieel software en hardware van Oracle. Installatie- en src-pakketten van de UEK R8-kernel zijn voorbereid voor Oracle Linux 9.5 (er zijn geen belemmeringen voor het gebruik van deze kernel in vergelijkbare versies van RHEL, CentOS, Alma Linux en Rocky Linux).
Belangrijkste vernieuwingen van Unbreakable Enterprise Kernel 8:
- De splitsing van kerncomponenten in afzonderlijke pakketten is gewijzigd. Kernelmodules zijn gescheiden van de basiskernelafbeelding en zijn ondergebracht in verzamelingen die in afzonderlijke pakketten worden geleverd: kernel-uek-modules-core (de basis), kernel-uek-modules (voor servers), kernel-uek-modules-desktop, kernel-uek-modules-extra-netfilter, kernel-uek-modules-usb en kernel-uek-modules-wireless. Bijbehorende hulpprogramma's zijn uit het basispakket kernel-uek-core gehaald en in een afzonderlijk pakket kernel-uek-tools geplaatst. Configuratiebestanden met een lijst van modules die niet mogen worden geladen, zijn herschreven van 'blacklist' naar 'denylist' in het kader van een initiatief voor inclusieve terminologie.
- Voor ARM Ampere-systemen die in Oracle Cloud worden gebruikt, is een aparte kernelversie kernel-uek64k gevormd, waarbij de basisgrootte van geheug.Pages is vergroot van 4 KB naar 64 KB.
- Ondersteuning voor de door Intel SGX2 (Software Guard Extensions) hardware geïmplementeerde EDMM (Enclave Dynamic Memory Management) mechanismen is toegevoegd, waarmee toegang tot afzonderlijke geheug.Pages van een enclave kan worden beheerd en pagina's dynamisch aan een enclave kunnen worden toegevoegd/verwijderd.
- In de Intel QAT-driver voor apparaten die Intel Quick Assist Technology (QAT) ondersteunen, is ondersteuning voor de 4e generatie Intel Xeon-processoren toegevoegd.
- Een systeem is toegevoegd voor het detecteren van split-locks die ontstaan bij toegang tot niet-uitgelijnde gegevens in het geheugen, doordat tijdens de uitvoering van een atomische instructie de gegevens twee cachelijnen van de CPU overschrijden. Dergelijke blokkades leiden tot een aanzienlijke daling van de prestaties (1000 cycli langzamer dan een atomische bewerking met gegevens die in één cachelijn vallen).
- Een nieuwe methode is geïmplementeerd ter bescherming tegen de Retbleed-kwetsbaarheid in Intel en AMD CPU's, die gebruikmaakt van call depth tracking en die niet zozeer de prestaties verlangsamt als de eerder aanwezige bescherming tegen Retbleed.
- Op x86-systemen worden secundaire CPU-kernen gelijktijdig geactiveerd, wat de opstarttijd van de kernel op systemen met een groot aantal kernen verkort.
- De opdrachtregelparameter voor de kernel 'ia32_emulation' is toegevoegd, waarmee tijdens het opstarten ondersteuning voor 32-bits emulatie kan worden in- of uitgeschakeld in kernen die zijn gebouwd voor de x86-64-architectuur.
- Bij standaard is de EEVDF (Earliest Eligible Virtual Deadline First) taakplanner in plaats van CFS (Completely Fair Scheduler) ingeschakeld. Bij de keuze van het volgende proces voor uitvoering neemt de nieuwe planner processen in aanmerking die onvoldoende CPU-middelen hebben ontvangen of onterecht veel CPU-tijd hebben gekregen. In het eerste geval wordt de controle geforceerd overgedragen aan het proces, terwijl dit in het tweede geval wordt uitgesteld. De oude CFS-planner gebruikte heuristieken en fijn-afstemming om processen te identificeren die speciale aandacht vereisten, terwijl de nieuwe planner deze explicieter bijhoudt en geen fijne afstemming vereist. EEVDF zal helpen de vertragingen bij het uitvoeren van taken te verminderen waarmee CFS planningsproblemen ondervond.
- De levering van het dynamische debug-systeem DTrace 2.0 is voortgezet, dat is overgeschakeld naar het gebruik van de eBPF-kernelsubsystemen. DTrace 2.0 werkt bovenop eBPF, vergelijkbaar met bestaande traceertools in Linux die bovenop eBPF zijn gebouwd.
- In de KVM-hypervisor is het mogelijk om tot 4096 virtuele CPU's (VCPU) te gebruiken.
- Het gebruik van KTLS, de implementatie van het TLS-protocol op kernniveau, is voortgezet.
- De implementatie van de RDRAND pseudowillekeurige getallengenerator is bijgewerkt, waarbij het apparaat /dev/random is overgeschakeld op het gebruik van de hashfunctie BLAKE2s in plaats van SHA1 voor entropiemengoperaties. Deze wijziging heeft de veiligheid van de pseudowillekeurige getallengenerator verhoogd. Om het verkrijgen van willekeurige getallen via de systeemaanroep getrandom() te versnellen, is het vDSO (virtual dynamic shared object) mechanisme ingeschakeld, dat de systeemaanroepverwerker van de kernel naar de gebruikersruimte verplaatst om contextwisselingen te vermijden.
- Ondersteuning voor de BIG TCP-extensie is toegevoegd, waarmee de maximale TCP-pakketgrootte kan worden vergroot tot 4 GB om de prestaties van interne datacenter-netwerken van hoge snelheid te optimaliseren. Dit vergroten van de pakketgrootte bij een 16-bits veldgrootte in de header wordt bereikt door de implementatie van 'jumbo'-pakketten, waarvan de grootte in de IP-header op 0 wordt ingesteld, terwijl de werkelijke grootte wordt doorgegeven in een afzonderlijk 32-bits veld in een aparte bijgevoegde header.
- Voor netwerksockets is de optie SO_RESERVE_MEM geïmplementeerd, waarmee een bepaalde hoeveelheid geheugen voor de socket kan worden gereserveerd, die altijd beschikbaar zal blijven voor de socket en niet zal worden ingenomen. Het gebruik van deze optie maakt het mogelijk om de prestaties te verbeteren door het aantal geheugenallocatie- en teruggevenoperaties in de netwerkstack te verminderen, vooral in situaties van geheugengebrek in het systeem.
- De prestaties van de fq (Fair Queuing) pakketplanner zijn geoptimaliseerd, waardoor de doorvoersnelheid met 5% toeneemt bij zware belasting in de tcp_rr (TCP Request/Response) test en met 13% bij onbeperkte UDP-pakketstroom.
- De netwerkenstructuren van de kernel zijn opnieuw georganiseerd om de efficiëntie van de gegevenscache door de processor te verbeteren, wat de prestaties van de TCP-stack op systemen die een groot aantal gelijktijdige verzoeken bedienen verhoogt.
- Ondersteuning voor de ASMLib 3-bibliotheek is toegevoegd voor automatische opslagbeheer in de Oracle-database.
- Er is gewerkt aan het optimaliseren van de prestaties en het verhogen van de veiligheid van het asynchrone invoer/uitvoermechanisme io_uring. Er zijn op io_uring gebaseerde optimalisaties toegevoegd voor de bestandenystemen XFS en Ext4, die de mogelijkheid bieden voor parallelle directe schrijfbewerkingen naar bestanden in meerdere threads.
- Verbeterde ondersteuning voor het Btrfs-bestandssysteem. Voor apparaten die trim/discard ondersteunen, is de optie 'discard=async' standaard ingeschakeld, zodat deze bewerkingen in de achtergrond voor alle bestandssystemen kunnen worden uitgevoerd. Ondersteuning voor het verzenden en ontvangen van gecomprimeerde gegevens zonder conversies is toegevoegd. Ondersteuning voor het schrijven in blokken groter dan 64 KB is geïmplementeerd. Het bijhouden van quota is vereenvoudigd. Ondersteuning voor het koppelen van gekloonde apparaten is gerealiseerd. De controles voor schrijven in de NOCOW-modus zijn verbeterd (de doorvoersnelheid is met 9% toegenomen). De koppelopties 'ignoremetacsums' en 'ignoresuperflags' zijn toegevoegd om onjuiste checksums voor metadata en superblockvlaggen te negeren. Taken voor het verwijderen van apparaten, balanceren en herverdelen van blokken kunnen nu parallel worden uitgevoerd.
- In het XFS-bestandssysteem is het gebruik van blokgrootte die groter is dan de paginagrootte van het geheugen toegestaan. Grote tellers voor extents zijn toegevoegd voor zeer grote virtuele schijven. Een atomisch commit-modus voor bestandinhoud is geïntroduceerd. Een experimentele implementatie van controle (fsck) en herstel van het bestandssysteem in online-modus is voorgesteld.
- In NFS is standaard gebruik gemaakt van de READ_PLUS-operatie, zoals gedefinieerd in de NFS 4.2-specificatie, die wordt toegepast voor efficiënter lezen van gegevens uit bestanden die lege gebieden bevatten.
- Het geheugengeheugenbeheersysteem is overgestapt op het gebruik van de folios-structuur (folio's van geheugenspagina's). Folio's lijken op samengestelde geheugenspagina's, maar hebben een verbeterde semantiek en een duidelijkere organisatie van de werking.
- Voor geheugenmappingbewerkingen is de data-structuur 'maple tree' gebruikt, die wordt gepositioneerd als een efficiënter alternatief voor de 'red-black tree'-structuur. De maple tree is een variant van de B-tree, die indexering op basis van waarde-intervallen ondersteunt en is ontworpen voor efficiënt cachegebruik. moderne processoren.
- In mmap zijn vergrendelingen op het niveau van individuele VMA (Virtual Memory Area) geïmplementeerd, wat de prestaties van multi-threaded applicaties verhoogt.
- Een data-structuur ptdesc is toegevoegd, die het werken met paginatabellen optimaliseert door de structuren met metadata en gegevens voor paginageheugen te scheiden.
Bron: opennet.ru
