Linux 6.14

Linux 6.14

Dopo due mesi di sviluppo, Linus Torvalds ha presentato rilascio del kernel Linux 6.14. Tra le modifiche più significative: driver ntsync con primitive di sincronizzazione Windows NT, configurazione del bilanciamento delle operazioni di lettura in Btrfs RAID1, supporto per reflink in XFS in modalità realtime, possibilità di input/output bufferizzato non memorizzabile, dmem cgroup per limitare la memoria GPU, impiego di io_uring in FUSE, delega degli attributi in NFS, supporto per la scrittura atomica nel Device mapper, accelerazione dei link simbolici, gestione della possibilità di esecuzione di script, supporto per chip Qualcomm Snapdragon 8 Elite, driver per NPU AMD.

La nuova versione include 12115 correzioni provenienti da 1984 sviluppatori, la dimensione della patch è di 39 MB (le modifiche hanno interessato 10170 file, aggiunti 531586 righe di codice, rimosse 235999 righe). Nella versione precedente c'erano 14172 correzioni da 2086 sviluppatori, la dimensione della patch era di 46 MB. Circa il 41% di tutte le modifiche presentate in 6.14 riguarda i driver di dispositivo, circa il 13% delle modifiche riguarda l'aggiornamento del codice specifico per architetture hardware, il 14% è relativo allo stack di rete, il 7% ai file system e il 4% ai sottosistemi interni del kernel.

Principali novità:

  • Sottosistema disco, I/O e file system
    • Nel file system Btrfs è stata introdotta supporto per nuovi metodi di bilanciamento delle operazioni di lettura tra i dischi inclusi nel array RAID1. Oltre alla precedente distribuzione del carico basata sugli identificatori dei processi (pid), la nuova versione propone tre nuove modalità di bilanciamento: «rotation» (distribuzione uniforme del carico tra tutti i dischi, modalità attiva per impostazione predefinita); «latency» (distribuzione considerando le latenze, utile in caso di guasti o funzionamento instabile dei dischi); devid (gestione manuale). Per modificare la modalità di bilanciamento. è stato aggiunto interfaccia /sys/fs/btrfs//read_policy. Tra le altre modifiche in Btrfs – implementazione ioctl FS_IOC_READ_VERITY_METADATA.
    • Aggiunto modalità di input/output bufferizzato non cacheabile, in cui i dati vengono rimossi dalla cache pagina immediatamente dopo il completamento delle operazioni di lettura o scrittura. La modifica può essere utile quando si utilizzano dispositivi di memorizzazione molto veloci, la cui memorizzazione in cache delle operazioni nella RAM risulta superflua. Per tali dispositivi, la nuova modalità evita un eccessivo consumo di memoria da parte della cache pagina senza ricorrere a API complicate di input/output diretto (Direct I/O).
    • In fsnotify, the mechanism for monitoring changes in the file system, aggiunto a new FS_PRE_ACCESS event is generated before accessing the content of a file. The event is handled synchronously, meaning the kernel sends the event and waits for a response. If a response is received, the operation proceeds; if there is a failure, the system call returns an error code to the user space. With FS_PRE_ACCESS, a user-space process can, for example, organize the filling of files as data becomes available in slow storage.
    • In the FUSE subsystem, which allows the creation of file system implementations in user space, supporto data exchange between the kernel and the user space handler has been added using the io_uring I/O mechanism. This change improves FUSE performance by reducing context switches between the kernel and user space.
    • The XFS file system has been enhanced possibilità l'uso del reverse-mapping (rmap) in modalità di funzionamento con ritardi prevedibili («realtime device»). Il reverse-mapping consente di determinare per quale file viene utilizzato il blocco specificato sul dispositivo di memorizzazione. Grazie a rmap, in XFS per la modalità realtime è stata implementata la supporto dell'operazione reflink, che permette di creare copie di file clonando i metadati del file e creando un collegamento ai dati già esistenti senza necessità di una copia effettiva.
    • In VFS implementato la memorizzazione nella cache delle dimensioni dei collegamenti simbolici, che ha consentito di accelerare del 1,5% l'esecuzione dell'operazione readlink (nel test con /initrd.img in ext4). La memorizzazione nella cache è attivata nei file system ext4 e tmpfs.
    • Nell'implementazione di NFSv4.2 è stata aggiunta la supporto del delegato dei attributi dei file, che consente di gestire attributi come il tempo di modifica (mtime) lato client NFS, senza necessità di trasferire le modifiche al server. In NFS è stata inoltre migliorata la supporto del protocollo «LOCALIO», che consente di determinare se il client e il server NFS si trovano sullo stesso host, attivando ottimizzazioni appropriate, come l'utilizzo da parte del client di input/output diretto (Direct I/O).
    • Migliorata le prestazioni delle operazioni di lettura nei file system NETFS, CIFS e AFS (Andrew File System).
    • In Squashfs incluso la modalità di avvio diretto dei blocchi nella cache delle pagine (SQUASHFS_FILE_DIRECT), che consente di evitare una cache read_page separata. Questa modifica ha permesso di ridurre la quantità di memoria utilizzata durante l'uso di Squashfs.
    • Nella chiamata di sistema statx() implementato il flag STATX_DIO_READ_ALIGN, per determinare l'allineamento necessario per le operazioni di lettura da un file.
    • Nel file system Bcachefs aggiornato e stabilizzato il formato delle strutture del disco. Qualsiasi ulteriore modifica del formato sarà considerata opzionale e sarà implementata sotto forma di aggiunte facoltative. È stata notevolmente aumentata la velocità di verifica dell'integrità del FS. Inoltre, in Bcachefs sono stati migliorati i funzionamenti in modalità sola lettura; risolti problemi che portavano a un accesso alla memoria dopo la sua liberazione (use after free); risolti problemi con i puntatori reflink in fsck; corretta la gestione del riavvio delle transazioni.
    • Restituito il modulo md-linear, progettato per combinare dispositivi a blocchi. Questo modulo era stato precedentemente dichiarato obsoleto ed eliminato dal kernel 6.8, ma si è rivelato essere richiesto e quindi ora è stato ripristinato.
    • I file system F2FS e SQUASHFS sono stati aggiornati per utilizzare folio di memoria (page folios).
    • Nel driver null_blk è stato implementato l'attributo «rotational», impostabile tramite configfs, che consente di simulare il funzionamento con dispositivi basati su dischi rotazionali per semplificare il test delle funzionalità del kernel.
    • Nel sistema Device mapper e nei moduli dm-mirror, dm-io, dm-table, dm-linear, dm-stripe e dm-raid1 è stata realizzata supporto alla scrittura atomica.
  • Memoria e servizi di sistema
    • Completato integrazione nel kernel del driver ntsync, che implementa il dispositivo simbolico /dev/ntsync e un insieme di primitivi per la sincronizzazione utilizzati nel kernel di Windows NT. L'implementazione di tali primitivi a livello di kernel consente di migliorare significativamente le prestazioni dei giochi Windows eseguiti tramite Wine. L'aumento delle prestazioni è dovuto all'eliminazione dei sovraccarichi associati all'uso di RPC nello spazio utente. La creazione di un driver separato per il kernel Linux è giustificata dalle difficoltà di una corretta implementazione dell'API di sincronizzazione NT sopra i primitivi esistenti nel kernel.
    • È stato aggiunto un nuovo controllore cgroup DMEM per la gestione separata delle aree di memoria dei dispositivi, come le GPU. DMEM consente di creare gruppi di cgroup separati per diverse operazioni che utilizzano la GPU, affinché possano funzionare senza influenzarsi a vicenda. Questa nuova funzionalità risolve il problema della terminazione forzata delle operazioni con la GPU quando la memoria disponibile è esaurita, grazie alla gestione separata della memoria riflessa della GPU e della memoria utilizzata dai driver CPU in cgroup distinti.
    • Sono state apportate ottimizzazioni per scalare l'operazione di svuotamento (flush) della cache TLB (Translation Lookaside Buffer), utilizzata per accelerare la conversione degli indirizzi virtuali in indirizzi fisici. Le ottimizzazioni aggiunte consistono nell'aggiornamento rinviato di alcune strutture dati durante il cambio di contesto, il che consente di migliorare le prestazioni in alcuni test.
    • Migliorata le prestazioni del meccanismo MGLRU (Multi-Generational LRU), utilizzato per determinare quali pagine di memoria sono in uso e quali possono essere espulse nella partizione di swap.
    • Continuato il trasferimento delle modifiche dal ramo Rust-for-Linux, relativo all'uso del linguaggio Rust come secondo linguaggio per lo sviluppo di driver e moduli del kernel (il supporto Rust non è attivo per impostazione predefinita e non porta a includere Rust tra le dipendenze di compilazione obbligatorie per il kernel). È fornita la possibilità di utilizzare nel codice del kernel il macro "derive(CoercePointee)", permettendo l'uso di puntatori intelligenti con oggetti trait. Nel kernel sono inclusi sono inclusi wrapper Rust per PCI, piattaforme, Open Firmware, dispositivi a carattere e alcune funzioni di input/output. Greg Kroah-Hartman, responsabile del supporto della versione stabile del kernel Linux, ha descritto lo stato attuale come "quasi pronto per scrivere un driver reale in Rust."
    • Negli scenari di compilazione designato nuovo codice per generare versioni di simboli di debug per moduli caricabili, che ora utilizza informazioni dalle registrazioni di debug in formato DWARF, invece di analizzare direttamente il codice sorgente. Questa modifica consente di applicare la versioning dei simboli di debug per i moduli scritti in Rust. La vecchia implementazione è mantenuta nel kernel, e la scelta del generatore è effettuata a livello di opzioni di compilazione.
    • Per l'architettura PowerPC è stata realizzata supporto della modalità di preemption pigra (PREEMPT_LAZY, lazy preemption), che corrisponde alla modalità di preemption totale («full preemption») per i task real-time (RR/FIFO/DEADLINE), ma ritarda la preemption dei task normali (SCHED_NORMAL) fino al limite del tick.
    • Nella sottosistema di profilazione delle prestazioni perf aggiunta supporto dei contatori di consumo energetico per i processori AMD. Aggiunto possibilità di operare su sistemi con fino a 2048 core CPU.
    • Fornito possibilità di utilizzare il parametro sysctl pid_max con gli spazi dei nomi degli identificatori di processo (ID namespace). Il parametro pid_max è concepito per limitare il valore massimo degli identificatori di processo (PID) e ora può essere utilizzato per limitare il numero massimo possibile di processi avviati nello spazio dei nomi specificato. La gestione del parametro avviene gerarchicamente, quindi le restrizioni negli spazi esterni si applicano agli spazi interni.
    • Quando viene utilizzato per avviare un processo il sistema di chiamata execveat nella filesystem /proc ora verrà visualizzato il nome del file eseguito, non il numero del descrittore di file.
    • Nel codice sorgente del kernel (nella directory samples) è stata aggiunta un'utility mountinfo, che dimostra l'uso delle chiamate di sistema statmount() e listmount().
    • Nel sottosistema BPF sono offerti nuove funzioni bpf_local_irq_save() e bpf_local_irq_restore() per disabilitare temporaneamente le interruzioni sulla CPU locale. Queste funzioni possono essere utilizzate per implementare strutture la cui gestione non è interrotta dalle interruzioni.
    • Nella chiamata di sistema madvise() quando si utilizzano i flag MADV_DONTNEED e MADV_FREE assicurato il rilascio delle tabelle delle pagine di memoria associate al range di indirizzi liberato, poiché in alcune situazioni le pagine di memoria vuote possono occupare una quantità significativa di memoria.
    • Per l'architettura OpenRISC è stata implementata la gestione delle sequenze riavviabili (rseq, restartable sequences), destinata all'esecuzione atomica rapida delle operazioni, che in caso di interruzione da parte di un altro thread vengono azzerate e si tenta nuovamente l'esecuzione.
    • È stata effettuata una riorganizzazione del codice con l'implementazione degli algoritmi CRC32 e CRC-T10DIF, che non si sovrappone più al sottosistema crypto e viene chiamato direttamente dall'interfaccia della libreria. Questa modifica ha semplificato il codice e migliorato la sua efficienza.
    • Nel sistema di input/output asincrono io_uring è stato aggiunto un'interfaccia per la trasmissione di metadati aggiuntivi sulla integrità durante le operazioni di lettura e scrittura.
  • Virtualizzazione e sicurezza
    • Nella chiamata di sistema execveat è stato aggiunto il flag AT_EXECVE_CHECK, che consente di eseguire un controllo dell'ammissibilità dell'esecuzione di un file senza avviarlo effettivamente, tenendo conto delle politiche di sicurezza, dei diritti di accesso e dei moduli LSM attivi. Per l'uso con il flag AT_EXECVE_CHECK, sono stati proposti i flag securebit SECBIT_EXEC_RESTRICT_FILE e SECBIT_EXEC_DENY_INTERACTIVE, che possono essere utilizzati per limitare l'esecuzione di file contenenti script in linguaggi di programmazione interpretati. Il flag SECBIT_EXEC_RESTRICT_FILE richiede ai linker e agli interpreti di utilizzare l'opzione AT_EXECVE_CHECK per verificare l'ammissibilità dell'esecuzione, mentre il flag SECBIT_EXEC_DENY_INTERACTIVE vieta l'elaborazione di comandi interattivi. L'idea principale della modifica è di applicare le politiche di sicurezza non solo ai tradizionali file eseguibili, ma anche ai file di testo contenenti script, che possono essere caricati tramite l'esecuzione dell'interprete (ossia, il divieto di esecuzione può essere realizzato non solo con l'avvio di './script.sh' ma anche con l'esecuzione in forma 'sh script.sh').
    • Sui sistemi x86 è supportato il conteggio temporale protetto per i sistemi guest, che impedisce la modifica dell'orologio di sistema del guest dall'ambiente host. Questa possibilità è realizzata sulla base del meccanismo AMD SEV (Virtualizzazione Crittografata Sicura), utilizzato nei sistemi di virtualizzazione per proteggere le macchine virtuali da interferenze da parte del hypervisor o dell'amministratore del sistema host.
    • Nel sistema di controllo degli accessi obbligatorio SELinux aggiunta supporto xperm-regole, che consentono di vincolare le politiche SELinux a specifiche chiamate ioctl() o messaggi netlink.
    • Per la firma dei moduli del kernel con una firma digitale, l'algoritmo predefinito non è più SHA1 ma utilizzato SHA512.
    • Nei driver per sistemi guest VirtualBox è inclusa è supportata l'architettura ARM64.
    • Nel hypervisor KVM è proseguita funzionamento con l'uso del meccanismo Intel TDX (Trusted Domain Extensions) per la crittografia della memoria dei sistemi guest.
    • In virtio_blk aggiunta è supportata la modalità di recupero degli errori.
  • Sottosistema di rete
    • Nell'implementazione del protocollo RxRPC è stata introdotta c'è la possibilità di utilizzare pacchetti di grandi dimensioni UDP per aumentare la larghezza di banda.
    • Per TCP è stata aggiunta la supporto per l'algoritmo RACK-TLP per la rilevazione della perdita di pacchetti.
    • Aggiunto nuovo parametro sysctl tcp_tw_reuse_delay, attivo in relazione allo spazio dei nomi (network namespace) e che consente di determinare il ritardo prima che il sistema possa riutilizzare il numero della porta di rete dopo la chiusura di un socket TCP.
    • Aggiunto possibilità di scegliere un fornitore di tempo preciso (PTP) per la generazione di timestamp ai livelli PHY e MAC.
    • Per IPsec è stata realizzata supporto per il meccanismo di aggregazione e frammentazione dei pacchetti IP incapsulati – IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload).
    • Nella rete dei socket aggiunta supporto trasmissione delle informazioni sulla priorità (SO_PRIORITY) in forma di messaggi di controllo (cmsg). Per i socket di rete aggiunta l'opzione SO_RCVPRIORITY, che include nella funzione recvmsg() la trasmissione di informazioni sulla priorità del socket.
  • Attrezzature
    • Aggiunto motore amdxdna per gli acceleratori NPU (Neural Processing Unit) integrati nella CPU AMD basati sull'architettura XDNA, progettati per accelerare le operazioni legate all'apprendimento automatico. Gli NPU basati sull'architettura XDNA sono forniti nelle serie dei processori AMD Ryzen 7040 e 8040, negli acceleratori AMD Alveo V70 e nel SoC AMD Versal.
    • Nel driver i915 sono stati aggiunti Gli identificatori delle nuove GPU sono stati realizzati, è stato implementato un gestore di errori per l'inizializzazione HDMI e migliorata l'affidabilità del ripristino dei motori GPU su Haswell e sistemi più vecchi.
    • Continuato Lavori sul driver drm (Direct Rendering Manager) Xe per GPU basate sull'architettura Intel Xe, utilizzata nelle schede grafiche Intel della famiglia Arc e nella grafica integrata, a partire dai processori Tiger Lake.
    • Nel driver Nouveau è stata aggiunta la possibilità di trasmettere buffer con log GSP-RM tramite debugfs.
    • Nel driver AMDGPU è stato implementato il supporto per il meccanismo DRM panic, che visualizza un'imitazione della «schermata blu della morte» in caso di errori. Continuato il lavoro per il supporto della futura serie di schede grafiche Radeon RX 9000 basate sull'architettura RDNA4. Aggiornato il supporto per DCN 3.5, GG 9.5, IH 4.4, PSP 13.x, SMU 13.x, VCN 5.x, JPEG 5.x, GC 12.x, DC FAMS, RAS e ISP.
    • Nel driver DRM msm (GPU Qualcomm Adreno) è stato aggiunto il supporto per la piattaforma Qualcomm SM6150 (QCS615).
    • Nel driver DRM panfrost è stato aggiunto il supporto per SoC MediaTek MT8188 con GPU Mali-G57.
    • Nel driver DRM vc4 è stato aggiunto il supporto per SoC Broadcom BCM2712 (Raspberry Pi 5).
    • Nel driver vfio nvgrace-gpu aggiunta supporto chip NVIDIA Grace Blackwell 200.
    • Include incluso driver per controller Intel THC (Touch Host Controller), utilizzato per interagire con schermi touch e touchpad su alcuni laptop. Aggiunta la supporto per dispositivi Wacom con interfaccia PCI. Aggiunto supporto per i controller di gioco QH Electronics.
    • Aggiunto supporto dispositivi ARM, SoC e piattaforme: Qualcomm Snapdragon 8 Elite (SM8750), Qualcomm Snapdragon AR2 (SAR2130P), Qualcomm IQ6/IQ8, Snapdragon 425 (MSM8917), Samsung Exynos 9810, Blaize BLZP1600, Microchip SAMA7D65, Renesas R-Car V4H ES3.0, Renesas RZ/G3E. Aggiunta la supporto per SoC. SpacemiT K1 basato sull'architettura RISC-V.
    • Nella sottosistema audio ALSA per MIDI 2.0. espanso API rawmidi e sequencer. Nell'API per spostare operazioni di compressione sulla scheda audio è stata aggiunta la supporto per ASRC (Asynchronous Sample Rate Conversion).
    • Aggiunta la supporto per i sistemi audio dei dispositivi Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 e 18i20. Aggiunto supporto per le cuffie wireless SteelSeries Arctis 9.

Fonte: linux.org.ru

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