nocciolo
Dopo due mesi di sviluppo, Linus Torvalds ha annunciato il rilascio della nuova versione del kernel Linux 5.10 , una versione che ha lo status di ramo con un lungo periodo di supporto, i cui aggiornamenti saranno rilasciati per almeno due anni.
Tra le novità più significative di questa versione si segnalano il supporto per il meccanismo di protezione MemTag per i sistemi ARM64, l'opzione di montaggio "nosymfollow", importanti ottimizzazioni per Ext4, la correzione del bug XFS 2038, una nuova chiamata di sistema process_madvise, un supporto migliorato per AMD SEV tramite la crittografia dei registri della CPU e la possibilità di mettere in pausa i programmi BPF.
La nuova versione ha ricevuto 17470 correzioni da 2062 sviluppatori; dimensione della patch: 64 MB (le modifiche hanno interessato 15101 file, aggiunto 891932 righe di codice e rimosso 619716 righe). Circa il 42% di tutte le modifiche introdotte nella versione 5.10 riguarda i driver di dispositivo , circa il 16% l'aggiornamento del codice specifico dell'architettura hardware, il 13% lo stack di rete, il 3% i file system e il 3% i sottosistemi interni del kernel.
Principali novità in Linux 5.10
Tra le principali modifiche, notiamo che per ext4 è stata aggiunta la modalità fast_commit , che riduce significativamente i ritardi in molte operazioni sui file grazie al più rapido svuotamento dei metadati su disco durante l'esecuzione di una chiamata fsync(). In circostanze normali, l'esecuzione di fsync() sincronizza un set ridondante di metadati. In modalità fast_commit, vengono trasferiti al registro solo i metadati necessari per ripristinare il file system in caso di arresto anomalo, il che velocizza le chiamate fsync() e migliora le prestazioni delle operazioni che manipolano attivamente i metadati.
Mentre per Btrfs include importanti ottimizzazioni delle prestazioni relative alle operazioni fsync (). La riduzione della contesa del log mutex ha comportato un aumento del 4% delle prestazioni e una riduzione del 14% della latenza durante l'esecuzione del benchmark dbench con 32 client. L'eliminazione di ulteriori commit per i collegamenti e le modifiche ai nomi ha aumentato la larghezza di banda del 6% e ridotto la latenza del 30%. Limitare fsync ad aspettare solo in caso di riscrittura ha aumentato le prestazioni del 10-40%.
Inoltre, L'implementazione di Btrfs dell'I / O diretto (direct io) è stata spostata nel framework iomap.
XFS ha introdotto modifiche ai metadati degli inode per risolvere i problemi di overflow nel tipo di dati time_t a 32 bit nel 2038. Modifiche simili, che hanno spostato l'overflow del contatore del tempo all'anno 2468, sono state aggiunte al codice per il calcolo dei tempi di quota del disco. Il formato XFS V4 è stato dichiarato obsoleto; si consiglia agli utenti di aggiornare al formato V5, ma c'è ancora tempo a sufficienza per farlo, poiché il supporto per V4 continuerà fino al 2030. XFS ha inoltre ridimensionato la voce inode btree, consentendo un maggior numero di controlli di ridondanza e tempi di montaggio più rapidi.
Per il sottosistema FUSE implementato il supporto delle operazioni DAX per accedere direttamente al file system, bypassando la cache della pagina senza dispositivo di blocco a livello di applicazione che viene utilizzato per evitare che la doppia cache danneggi l'organizzazione dell'accesso congiunto a sistemi guest, directory e file. Virtiofs aggiunge anche il supporto per il montaggio separato di partizioni con diversi punti di montaggio sul sistema host.
Il file system F2FS introduce una nuova modalità di raccolta dei rifiuti ATGC (Age Threshold Garbage Collection) , un supporto migliorato per i dispositivi NVMe a zone e una decompressione più rapida dei dati compressi.
In F2FS ed Ext4, la gestione dei nomi file senza distinzione tra maiuscole e minuscole è stata riprogettata; si è deciso di unificare l'implementazione di tale funzionalità spostando il codice associato in una libreria comune.
Un'altra importante modifica riguarda l' interfaccia di I/O asincrona io_uring, che aggiunge la possibilità di creare anelli ristretti che possono essere condivisi in modo sicuro con un processo non attendibile. Questa funzionalità consente all'applicazione base di limitare selettivamente l'accesso ai soli descrittori di file individuali per l'utilizzo da parte di applicazioni di terze parti tramite io_uring. Inoltre, è stato aggiunto il flag PIDFD_NONBLOCK alla chiamata di sistema pidfd_open() per creare un descrittore di file non bloccante (analogo a O_NONBLOCK per pidfd).