Rilasciato Linux Kernel 6.18, ecco le novità
Il kernel Linux 6.18 introduce un supporto architetturale ampliato, aggiornamenti BPF, nuove funzionalità per i file handle dei namespace e un'ampia abilitazione hardware su CPU, GPU e sensori.
Linus Torvalds ha appena annunciato il rilascio ufficiale del nuovo kernel Linux 6.18.
“Quindi devo ammettere che sarei stato più felice con un po' meno rumore da correzioni di bug in quest'ultima settimana di rilascio, ma anche se ci sono qualche correzione in più di quelle che speravo, non c'è stato nulla che mi abbia fatto pensare che avesse bisogno di più tempo per maturare. Quindi 6.18 è contrassegnato e distribuito.”
Caratteristiche principali in Linux 6.18
A livello generale, il kernel Linux 6.18 introduce una nuova opzione di crittografia basata su PSP per le connessioni TCP, un'allocazione e uno swapping dei slab più rapidi, significativi miglioramenti nella ricezione UDP, un target del device-mapper con cache persistente, namespace che possono essere gestiti tramite handle di file, supporto per ECN accurato in TCP e programmi BPF firmati, oltre a molti piccoli cambiamenti del core e dei driver.
Una delle principali novità è l'introduzione dei "fascicoli" nell'allocatore SLUB. In termini semplici, il kernel ora mantiene cache per CPU di piccoli oggetti di memoria, così la maggior parte delle allocazioni e delle liberazioni può essere gestita localmente senza dover sincronizzare tra le CPU. Questo riduce la contesa nei percorsi critici e accelera sia l'allocazione sia la liberazione, migliorando le prestazioni per i carichi di lavoro che dipendono pesantemente da RCU.
Le prestazioni dello swapping sono un altro ambito in miglioramento. Linux 6.18 introduce la prima fase del lavoro sulla "tabella di swap", che introduce una nuova astrazione utilizzata come backend per la cache di swap. L'obiettivo è rendere le operazioni di ricerca e gestione dello swap più efficienti, specialmente sotto pressione di memoria.
Alla luce di ciò, i benchmark riportati nelle note di merge mostrano guadagni di throughput e richieste al secondo del 5–20% per carichi di lavoro rappresentativi, insieme a un comportamento migliore sotto stress per le allocazioni di grandi pagine.
Sul lato dello storage, un nuovo target del device-mapper, dm-pcache, permette di utilizzare la memoria persistente — per esempio dispositivi basati su CXL o compatibili con DAX — come cache ad alta velocità davanti a dispositivi a blocchi più lenti. Questo offre ai progettisti di sistemi un modo a livello di kernel per trattare la memoria persistente come un livello intermedio tra DRAM e SSD o dischi, senza necessità di codice personalizzato nello spazio utente.
Allo stesso tempo, il server NFS guadagna un'opzione per disabilitare completamente la propria cache I/O. Potrebbe sembrare controintuitivo, ma per server grandi e molto caricati o per istanze cloud molto piccole, saltare la cache lato server può effettivamente migliorare la scalabilità e evitare il sovraccarico della memoria locale.
La gestione dei processi e degli spazi dei nomi riceve un notevole miglioramento in termini di usabilità. Il kernel supporta i pidfd, handle dei file descriptor per i processi, sin da Linux 5.1, e si sono dimostrati molto utili per una gestione robusta dei processi.
Il kernel Linux 6.18 estende la stessa idea ai namespace: lo spazio utente può ora codificare e decodificare gli identificatori dei namespace utilizzando le API esistenti name_to_handle_at() e open_by_handle_at(). Questo rende possibile riferirsi ai namespace in modo coerente durante l’intera durata del sistema, confrontarli in modo affidabile e passarli senza allocare risorse aggiuntive.
Il networking subisce diversi cambiamenti significativi con la nuova versione che aggiunge il supporto iniziale per l'Accurate Explicit Congestion Notification, che estende l'ECN classico permettendo un feedback più dettagliato su quante marcature di congestione sono state rilevate per RTT.
Sul lato UDP, il percorso di ricezione è stato rielaborato per ridurre la contesa e per utilizzare il locking consapevole di NUMA e layout di strutture dati migliori; i test citati nel changelog riportano circa il 50% di miglioramento nelle prestazioni UDP RX, con guadagni ancora maggiori in condizioni simili ad attacchi, dove un piccolo insieme di socket riceve tassi di pacchetti molto elevati.
Inoltre, la dimensione predefinita del buffer di ricezione del socket è stata aumentata a 4 MB e il lavoro precedente sulla condivisione diretta dei buffer interni (dibs) è stato integrato, migliorando ulteriormente la scalabilità per le reti ad alto volume.
La sicurezza e la crittografia dei trasporti sono rafforzate con il supporto per le connessioni TCP crittografate PSP. PSP, un protocollo sviluppato da Google, occupa una posizione intermedia tra IPsec e TLS: ha alcune somiglianze architetturali con entrambi, ma è progettato per un forte offload hardware, inclusi i modalità di tunneling, rendendolo interessante per le implementazioni in data center dove i motori di offload sono comuni.
Il sottosistema BPF acquisisce la capacità di caricare programmi BPF firmati criptograficamente. Per ora, il cambiamento principale riguarda l'infrastruttura: il kernel può verificare le firme dei programmi al momento del caricamento. Inoltre, il sottosistema di audit continua a evolversi verso un supporto robusto per più LSM, mentre il kernel Linux 6.18 migliora la gestione degli eventi quando più Linux Security Module sono abilitati contemporaneamente.
Sul fronte della virtualizzazione, questa release introduce un driver virtio SPI che permette agli hypervisor di esporre dispositivi SPI direttamente alle macchine virtuali tramite il meccanismo standard virtio. Su host x86, diventa disponibile SEV-SNP CipherText Hiding, che impedisce alle CPU non autorizzate ad accedere alla memoria privata di un guest di vedere anche solo il testo cifrato in quella memoria.
Sul lato KVM, ora può fornire shadow stack e tracciamento dei salti indiretti sull'hardware Intel e shadow stack su AMD, offrendo agli ospiti l'accesso alle moderne protezioni del flusso di controllo.
I filesystem e il livello dei blocchi mostrano un mix di lavoro sulle funzionalità e di pulizia. Anche il nuovo target dm-pcache rientra qui, offrendo caching persistente davanti ai dispositivi a blocchi. Ext4 continua a modernizzarsi, con supporto esteso agli ID riservati e una nuova interfaccia ioctl per recuperare e modificare i parametri del superblocco, mentre gli ultimi residui delle opzioni di configurazione separate di ext3 vengono rimossi.
OverlayFS ottiene il supporto per il piegamento delle maiuscole e i filesystem FUSE ora possono gestire direttamente copie a grandi intervalli. Separatamente, un lotto di opzioni XFS obsolete è disabilitato di default, le opzioni di montaggio obsolete vengono eliminate e l'online fsck è ora abilitato di default e non più considerato sperimentale. Il kernel Linux 6.18 rimuove completamente anche il filesystem Bcachefts, e alcuni filesystem adottano nuove implementazioni bitmap senza blocchi per ridurre la contesa sui metadati condivisi.
Infine, per quanto riguarda il supporto hardware, la release introduce driver nuovi o migliorati per un'ampia gamma di GPU (incluse le varianti Mali più recenti e blocchi grafici SoC aggiuntivi), bridge e pannelli per display, SoC embedded, schede di rete, controller e regolatori di alimentazione, sensori I/O industriali, controller di memoria, PHY USB e ripetitori, dispositivi audio e controller per input e aptici.
Per chi è impaziente di compilare da solo il kernel Linux 6.18, è ora disponibile per il download su kernel.org. Come al solito, gli utenti delle distribuzioni a rilascio continuo saranno i primi a ricevere il nuovo kernel, con l'aggiornamento previsto nei loro repository nelle settimane successive.
