Rilascio del kernel Linux 6.0

Dopo due mesi di sviluppo, Linus Torvalds ha presentato il rilascio del kernel Linux 6.0. Il notevole cambiamento del numero di versione è stato fatto per motivi estetici ed è un passo formale per alleviare il disagio causato dall'accumulo di un gran numero di release nella serie (Linus ha scherzato dicendo che il motivo del cambio di versione è che gli stanno finendo le dita delle mani e dei piedi per contare i numeri delle versioni). Tra le modifiche più evidenti: supporto alla scrittura buffered asincrona in XFS, driver a blocchi ublk, ottimizzazione dello scheduler, meccanismo di verifica della correttezza del funzionamento del kernel, supporto per il cifrario a blocchi ARIA.

Le principali novità del kernel 6.0:

  • Sottosistema di disco, input/output e file system
    • Nel file system XFS è stato aggiunto il supporto per la scrittura buffered asincrona utilizzando il meccanismo io_uring. I test di performance condotti con lo strumento fio (1 thread, dimensione del blocco 4kB, 600 secondi, scrittura sequenziale) mostrano un aumento delle operazioni di input/output al secondo (IOPS) da 77k a 209k, la velocità di trasferimento dei dati – da 314MB/s a 854MB/s, e una diminuzione delle latenze da 9600ns a 120ns (80 volte).
    • Nel file system Btrfs è stata implementata la seconda versione del protocollo per il comando «send», che supporta metadati aggiuntivi, invio di dati in blocchi più grandi (oltre 64K) e trasmissione degli extents in forma compressa. È stata significativamente aumentata (fino a 3 volte) la performance delle operazioni di lettura diretta (direct read) grazie alla lettura simultanea di fino a 256 settori. Inoltre, sono stati ridotti i conflitti di lock e accelerata la verifica dei metadati grazie alla riduzione dei metadati riservati per gli elementi in sospeso.
    • Nel file system ext4 sono state aggiunte nuove operazioni ioctl EXT4_IOC_GETFSUUID e EXT4_IC_SETFSUUID per l'estrazione o la registrazione dell'identificatore UUID memorizzato nel superblock.
    • Nel file system F2FS è stata proposta una modalità a basso consumo di memoria che ottimizza il funzionamento su dispositivi con poca RAM e consente di ridurre il consumo di memoria a scapito delle prestazioni.
    • È stato aggiunto il supporto per l'autenticazione dei dispositivi NVMe.
    • In server NFSv4 è stato implementato con un limite sul numero di client attivi, impostato a 1024 client consentiti per ogni gigabyte di memoria RAM nel sistema.
    • Nell'implementazione del client CIFS è stata migliorata la performance in modalità di trasmissione multi-canale.
    • È stato aggiunto un nuovo flag FAN_MARK_IGNORE nel sottosistema di tracciamento degli eventi nel filesystem fanotify per ignorare eventi specifici.
    • Nel filesystem Overlayfs, durante il montaggio sopra un filesystem con mappatura degli identificatori utente, è stata garantita la corretta supporto delle liste di controllo degli accessi compatibili con POSIX.
    • È stato aggiunto il driver a blocchi ublk, che sposta la logica specifica al lato del processo in background nello spazio utente e utilizza il sottosistema io_uring.
  • Memoria e servizi di sistema
    • Nel sottosistema DAMON (Data Access MONitor) sono state aggiunte nuove funzionalità che consentono non solo di monitorare l'accesso dei processi alla memoria RAM dallo spazio utente, ma anche di influenzare la gestione della memoria. In particolare, è stato proposto un nuovo modulo chiamato «LRU_SORT», che garantisce la riaggregazione delle liste LRU (Least Recently Used) per aumentare la priorità di determinate pagine di memoria.
    • È stata realizzata la possibilità di creare nuove regioni di memoria, utilizzando le capacità del bus CXL (Compute Express Link), utilizzato per organizzare l'interazione ad alta velocità tra CPU e dispositivi di memoria. CXL consente di collegare nuove regioni di memoria fornite da dispositivi di memoria esterni e di utilizzarle come risorse aggiuntive dello spazio indirizzo fisico per espandere la memoria RAM di sistema (DDR) o la memoria persistente (PMEM).
    • Sono stati risolti i problemi di prestazioni nei sistemi basati su processori AMD Zen, causati da codice aggiunto 20 anni fa per aggirare un problema hardware in alcuni chipset (veniva aggiunta un'istruzione aggiuntiva WAIT, che rallentava il processore affinché il chipset avesse il tempo di passare in stato di inattività). Questa modifica portava a una diminuzione delle prestazioni in carichi in cui si alternano frequentemente stati di inattività (idle) e attività (busy). Ad esempio, dopo la rimozione del workaround, le medie del test tbench sono aumentate da 32191 MB/s a 33805 MB/s.
    • Dal pianificatore di attività è stato rimosso il codice con l'euristica, che garantiva la migrazione dei processi sui CPU meno caricati tenendo conto del guadagno previsto nel consumo energetico. Gli sviluppatori hanno concluso che l'euristica non portava i benefici desiderati ed era più semplice rimuoverla e spostare i processi senza ulteriori valutazioni ogni volta che un tale trasferimento poteva potenzialmente portare a una riduzione del consumo di energia (ad esempio, quando il CPU di destinazione è a un livello di minore consumo energetico). La disattivazione dell'euristica ha portato a una riduzione del consumo energetico durante l'esecuzione di attività intensive, ad esempio, nel test di decodifica video il consumo energetico è diminuito del 5,6%.
    • È stata condotta un'ottimizzazione della distribuzione delle attività sui core CPU nei sistemi di grandi dimensioni, che ha permesso di aumentare le prestazioni in alcune tipologie di carico.
    • Nell'interfaccia di input/output asincrono io_uring è stato introdotto un nuovo flag IORING_RECV_MULTISHOT, che consente di utilizzare la modalità «multi-shot» con la chiamata di sistema recv() per eseguire più operazioni di lettura da un singolo socket di rete. In io_uring è stata inoltre implementata la supporto per la trasmissione di rete senza buffering intermedio (zero-copy).
    • È stata implementata la possibilità di mettere in stato di sospensione i programmi BPF collegati a uprobe. In BPF è stato anche aggiunto un nuovo iteratore ksym per lavorare con le tabelle dei simboli del kernel.
    • È stata rimossa l'interfaccia obsoleta «efivars» in sysfs, destinata all'accesso alle variabili di avvio UEFI (per accedere ai dati EFI ora viene utilizzata universalmente la FS virtuale efivarfs).
    • Nel tool perf sono stati implementati nuovi report per analizzare i conflitti di locking e il tempo trascorso dalla CPU nell'esecuzione dei componenti del kernel.
    • È stata rimossa l'impostazione CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3, che consentiva di compilare il kernel in modalità di ottimizzazione «-O3». Si segnala che gli esperimenti con le modalità di ottimizzazione possono essere effettuati passando flag durante la compilazione («make KCFLAGS=-O3»), e per aggiungere l'impostazione in Kconfig è necessario garantire una profilazione delle prestazioni ripetibile, che dimostri che l'implementazione dei cicli in modalità «-O3» offre vantaggi rispetto al livello di ottimizzazione «-O2».
    • Aggiunto un'interfaccia debugfs per ottenere informazioni sul funzionamento dei singoli "memory shrinker" (gestori attivati in caso di mancanza di memoria che imballano le strutture dati del kernel per ridurre il consumo di memoria).
    • Per le architetture OpenRISC e LoongArch è stata implementata la supporto per il bus PCI.
    • Per l'architettura RISC-V è stato implementato l'estensione "Zicbom" per gestire dispositivi con DMA, non coerenti con la cache (non-cache-coherent).
  • Virtualizzazione e sicurezza
    • Aggiunto un meccanismo di verifica RV (Runtime Verification) per controllare la correttezza del funzionamento su sistemi ad alta affidabilità, che garantiscono l'assenza di guasti. Il controllo avviene in tempo reale tramite l'allegazione di gestori a punti di tracciamento, che confrontano il reale flusso di esecuzione con un modello deterministico predefinito, che definisce il comportamento atteso del sistema. La verifica con il modello in tempo reale è considerata un metodo più leggero e semplice da attuare nella pratica per confermare la correttezza dell'esecuzione su sistemi critici, integrando metodi classici di conferma dell'affidabilità. Tra i vantaggi della RV, si cita la possibilità di garantire una verifica rigorosa senza la necessità di implementare l'intero sistema in un linguaggio di modellazione e la flessibilità nella risposta a eventi imprevisti.
    • Integrati i componenti del kernel per la gestione degli enclave basati sulla tecnologia Intel SGX2 (Software Guard eXtensions), che consente alle applicazioni di eseguire codice in aree di memoria isolate e cifrate, cui l'accesso da parte del resto del sistema è limitato. La tecnologia Intel SGX2 è supportata nei chip Intel Ice Lake e Gemini Lake e si differenzia da Intel SGX1 per ulteriori istruzioni per la gestione dinamica della memoria degli enclave.
    • Per l'architettura x86 è stata realizzata la possibilità di trasmettere un seed per il generatore di numeri pseudocasuali attraverso le impostazioni del bootloader.
    • Nel modulo LSM SafeSetID è stata aggiunta la possibilità di gestire le modifiche effettuate tramite la chiamata setgroups(). SafeSetID consente ai servizi di sistema di gestire gli utenti in modo sicuro senza elevare i privilegi (CAP_SETUID) e senza ottenere le autorizzazioni dell'utente root.
    • Aggiunta la supporto per il cifrario a blocchi ARIA.
    • Nel modulo di gestione della sicurezza basato su BPF è stata implementata la possibilità di allegare gestori a singoli processi e gruppi di processi (cgroup).
    • È stato aggiunto un meccanismo con implementazione del watchdog per la determinazione di blocchi nei sistemi guest basato sul monitoraggio dell'attività della vCPU.
  • Sottosistema di rete
    • Nella sottosistema BPF sono stati aggiunti gestori per la generazione e verifica dei SYN cookies. È stata anche aggiunta una serie di funzioni (kfunc) per l'accesso e la modifica dello stato delle connessioni.
    • Nello stack wireless è stato aggiunto il supporto per il meccanismo MLO (Multi-Link Operation), definito nelle specifiche WiFi 7 e che consente ai dispositivi di ricevere e inviare dati contemporaneamente utilizzando bande di frequenza e canali diversi, ad esempio, per stabilire contemporaneamente più canali di comunicazione tra il punto di accesso e il dispositivo client.
    • È stata migliorata la performance dell'implementazione del protocollo TLS integrata nel kernel.
    • È stata aggiunta una opzione della riga di comando del kernel "hostname=", che consente di impostare il nome host nelle fasi iniziali di avvio, prima che vengano avviati i componenti dello spazio utente.
  • Apparecchiatura
    • Nel driver i915 (Intel) è stato fornito il supporto per le schede grafiche discrete Intel Arc (DG2/Alchemist) A750 e A770. È stata proposta una implementazione iniziale del supporto per GPU Intel Ponte Vecchio (Xe-HPC) e Meteor Lake. È proseguito il lavoro per il supporto della piattaforma Intel Raptor Lake.
    • Nel driver amdgpu è proseguito il lavoro per garantire il supporto delle piattaforme AMD RDNA3 (RX 7000) e CDNA (Instinct).
    • Nel driver Nouveau è stato ristrutturato il codice di supporto per i motori di visualizzazione delle GPU NVIDIA nv50.
    • È stato aggiunto un nuovo driver DRM logicvc per gli schermi LogiCVC.
    • Nel driver v3d (per GPU Broadcom Video Core) è stato implementato il supporto per le schede Raspberry Pi 4.
    • Nel driver msm è stato aggiunto il supporto per GPU Qualcomm Adreno 619.
    • Nel driver Panfrost è stato aggiunto il supporto per GPU ARM Mali Valhall.
    • È stato aggiunto il supporto iniziale per i processori Qualcomm Snapdragon 8cx Gen3, utilizzati nei laptop Lenovo ThinkPad X13s.
    • Sono stati aggiunti driver audio per le piattaforme AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake e Mediatek MT8186.
    • È stato aggiunto il supporto per gli acceleratori delle sistemi di machine learning Intel Habana Gaudi 2.
    • È stato aggiunto il supporto per ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

Contemporaneamente, il Fondo per il Software Libero dell'America Latina ha creato una versione completamente libera del kernel 6.0 — Linux-libre 6.0-gnu, ripulita da elementi di firmware e driver contenenti componenti non liberi o sezioni di codice il cui ambito di applicazione è limitato dal produttore. Nel nuovo rilascio è stata disattivata l'uso dei blob nel driver CS35L41 HD-audio e nel driver con interfaccia UCSI per microcontrollori STM32G0. È stata effettuata una pulizia dei file dts per i chip Qualcomm e MediaTek. È stata modificata la disattivazione dei blob nel driver MediaTek MT76. È stato aggiornato il codice di pulizia dei blob nei driver e nelle sottosistemi AMDGPU, Adreno, Tegra VIC, Netronome NFP e Habanalabs Gaudi2. È stata interrotta la pulizia del driver VXGE, rimosso dal kernel.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster