Versione di u kernel Linux 5.16

Dopu dui mesi di sviluppu, Linus Torvalds hà presentatu a liberazione di u kernel Linux 5.16. Trà i cambiamenti più notevuli: u sistema futex_waitv chjamatu per migliurà a prestazione di i ghjochi di Windows in Wine, u seguimentu di l'errore in u FS via fanotify, u cuncettu di folios in u sistema di gestione di memoria, supportu per l'istruzzioni di u processore AMX, a capacità di riservà memoria per sockets di rete, supportu per a classificazione di pacchetti in u stadiu in netfilter "egress", aduprendu u sottosistema DAMON per sguillà in modu proattivu e spazii di memoria inutilizati, migliurà a gestione di sovraccarichi cù un grande volume di operazioni di scrittura, supportu per i discu duru multi-drive.

A nova versione include 15415 correzioni da 2105 sviluppatori, a dimensione di u patch hè 45 MB (i cambiamenti affettati 12023 file, 685198 linee di codice sò state aghjunte, 263867 linee sò state eliminate). Circa u 44% di tutti i cambiamenti introdotti in 5.16 sò ligati à i driver di u dispositivu, circa u 16% di i cambiamenti sò ligati à l'aghjurnamentu di u codice specificu à l'architetture hardware, u 16% sò ligati à a pila di rete, u 4% sò ligati à i sistemi di fugliali è u 4% sò ligati à i sottosistemi interni di u kernel.

Innuvazioni principali in u kernel 5.16:

  • Sottosistema di discu, I / O è sistemi di fugliale
    • Strumenti sò stati aghjuntu à u mecanismu di fanotify per monitorizà u statu di u sistema di fugliale è seguità l'occurrence di l'errori. L'infurmazione nantu à l'errori hè trasmessa utilizendu un novu tipu d'avvenimenti - FAN_FS_ERROR, chì pò esse interceptatu in i sistemi di monitoraghju chì funzionanu in u spaziu di l'utilizatori per informà prontamente l'amministratore o lancià i prucessi di ricuperazione. Quandu una seria d'errori accade in cascata, fanotify assicura chì u primu missaghju d'errore hè mandatu cù un contatore di prublemi generale per simplificà l'analisi sussegwenti di a causa di u fallimentu. U supportu di seguimentu di l'errore hè attualmente implementatu solu per u sistema di file Ext4.
    • A gestione megliu di a congestione di scrittura, chì si trova quandu u voluminu di l'operazioni di scrittura supera u throughput di l'unità è u sistema hè furzatu à bluccà e richieste di scrittura di un prucessu finu à chì e richieste chì sò digià state sottumesse sò cumplette. In a nova versione, u mekanismu di u kernel utilizatu per ottene infurmazioni nantu à l'occurrence di sovraccarichi è u bloccu di i travaglii hè statu riprogettatu cumplettamente, postu chì in l'antica implementazione ci sò stati prublemi cù l'accoppiamentu di l'elaborazione di sovraccarichi di scrittura cù u spustamentu di e pagine di memoria in u swap. sezione quandu ci hè memoria insufficiente in u sistema.
    • Btrfs implementa u supportu per a tecnulugia di zonificazione di u dispositivu (Zoned Namespace), utilizata in i discu duru o SSD NVMe per dividisce u spaziu di almacenamento in zoni, chì custituiscenu gruppi di blocchi o settori, in quale hè permessa solu l'aghjunzione sequenziale di dati, aghjurnà u gruppu sanu di blocchi. Inoltre, ottimisazioni minori sò state fatte à l'inode logging, chì anu aumentatu u throughput in a prova dbench da 3% è riduce a latenza da 11%. U mecanismu di logging di u repertoriu hè statu riprogettatu, in quale u numeru di operazioni di ricerca è di bloccu in l'arbulu hè stata ridutta per aumentà l'efficienza. L'inserzione di elementi in a struttura btree in u modu batch hè stata accelerata (u tempu per l'inserzione di elementi in massa hè stata ridutta da 4%, è eliminazione da 12%). Aghjunghje un supportu limitatu per l'usu di cumpressione quandu scrive pagine parziali, è ancu a capacità di defragmentà e sottopagine. I preparativi sò stati fatti per attivà u supportu per a seconda versione di u protokollu per u cumandamentu "mandà".
    • U sistema di fugliale XFS riduce u cunsumu di memoria utilizendu cache di slab separati per l'articuli usati spessu è riducendu alcune strutture di dati.
    • In u sistema di schedari Ext4, solu correzioni di bug è calculu più precisu di i paràmetri di inizializazione lazy di a tabella Inode sò nutati.
    • L'ottimisazioni sò state implementate à u livellu di u dispositivu di bloccu per aumentà significativamente l'efficienza di l'operazioni di ligame à i core CPU.
    • Aghjunghje un supportu iniziale per i discu duru cù parechje unità indipendenti (multi-attuatore), chì permettenu l'accessu simultaneamente à parechji settori in diverse zone di u platter magneticu.
    • Aggiuntu un novu cumandamentu ioctl CDROM_TIMED_MEDIA_CHANGE per detectà avvenimenti di cambiamentu di media in un discu otticu.
    • U sistema di schedari EROFS (Enhanced Read-Only File System) hà aghjustatu a capacità di travaglià nantu à parechji dispositi di almacenamento. Diversi dispositi ponu esse mappati à un unicu spaziu di indirizzu di bloccu 32-bit. U supportu per a compressione cù l'algoritmu LZMA hè statu ancu aghjuntu.
    • L'opzioni di muntatura sò state aghjunte à u sistema di fugliale F2FS per cuntrullà a frammentazione di u schedariu quandu si mette in almacenamiento (per esempiu, per debug ottimisazioni per travaglià cù l'almacenamiento fragmentatu).
    • CEPH permette operazioni asincrone di creazione è eliminazione di u repertoriu per difettu (per vultà à u vechju cumpurtamentu, utilizate a bandiera '-o wsync' quandu si monte). Mantenimentu aghjuntu di metriche chì traccianu l'operazioni di copia di l'uggetti esterni.
    • Un paràmetru di muntagna tcpnodelay hè statu aghjuntu à CIFS, chì stabilisce u modu tcp_sock_set_nodelay per u socket di a rete, chì disattiva l'aspittà di a fila per riempie a pila TCP. Aghjunghje supportu per i ligami DFS nidificati (Sistema di File Distribuitu) quandu si rimonta.
    • Aghjunghje supportu per cumpletà e dumande à un dispositivu di bloccu in modu batch. A prova di u cambiamentu hà dimustratu un aumentu di l'intensità di l'operazione di lettura aleatoria da i drive Optane da 6.1 à 6.6 milioni di IOPS in un core CPU unicu.
  • Memoria è servizii di sistema
    • Aggiuntu un novu sistema chjamatu futex_waitv, chì vi permette di monitorà u statu di parechji futexes à una volta utilizendu una sola chjama di u sistema. Questa funzione ricorda a funziunalità di WaitForMultipleObjects dispunibule in Windows, l'emulazione di quale via futex_waitv pò esse utile per migliurà a prestazione di i ghjochi di Windows in esecuzione sottu Wine o Proton. Inoltre, l'attesa simultanea di futexes pò ancu esse aduprata per ottimisà u rendiment di e custruzzioni native di ghjochi per Linux.
    • U cuncettu di folios di pagina hè statu implementatu, l'usu di quale in certi sottosistemi di kernel accelerà a gestione di memoria in carichi di travagliu tipici. Attualmente, u sottosistema di gestione di memoria principale in u kernel è l'implementazione di a cache di a pagina sò digià stati trasferiti à i folios, è i sistemi di schedari sò previsti per esse trasferiti in u futuru. In u futuru, hè ancu previstu di aghjunghje supportu per i folios multi-pagina à u kernel.

      I tomi s'assumiglia à e pagine composte, ma anu una semantica mejorata è una urganizazione più chjara di u travagliu. Per gestisce a memoria di u sistema, a RAM dispunibule hè divisa in pagine di memoria, a dimensione di quale varieghja da l'architettura, ma in i sistemi x86 hè misurata in kilobytes (tipicamenti 4096 bytes). I sistemi muderni venenu cù decine di gigabyte di RAM, chì rende a gestione di memoria più cumplessa per a necessità di processà un gran numaru di pagine di memoria. Per riduce u nùmeru di pagine, u kernel hà implementatu prima u cuncettu di pagine cumposti cù strutture chì coprenu più di una pagina fisica di memoria. Ma l'API per a manipulazione di e pagine di memoria unificate hà lasciatu assai per esse desideratu è hà purtatu à overhead supplementu.

    • Un gestore hè statu aghjuntu à u pianificatore di attività chì piglia in contu a cache clustering in u CPU. In certi processori, cum'è Kunpeng 920 (ARM) è Intel Jacobsville (x86), un certu nùmeru di nuclei di CPU, di solitu 4, ponu cumminà cache L3 o L2. Tenendu in contu tali topologies ponu migliurà significativamente l'efficienza di distribuzione di e attività in i core di CPU in u pianificatore di attività, postu chì u muvimentu di e attività in u stessu cluster CPU permette di aumentà u throughput di l'accessu à a memoria è riduce a cuntenuta di cache.
    • Aghjunghje supportu per l'istruzzioni AMX (Advanced Matrix Extensions) implementate in i prucessori Intel Xeon Scalable server, nome in codice Sapphire Rapids. AMX offre novi registri configurabili TMM "TILE" è struzzioni per a manipulazione di dati in questi registri, cum'è TMUL (Tile matrix MULtiply) per a multiplicazione di matrici.
    • Diversi funziunalità novi sò stati implementati basatu annantu à u subsistema DAMON (Data Access MONitor) aghjuntu in l'ultima versione, chì permette di monitorà l'accessu à e dati in RAM in relazione à u prucessu sceltu in u spaziu di l'utilizatori. Per esempiu, u sottosistema permette di analizà quali spazii di memoria accede à u prucessu durante tuttu u so funziunamentu, è quali spazii di memoria ùn anu micca reclamatu.
      • DAMON_RECLAIM per identificà è scacciate e zoni di memoria chì ùn anu micca accessu. U mecanismu pò esse usatu per svià e pagine di memoria in modu proattivu quandu a memoria libera hè vicinu à l'esaurimentu.
      • DAMOS (Data Access Monitoring-based Operation Schemes) per applicà operazioni madvise() specificate, cum'è liberazione di memoria libera supplementaria, per processà e zone di memoria per quale una certa frequenza di accessu à a memoria hè fissata. I paràmetri DAMOS sò cunfigurati via debugfs.
      • Capacità di monitorà u spaziu di l'indirizzu fisicu di a memoria (prima solu l'indirizzi virtuali puderanu esse monitorati).
    • L'implementazione di l'algoritmu di compressione zstd hè stata aghjurnata à a versione 1.4.10, chì hà migliuratu significativamente a prestazione di diversi sottosistemi di kernel chì utilizanu cumpressione (per esempiu, unpacking una maghjina di kernel hè stata accelerata da 35%, a prestazione di unpacking data compressa). in Btrfs è SquashFS hà aumentatu da 15%, è in ZRAM - da 30%). U kernel hà inizialmente utilizatu una implementazione separata di zstd, basatu annantu à a versione 1.3.1, chì hè stata liberata più di trè anni fà è ùn hà micca include assai ottimisazioni impurtanti. In più di passà à a versione attuale, u patch aghjuntu ancu simplificà a sincronizazione cù u ramu upstream zstd, chì vi permette di generà codice per l'inclusione in u kernel direttamente da u repositoriu zstd principale. In u futuru, u codice zstd in u kernel hè pianificatu per esse aghjurnatu cum'è novi versioni di a biblioteca zstd sò liberati.
    • Una grande parte di migliurà hè stata fatta à u sottusistema eBPF. Aggiunta l'abilità di chjamà funzioni di u modulu di kernel da i prugrammi BPF. A funzione bpf_trace_vprintk() hè stata implementata, à u cuntrariu di bpf_trace_printk(), chì vi permette di pruduce più di trè argumenti à una volta. Una nova struttura di almacenamiento di dati (mappa BPF) filtru di fioritura hè stata aghjunta, chì permette di utilizà a struttura di dati probabilistica di u stessu nome per determinà a presenza di un elementu in u settore. Un novu attributu BTF_KIND_TAG hè statu aghjuntu, chì pò esse usatu in i prugrammi BPF per ligà e tags à i paràmetri di funzione, per esempiu, per simplificà a deteczione d'errore in i prugrammi d'utilizatori. In libbpf, hè pussibule di creà e vostre sezioni .rodata.*/.data.*, u supportu per l'uprobe è u kprobe trace events hè statu implementatu, è una API hè stata aghjunta per copià tutti i tipi BTF da un ughjettu à l'altru. U supportu AF_XDP hè statu spustatu da libbpf à una libreria libxdp separata. Per l'architettura MIPS, un compilatore JIT hè statu implementatu per a macchina virtuale BPF.
    • Per l'architettura ARM64, u supportu per l'estensioni ARMv8.6 per u timer hè statu implementatu, cumpresi quelli chì permettenu a rapprisintazioni auto-sincronizzante di i registri di u sistema senza aduprà struzzioni ISB.
    • Per l'architettura PA-RISC, a capacità d'utilizà u mecanismu KFENCE per detectà errori in u travagliu cù a memoria hè stata implementata, è u supportu per u detector di cundizione di razza KCSAN hè statu aghjuntu.
    • Hè pussibule cunfigurà i diritti d'accessu à i tracefs à u livellu di l'utilizatori individuali è i gruppi; per esempiu, pudete avà permette l'accessu à e strumenti di traccia solu à i membri di un certu gruppu.
  • Virtualizazione è Sicurezza
    • I sottosistemi io_uring è device-mapper implementanu supportu per a generazione di l'avvenimenti di audit. io_uring furnisce a capacità di cuntrullà l'accessu attraversu i moduli LSM. Aggiunta a capacità di audità a chjama di u sistema openat2 ().
    • U codice di u kernel hè cumplettamente liberu di espressioni di casu cuntinui in switch (senza ritornu o rottura dopu ogni bloccu di casu). Quandu custruisce u kernel, serà avà pussibule aduprà u modu "-Wimplicit-fallthrough".
    • I cambiamenti inclusi per rinfurzà i cuntrolli di limiti quandu eseguisce memcpy ().
    • L'interfaccia I/O asincrona io_uring implementa a capacità di applicà e pulitiche di sicurezza definite da i moduli SELinux è Smack à l'operazioni I/O.
    • U subsistema IMA (Integrity Measurement Architecture), chì permette à un serviziu esternu di verificà u statu di i sottosistemi di u kernel per assicurà a so autenticità, implementa a capacità di applicà regule basate nantu à l'identificatore di gruppu (GID) à quale appartene u schedariu o à quale l'utilizatore. accede à u schedariu appartene.
    • Disabilitatu per difettu alcuni meccanismi avanzati per prutege i filamenti seccomp () da l'attacchi Spectre, chì eranu cunsiderati innecessarii è ùn anu micca migliurà significativamente a sicurità, ma anu impactatu negativamente u rendiment. L'usu di a prutezzione Retpoline hè stata rivista.
    • L'implementazione di u mecanismu cryptoloop hè stata eliminata, chì hè stata rimpiazzata in 2004 da dm-crypt è, se ne necessariu, sustene i stessi algoritmi.
    • Per automaticamente, l'accessu senza privilegiu à u sottosistema eBPF hè pruibitu. U cambiamentu hè statu fattu per prevene chì i prugrammi BPF sò usati per sguassate a prutezzione contra l'attacchi di i canali laterali. In casu di necessariu, l'amministratore pò restaurà a capacità per l'utilizatori senza privilegi di utilizà eBPF.
    • L'ipervisore ACRN, cuncepitu per i travaglii in tempu reale è l'utilizazione in sistemi di missione critica, hà aghjustatu supportu per a creazione / eliminazione di dispositivi virtuali è invià i dispositi MMIO.
    • U supportu per e definizioni di KPP (Key-agreement Protocol Primitives) hè statu aghjuntu à u mutore di criptu, simplificà a logica di sviluppà i drivers per i criptosistemi.
    • L'hypervisor Hyper-V supporta avà u modu di isolamentu di a macchina virtuale, chì implica a criptografia di u cuntenutu di memoria.
    • L'hypervisor KVM hà aghjustatu supportu per l'architettura RISC-V. A capacità di migrà e macchine virtuali chì funzionanu cù l'estensioni AMD SEV è SEV-ES in l'ambiente ospitante hè stata implementata. Aggiunta API per a migrazione in diretta di i sistemi invitati criptati cù AMD SEV (Secure Encrypted Virtualization).
    • Per l'architettura PowerPC, u modu STRICT_KERNEL_RWX hè attivatu per automaticamente, chì blucca l'usu di e pagine di memoria chì sò simultaneamente dispunibili per a scrittura è l'esekzione.
    • Nantu à i sistemi x32 86-bit, u supportu per a memoria hotplug hè stata interrotta, chì hè stata inoperativa per più di un annu.
    • A libreria liblockdep hè stata sguassata da u kernel è serà avà mantenuta separatamente da u kernel.
  • Sottusistema di rete
    • Per i sockets, una nova opzione SO_RESERVE_MEM hè stata implementata, cù quale pudete riservà una certa quantità di memoria per un socket, chì ferma sempre dispunibule per u socket è ùn serà micca eliminatu. Utilizà sta opzione permette di ottene un rendimentu aumentatu riducendu l'allocazione di memoria è l'operazioni di ricuperazione in a pila di a rete, soprattuttu quandu e cundizioni di memoria bassa sò in u sistema.
    • Aghjunghje un supportu per u protocolu Automatic Multicast Tunneling (RFC 7450), chì permette di furnisce u trafficu multicast da e rete chì supportanu Multicast à destinatari in rete senza Multicast. U protokollu travaglia per incapsulazione in pacchetti UDP.
    • Incapsulazione mejorata di dati IOAM (Operazioni in situ, amministrazione è mantenimentu) in pacchetti di transitu.
    • A capacità di cuntrullà i modi di cunsumu di energia di transceiver hè stata aghjunta à l'API ethtool netlink.
    • U subsistema netfilter implementa a capacità di classificà i pacchetti à u livellu di egressu, i.e. in u stadiu quandu u cunduttore riceve un pacchettu da a pila di a reta di u kernel. In nftables, u supportu per i filtri currispondenti apparsu in a versione 1.0.1. Netfilter hà aghjustatu a capacità di paragunà è cambià l'intestazione interna è e dati per UDP è TCP (intestazione interna / carica) chì venenu dopu à l'intestazione di trasportu.
    • Aggiunti novi paràmetri sysctl arp_evict_nocarrier è ndisc_evict_nocarrier, quandu stabilitu, a cache ARP è a tavola ndisc (scuperta vicina) seranu sbulicati in casu di fallimentu di cunnessione (NOCARRIER).
    • I modi di Low Latency, Low Loss è Scalable Throughput (L4S) sò stati aghjuntu à u mecanismu di gestione di fila di rete fq_codel (Controlled Delay).
  • Equipment
    • U driver amdgpu furnisce un supportu iniziale per a specificazione DP 2.0 (DisplayPort 2.0) è DisplayPort tunneling over USB4. Per l'APU Cyan Skillfish (equipatu cù GPU Navi 1x) u supportu per i controller di visualizazione hè statu aghjuntu. U supportu per l'APU Yellow Carp (processori mobili Ryzen 6000 "Rembrandt") hè statu allargatu.
    • U driver i915 stabilizza u supportu per i chips Intel Alderlake S è implementa u supportu per a tecnulugia Intel PXP (Protected Xe Path), chì vi permette di urganizà una sessione grafica protetta da hardware in sistemi cù chip Intel Xe.
    • U travagliu hè statu fattu in u driver nouveau per risolve i bug è migliurà u stile di codice.
    • Supportu aghjuntu per i CPU Vortex compatibili x86 (Vortex86MX). Linux hà travagliatu in processori simili prima, ma l'identificazione esplicita di i CPU specificati era necessariu per disattivà a prutezzione contra l'attacchi Spectre / Meltdown, chì ùn sò micca applicabili à i chips specificati.
    • Aggiuntu supportu iniziale per e piattaforme x86 per Surface Pro 8 è Surface Laptop Studio.
    • Aggiuntu driver per supportà i chips di sonu utilizati in AMD Yellow Carp, Van Gogh APU, aghjustatu ancu supportu per i sistemi di sonu è i codec Cirrus CS35L41, Maxim MAX98520/MAX98360A, Mediatek MT8195, Nuvoton NAU8821, NVIDIA Tegra210, NXP i.MX8ULP, Qualcomtekm Audio, Qualcomtekm Audio ALC5682I-VS, RT5682S, RT9120, Rockchip RV1126 è RK3568.
    • Hè aghjuntu u driver ishtp_eclite per accede à i controller integrati Intel PSE (Programmable Service Engine) chì utilizanu ISHTP (Protocolu di trasportu di u sensore integratu), cum'è a batteria, a temperatura è l'interfaccia d'infurmazioni relative à UCSI (USB Type-C Connector System Software).
    • Aggiuntu un driver per i controller di ghjocu Nintendo Switch chì supporta Switch Pro è Joy-Cons. Supportu aghjuntu per i tablette Wacom Intuos BT (CTL-4100WL/CTL-6100WL) è Apple 2021 Magic Keyboard. Supportu migliuratu per i controller Sony PlayStation DualSense. Aghjunghje supportu per i buttoni laterali di u mouse Xiaomi Mi.
    • Aggiuntu driver RT89 cù supportu per i chips wireless Realtek 802.11ax, è ancu i drivers per l'adattatori Ethernet Asix AX88796C-SPI è i switches Realtek RTL8365MB-VC.
    • Drivers per PCI è PASemi i1c sò stati aghjuntu per i chips Apple M2.
    • Supportu aghjuntu per ARM SoС, dispositivi è schede Raspberry Pi Compute Module 4, Fairphone 4, Snapdragon 690, LG G Watch R, Sony Xperia 10 III, Samsung Galaxy S4 Mini Value Edition, Xiaomi MSM8996 (Mi 5, Mi Note 2, Mi 5s). , Mi Mix, Mi 5s Plus è Xiaomi Mi 5), Sony Yoshino (Sony Xperia XZ1, è Sony Xperia XZ Premium), F(x)tec Pro1 QX1000, Microchip LAN966, CalAmp LMU5000, Exegin Q5xR5, sama7g5, Samsung ExynosAutov9, Rockchip RK3566, RK3399 ROCK Pi 4A+, RK3399 ROCK Pi 4B+, Firefly ROC-RK3328-PC, Firefly ROC-RK3399-PC-PLUS, ASUS Chromebook Tablet CT100, Pine64 Quartz64-A, Netgear GSX110, Global GSX7040, Netgear GSX32, GSX2 Renesas R8A779M * , Xilinx Kria, Radxa Zero, JetHub D1/H1, Netronix E70K02.

Source: opennet.ru

Add a comment