Linux 6.13 arriva con un nuovo modello di prelazione Lazy, supporto per la scrittura atomica e molto altro

Linux

Dopo due mesi di lavoro, Linus Torvalds ha annunciato il lancio die la nuova versione del Kernel Linux6.13, che porta con sé importanti avanzamenti e novità. Tra le principali novità che presenta spicca: un modello di prelazione lazy, che si posiziona tra la modalità volontaria e quella completa, l'inclusione di supporto per scritture atomiche su file system come XFS ed Ext4.

Altre modifiche includono il driver virtual-cpufreq, il file nuova API netlink net-shaper, e una modalità di montaggio tmpfs che ora fa distinzione tra maiuscole e minuscole, insieme a supporto per estensioni POSIX in SMB3, e un driver di ottimizzazione della cache di AMD.

Questa nuova versione ha avuto il contributo di 2086 sviluppatori che hanno apportato un totale di 14,172 correzioni, interessando 15,375 file e comportando l'aggiunta di 598,707 righe di codice, con l'eliminazione di 406,294 righe.

Principali novità in Linux 6.13

Kernel 6.13, uno dei cambiamenti più importanti è l’introduzione del meccanismo del “fine-graned timestamp”. che migliora la precisione nell'ottenere dati su modifiche o accessi ai file, ottenendo una precisione superiore al millisecondo senza influire negativamente sulle prestazioni.

Un'altra novità che presenta il Kernel Linux 6.13 è il ssupporto per scritture atomiche, che garantisce che i dati più grandi della dimensione di un settore vengano scritti atomicamente sui dispositivi che supportano questa funzionalità. Attualmente, questa funzionalità È disponibile in file system come XFS, Ext4 in modalità O_DIRECT, e nelle configurazioni RAID 0/1/10 con md.

Per quanto riguarda gli altri file system, Linux 6.13 segna la rimozione definitiva di ReiserFS, EROFS ora supporta le opzioni SEEK_HOLE e SEEK_DATA in lseek(), mentre F2FS ha aggiunto il supporto per gli alias dei dispositivisy XFS ha aggiunto il supporto per le quote sui dispositivi in ​​tempo reale e ha migliorato la gestione delle directory dei metadati. Inoltre, SMB3 ora supporta le estensioni POSIX necessarie per archiviare file speciali, come collegamenti simbolici e file di dispositivo.

Nei servizi di memoria e di sistema, il file nuovo modello di preferenza pigro (PREEMPT_LAZY). Questo modello consente di mantenere le capacità di prelazione viene completata per le attività in tempo reale, ritardando la prelazione delle attività normali fino al limite di tick. Inoltre, il modello semplifica la logica dell'utilità di pianificazione rimuovendo i driver da altre parti del kernel dal processo di pianificazione.

Per quanto riguarda le ottimizzazioni di costruzione, è stato integrato il supporto per le ottimizzazioni AutoFDO durante la compilazione con Clang, che utilizzano profili di esecuzione per ottimizzare il codice e migliorare le prestazioni, hanno dimostrato di ridurre la latenza del 10%. È stato inoltre aggiunto un nuovo flag alla chiamata di sistema madvise() per migliorare la gestione della memoria del processo. Il flag MADV_GUARD_INSTALL consente di sovrascrivere specifici indirizzi di guardia della pagina, prevenendo eccezioni di accesso (SIGSEGV) senza la necessità di allocare nuove aree di memoria virtuale.

Anche IO_uring ha ricevuto numerosi miglioramenti, inclusa la possibilità di ridimensionare i buffer, inviare messaggi in modo sincrono tra buffer circolari e clonare parzialmente i buffer. Inoltre, è stato implementato il polling I/O ibrido e l'API è stata estesa per registrare buffer ad anello e aree di memoria.

Come l' miglioramenti hardware, è stata aggiunta la capacità di rilevare "split-lock" sulle CPU AMD, un fenomeno che si verifica quando i dati non sono allineati correttamente in memoria e attraversano due linee di cache, il che può influire gravemente sulle prestazioni. Per mitigare questo problema, è stato integrato il driver AMD Cache Optimizer, che sfrutta la tecnologia AMD 3D V-Cache per migliorare le prestazioni dei singoli core della CPU, aumentando la dimensione della cache L3 disponibile o aumentando la frequenza.

Per le architetture MIPS, è stato aggiunto il supporto per i sistemi con più controller di interruzione. cluster, fornendo un gestore di interrupt separato per ciascun cluster di CPU. È stata inoltre implementata una nuova operazione ioctl, PIDFD_GET_INFO, che consente di ottenere informazioni su un processo utilizzando il suo identificatore PIDFD, che rimane costante anche se il PID associato cambia quando il processo termina.

En ARM, i progressi chiave includono il supporto per l'esecuzione di Linux su macchine virtuali protetto dall'architettura Arm Confidential Computing, nonché dal supporto per gli stack shadow dello spazio utente, migliorando la sicurezza. Implementa anche a nuovo meccanismo di conteggio referenziato per i file, ottenere una maggiore scalabilità.

El L'utilità di pianificazione ora supporta un meccanismo di esecuzione proxy, risolvendo il problema dell'inversione di priorità. Questo meccanismo impedisce alle attività a bassa priorità di trattenere le risorse necessarie alle attività ad alta priorità (in tempo reale), bloccandole. Inoltre, i contesti di programmazione ed esecuzione dei processi sono stati separati.

D'altra parte, mette in evidenza il migrazione delle modifiche relative all'uso di Rust nello sviluppo di driver e moduli del kernel. Sebbene Il supporto Rust non è abilitato per impostazione predefinita, sono stati aggiunti collegamenti e strutture dati per consentire la scrittura di driver in questo linguaggio, incluso il supporto per gli eventi di traccia e il driver Binder riscritto in Rust.

Il sottosistema BPF è migliorato con l'implementazione di uno stack separato per i programmi BPF, che riduce il rischio di overflow durante l'elaborazione di grandi catene di chiamate. È stata inoltre aggiunta la possibilità di inviare segnali ad altri processi e di utilizzare la memoria condivisa nelle mappe BPF, facilitando la comunicazione del carico tra i driver del task scheduler.

Inoltre, l' Il tracciamento delle eccezioni è stato migliorato per generare errori di pagina quando i tracepoint vengono attivati ​​nelle chiamate di sistema, consentendo la lettura dei parametri passati dallo spazio utente. È stato aggiunto anche il parametro Transparent_hugepage_shmem per controllare l'utilizzo di pagine di memoria di grandi dimensioni sui file system tmpfs e shmem.

Nelle reti, viene introdotto supporto per la sospensione della NAPI durante l'inattività, miglioramento del consumo energetico e una nuova API per i dispositivi di rete che facilita la configurazione avanzata dell'hardware di trasmissione (TX). Inoltre, io_uring ha ricevuto diverse ottimizzazioni che migliorano la gestione delle operazioni di input/output asincrone.

Finalmente è stato implementatosupporto in tempo reale per l'architettura Loongarch e nuove estensioni all'architettura RISC-V, che consentono il mascheramento dei puntatori nello spazio utente. Per migliorare la compressione dell'immagine del kernel, l'algoritmo predefinito è stato modificato in lz4, sostituendo lz4c.

Interessato a saperne di più, puoi consultare i dettagli nel seguente link


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.