Oracle ha presentato il primo rilascio stabile dell'Unbreakable Enterprise Kernel 8 (UEK R8), una versione del kernel Linux sviluppata per l'uso nella distribuzione Oracle Linux come alternativa al pacchetto standard del kernel di Red Hat Enterprise Linux. Il kernel è disponibile solo per le architetture x86_64 e ARM64 (aarch64). Il codice sorgente del kernel, inclusa la suddivisione in singoli patch, è pubblicato nel repository Git pubblico di Oracle.
Il pacchetto Unbreakable Enterprise Kernel 8 si basa sul kernel Linux 6.12 (la versione UEK R7 si basava sul kernel 5.4, mentre nella beta di RHEL 10 è stato proposto il kernel 6.11), ed è arricchito con nuove funzionalità, ottimizzazioni e correzioni, oltre ad essere stato testato per la compatibilità con la maggior parte delle applicazioni che operano su RHEL ed è ottimizzato per lavorare con il software e l'hardware industriale di Oracle. I pacchetti di installazione e src del kernel UEK R8 sono preparati per Oracle Linux 9.5 (non ci sono ostacoli all'uso di questo kernel in versioni simili di RHEL, CentOS, Alma Linux e Rocky Linux).
Novità principali dell'Unbreakable Enterprise Kernel 8:
- È stata modificata la suddivisione dei componenti del kernel UEK in pacchetti separati. I moduli del kernel sono stati separati dall'immagine di base del kernel e sono stati trasferiti in collezioni fornite in pacchetti distinti: kernel-uek-modules-core (minimo essenziale), kernel-uek-modules (per server), kernel-uek-modules-desktop, kernel-uek-modules-extra-netfilter, kernel-uek-modules-usb e kernel-uek-modules-wireless. Gli strumenti collegati sono stati estratti dal pacchetto di base kernel-uek-core in un pacchetto separato kernel-uek-tools. I file di configurazione con l'elenco dei moduli vietati al caricamento sono stati rinominati da 'blacklist' a 'denylist' nell'ambito dell'iniziativa per l'uso di terminologia inclusiva.
- Per i sistemi ARM Ampere utilizzati in Oracle Cloud, è stata creata una build separata del kernel kernel-uek64k, in cui la dimensione base delle pagine di memoria è stata aumentata da 4 a 64 KB.
- È stata aggiunta la supporto fornita nella realizzazione hardware Intel SGX2 (Software Guard Extensions) del meccanismo EDMM (Enclave Dynamic Memory Management), che consente di gestire l'accesso a singole pagine di memoria dell'enclave e di aggiungere/rimuovere dinamicamente pagine di memoria per l'enclave.
- Nel driver Intel QAT con supporto per dispositivi Intel Quick Assist Technology (QAT) è stata aggiunta la supporto per la quarta generazione di processori Intel Xeon.
- È stato aggiunto un sistema di rilevamento dei blocchi "split-lock" che si verifica quando si accede a dati non allineati in memoria a causa del fatto che, durante l'esecuzione di un'istruzione atomica, i dati attraversano due linee di cache della CPU. Questi blocchi possono portare a un significativo calo delle prestazioni (fino a 1000 cicli più lenti rispetto a un'operazione atomica con dati che rientrano in una singola linea di cache).
- È stato implementato un nuovo metodo di protezione contro la vulnerabilità Retbleed nelle CPU Intel e AMD, utilizzando il tracciamento della profondità delle chiamate, che non rallenta le prestazioni come la protezione contro Retbleed precedentemente esistente.
- Sui sistemi x86 è abilitata l'attivazione simultanea dei core secondari della CPU, consentendo di ridurre i tempi di avvio del kernel sui sistemi con un numero elevato di core.
- È stato aggiunto il parametro della riga di comando del kernel "ia32_emulation", che consente di abilitare e disabilitare il supporto per l'emulazione a 32 bit nei kernel compilati per l'architettura x86-64 durante la fase di avvio.
- Di default, invece del CFS (Completely Fair Scheduler), è attivato lo scheduler EEVDF (Earliest Eligible Virtual Deadline First). Quando si sceglie il prossimo processo da eseguire, il nuovo scheduler considera i processi che non hanno ricevuto risorse CPU sufficienti o che ne hanno ricevute troppe ingiustamente. Nel primo caso, si forzerà il passaggio del controllo al processo, mentre nel secondo, si rimanderà. Il vecchio scheduler CFS utilizzava euristiche e calibrature per determinare i processi che richiedevano attenzione, mentre il nuovo scheduler li monitora in modo più esplicito e non richiede calibrazioni. L'EEVDF permetterà di ridurre i ritardi nell'esecuzione delle attività con cui il CFS ha avuto problemi di pianificazione.
- Continua la fornitura del sistema di debug dinamico DTrace 2.0, che è stato adattato per utilizzare il sottosistema del kernel eBPF. DTrace 2.0 opera su eBPF, analogamente a come fanno gli strumenti di tracciamento esistenti in Linux.
- Nel hypervisor KVM è possibile utilizzare fino a 4096 CPU virtuali (VCPU).
- Prosegue l'uso di KTLS, l'implementazione del protocollo TLS a livello di kernel.
- È stata aggiornata l'implementazione del generatore di numeri pseudo-casuali RDRAND, responsabile del funzionamento del dispositivo /dev/random, che è stato convertito per utilizzare la funzione di hash BLAKE2s al posto di SHA1 per le operazioni di mescolamento dell'entropia. Questa modifica ha migliorato la sicurezza del generatore di numeri pseudo-casuali. Per accelerare la generazione di numeri casuali tramite la chiamata di sistema getrandom(), è stato impiegato il meccanismo vDSO (virtual dynamic shared object), che sposta il gestore della chiamata di sistema dallo spazio del kernel a quello dell'utente per evitare cambi di contesto.
- È stata aggiunta la supporto per l'estensione BIG TCP, che consente di aumentare la dimensione massima del pacchetto TCP fino a 4 GB per ottimizzare il funzionamento di reti interne ad alta velocità nei data center. Tale aumento della dimensione del pacchetto con un campo di intestazione di 16 bit viene realizzato tramite l'implementazione di pacchetti "jumbo", la cui dimensione nell'intestazione IP è impostata a 0, mentre la dimensione effettiva è trasmessa in un campo separato di intestazione a 32 bit.
- Per i socket di rete è stata implementata l'opzione SO_RESERVE_MEM, che consente di riservare una certa quantità di memoria per il socket, garantendo che rimanga sempre disponibile e non venga sottratta. L'uso di questa opzione permette di aumentare le prestazioni riducendo nel stack di rete le operazioni di allocazione e rilascio della memoria, soprattutto in condizioni di carenza di memoria nel sistema.
- È stata ottimizzata la performance dello scheduler dei pacchetti fq (Fair Queuing), consentendo un aumento della capacità fino al 5% in situazioni di carico intenso nel test tcp_rr (TCP Request/Response) e del 13% con flussi UDP non limitati.
- È stata riorganizzata la struttura di rete del kernel per migliorare l'efficienza della cache dei dati da parte della CPU, il che ha portato a un incremento delle prestazioni dello stack TCP sui sistemi che gestiscono un elevato numero di richieste parallele.
- È stata aggiunta la compatibilità con la libreria ASMLib 3 per la gestione automatica dello storage nel database Oracle.
- È stata completata l'ottimizzazione delle prestazioni e della sicurezza del meccanismo di input/output asincrono io_uring. Sono state aggiunte ottimizzazioni basate su io_uring per i filesystem XFS ed Ext4, che permettono la scrittura diretta parallela su file attraverso più thread.
- Migliorato il supporto per il filesystem Btrfs. Per i dispositivi che supportano trim/discard, è attivata di default l'opzione di montaggio "discard=async", che consente di eseguire queste operazioni immediatamente per tutti i filesystem in modalità asincrona. È stata aggiunta la possibilità di inviare e ricevere dati compressi senza conversioni. Supporto per la scrittura di blocchi superiori a 64 KB. Semplificata la gestione delle quote. Implementato il supporto per il montaggio di dispositivi clonati. Migliorati i controlli di scrittura in modalità NOCOW (con un aumento della capacità del 9%). Aggiunte opzioni di montaggio "ignoremetacsums" e "ignoresuperflags" per ignorare i checksum errati dei metadati e i flag del superblock. Garantita l'esecuzione delle operazioni di rimozione dei dispositivi, bilanciamento e redistribuzione dei blocchi in modalità parallela.
- Nel file system XFS è consentito l'uso di una dimensione di blocco superiore alla dimensione della pagina di memoria. Sono stati aggiunti grandi contatori di estensioni per i dischi virtuali molto grandi. È stata introdotta la modalità di commit atomica per il contenuto dei file. È stata proposta un'implementazione sperimentale per il controllo (fsck) e il recupero del file system in modalità online.
- In NFS è abilitato per impostazione predefinita l'uso dell'operazione READ_PLUS, definita nella specifica NFS 4.2 e utilizzata per una lettura più efficiente dei dati da file contenenti spazi vuoti.
- Il sistema di gestione della memoria è stato convertito per utilizzare una struttura di dati chiamata folios. I folios sono simili alle pagine di memoria composte, ma presentano una semantica migliorata e un'organizzazione del lavoro più chiara.
- Per le operazioni di mappatura della memoria è stata impiegata una struttura dati denominata 'maple tree', che si propone come un'alternativa più efficiente alla struttura 'red-black tree'. Il maple tree è una variante dell'albero B, che supporta l indicizzazione per intervalli di valori ed è progettato per un'efficace utilizzo della cache. dei processori moderni.
- Nel mmap sono implementate le lock a livello di singole VMA (Aree di Memoria Virtuale), consentendo di aumentare le prestazioni delle applicazioni multithreading.
- È stata aggiunta una struttura dati ptdesc, ottimizzando l'uso delle tabelle di memoria tramite la separazione delle strutture di metadati e dei dati per le pagine di memoria.
Fonte: opennet.ru
