Liberazione di u kernel Linux 6.12 cù supportu in tempu reale

Dopu à dui mesi di sviluppu, Linus Torvalds hà publicatu u kernel. Linux 6.12. Frà i cambiamenti i più notevuli: a capacità di attivà a modalità Realtime, sched_ext per a creazione di scheduler di CPU via eBPF, output di codice QR in cundizioni d'emergenza, mecanismu TCP di memoria di u dispositivu, mecanismu di riservazione di risorse di u servitore SCHED_DEADLINE, miglioramentu di u scheduler di attività EEVDF, modulu IPE per l'impostazione di pulitiche d'integrità.

A nova versione include 14607 correzioni da 2167 sviluppatori, a dimensione di u patch hè 37 MB (i cambiamenti affettati 13087 file, 507913 linee di codice sò state aghjunte, 234083 linee sò state eliminate). L'ultima versione hà avutu 15130 correzioni da 2078 sviluppatori, u patch size era 85 MB (in u kernel 6.10 u patch era 41 MB in size). Circa u 45% di tutti i cambiamenti introdotti in 6.12 sò ligati à i driver di u dispositivu, circa 12% di i cambiamenti sò ligati à l'aghjurnamentu di u codice specificu à l'architetture hardware, u 13% sò ligati à a pila di rete, u 6% sò ligati à i sistemi di schedari, è u 3% sò ligati à i sottosistemi interni di u kernel.

Innuvazioni principali in u kernel 6.12:

  • Memoria è servizii di sistema
    • A capacità di custruisce u kernel cù l'opzione PREEMPT_RT senza patch supplementari per l'operazione in tempu reale hè avà dispunibule. L'ultima funzione mancante di u kernel chì impedia l'attivazione di a modalità PREEMPT_RT era u supportu per l'output atomicu senza bloccu via a funzione printk, chì hè ancu inclusa in u kernel. U supportu PREEMPT_RT hè dispunibule per l'architetture x86, x86_64, ARM64 è RISC-V. Finu à avà, l'implementazione di a modalità PREEMPT_RT era furnita in forma di patch esterni, chì alcune distribuzioni, cum'è RHEL, SUSE è Ubuntu, anu creatu edizioni Realtime separate di i so prudutti, in dumanda in settori cum'è i sistemi finanziarii, i dispositivi di trasfurmazione audio è video, l'aviazione, a medicina, a robotica, e telecomunicazioni è i sistemi industriali, induve hè necessariu assicurà un tempu di trasfurmazione di l'eventi prevedibile.
    • U mecanismu "sched_ext" (SCX) hè statu aghjuntu, chì permette l'usu di eBPF per creà scheduler di CPU chì coprenu praticamente tutti l'aspetti di a pianificazione di i compiti è di l'allocazione di e risorse di a CPU. Tali scheduler ponu esse caricati dinamicamente è eseguiti in u kernel. Linux в macchina virtuale eBPF. U mecanismu sched_ext simplifica a creazione di pianificatori specifichi per attività, permette a sperimentazione cù diverse tecniche è strategie di pianificazione, è permette a creazione rapida di prototipi funzionanti è a sustituzione improvisata di pianificatori in infrastrutture di produzione. Per esempiu, aduprendu sched_ext, pudete creà un pianificatore chì tene contu di e specificità di una applicazione specifica è cambia dinamicamente a so strategia di pianificazione secondu u statu di u sistema è altri fattori.
    • A cumpusizioni include a parte restante di i patches necessarii per u funziunamentu di u mecanismu di u servitore SCHED_DEADLINE, chì risolve u prublema di sottoutilizazione di risorse di CPU da i travaglii ordinali quandu u CPU hè monopolizatu da i travaglii d'alta priorità (in tempu reale). Per prevene a monopolizazione di CPU, u kernel hà utilizatu prima u mecanismu di throttling Realtime, chì hà pruvatu à riservà 5% per i travaglii di priorità bassa, lascendu u 95% di u tempu per i travaglii in tempu reale. Stu mekanismu lasciava assai per esse desideratu, postu chì i travaglii ordinali in parechje situazione ùn anu micca ricevutu abbastanza tempu di processore. U servitore SCHED_DEADLINE implementa un mecanismu di riservazione di risorse più efficace.
    • L'integrazione di u pianificatore di attività EEVDF (Earliest Eligible Virtual Deadline First) hè stata cumpletata, chì hà rimpiazzatu u pianificatore CFS (Completely Fair Scheduler), furnitu à partesi da u kernel 2.6.23. U novu pianificatore, quandu sceglite u prossimu prucessu per trasfirià l'esekzione, piglia in contu i prucessi chì ùn anu micca ricivutu abbastanza risorse di processore o chì anu ricivutu una quantità injustamente grande di tempu di processore. In u primu casu, u trasferimentu di cuntrollu à u prucessu hè furzatu, è in u sicondu, à u cuntrariu, hè posposta. U vechju pianificatore CFS hà utilizatu l'euristiche è a sintonizazione fine per identificà i prucessi chì avianu bisognu d'attenzione speciale, mentre chì u novu pianificatore li traccia più esplicitamente è ùn hà micca bisognu di fine-tuning. EEVDF hè previstu di riduce i ritardi in i travaglii per i quali CFS hà avutu prublemi di pianificazione.
    • In u gestore di emergenza di u kernel - DRM Panic, chì usa u subsistema DRM (Direct Rendering Manager) per vede un rapportu visuale in u stilu di a "schermu blu di a morte", a capacità di visualizà un logu è codice QR cù un rapportu kmsg nantu à a schermu quandu una cundizione d'emergenza hè stata aghjunta. Siccomu solu 2953 bytes in un codice QR, l'opzione DRM_PANIC_SCREEN_QR_CODE_URL hè furnita, in quale u rapportu kmsg hè cumpressu cù zlib è attaccatu cum'è un paràmetru à l'URL, chì permette circa 40 bytes per esse trasferitu à traversu u codice QR V7500. Quandu custruiscenu pacchetti cù u kernel, e distribuzioni ponu stabilisce un URL di basa per l'URL, chì li permetterà di navigà à una pagina per rapportà un prublema. Per selezziunà u furmatu di u codice QR, u paràmetru DRM_PANIC_SCREEN_QR_VERSION hè furnitu.
    • Aghjunghje supportu per l'ARM POE (Permission Overlay Extension), chì vi permette di stabilisce i diritti d'accessu à e zone di memoria. Utilizendu sta estensione, in sistemi cù processori ARM64, pò esse implementatu u mecanismu di Memory Protection Keys, chì hè utilizatu per limità l'accessu à e pagine di memoria senza cambià a tabella di pagina di memoria.
    • Per l'architetture Loongarch, ARM64, PowerPC è s390, l'implementazione di a chjama di u sistema getrandom () hè stata mossa, ottimizzata cù u mecanismu vDSO (ughjettu dinamicu virtuale spartutu), chì permette di trasfurmà u gestore di chjama di u sistema da u kernel à l'utilizatore. spaziu è evite i cambiamenti di cuntestu. L'ottimisazione permette di accelerà a generazione di numeri casuali finu à 15 volte.
    • A capacità d'utilizà timeouts assoluti, attivati ​​quandu un certu tempu hè righjuntu nantu à u clock di u sistema, hè stata aghjunta à io_uring sottosistema di input/output asincronu (previamente, solu timeouts relative puderia esse stabilitu, chì indicava a durata da u principiu di l'operazione. ).
    • Aggiunti schedarii per generà associazioni per a libreria libcpupower utilizendu u toolkit SWIG, chì permette di generà associazioni da codice C/C++ per diverse lingue di prugrammazione. Ligami permettenu di creà script in Python è altre lingue, è l'utilizanu per allargà a funziunalità di a libreria libcpupower, chì furnisce una API per a gestione cpufreq è i drivers da u spaziu di l'utilizatori.
    • L'utilità cpuidle mostra u valore di u statu inattivu "residenza", utilizatu per i sistemi in tempu reale è tenendu in contu u tempu minimu chì u processatore deve esse in u statu inattivu per ghjustificà i costi energetichi di a transizione in u fora di stu statu.
    • Aghjunta a capacità d'utilizà u cumpilatore Clang per custruisce a biblioteca C standard nolibc, chì hè inclusa in u codice surghjente di u kernel. Linux è furnisce un involucru intornu à e chjamate di sistema basiche. Quandu si custruisce nolibc in Clang, l'ottimisazione di u tempu di ligame (LTO) hè attivata.
    • Alcune interfacce cgroup1 sò state obsolete, cum'è a cuntabilità TCP, a versione di limitu soft XNUMX, è a gestione di l'esaurimentu di a memoria. U supportu per queste funziunalità ferma in pienu per avà, è l'avvisu hè fattu per studià u numeru di utilizatori chì cuntinueghjanu à aduprà sti funziunalità.
    • Aggiunta a capacità di cunfigurà un buffer di traccia di ring per salvà i dati accumulati dopu un reboot, chì vi permetterà di ùn perde micca l'infurmazioni di debugging accumulate in casu di un crash di kernel. I dati sò guardati in memoria. L'attivazione hè fatta attraversu u paràmetru di linea di cummanda di u kernel trace_instance, per esempiu, settendu "trace_instance = boot_map@0x285400000:12M" riservarà 12 MB di memoria à 0x285400000 per u buffer "boot_map", chì serà accessibile à traversu u file /sys. /tracing/instances/boot_map.
    • Cuntinuazione di a migrazione di i cambiamenti da a branca Rust-for-Linux, in relazione à l'usu di Rust cum'è seconda lingua per u sviluppu di driver è moduli di kernel (u supportu Rust ùn hè micca attivu per difettu è ùn include micca Rust trà e dipendenze di compilazione richieste di u kernel). Aghjunti i moduli 'list' è 'rbtree' per travaglià cù liste doppiamente ligate è arburi di ricerca rossi-neri. Ampliate e capacità di i moduli 'init', 'sync', 'types' è 'error'. Hè stata aghjunta a capacità di utilizà u codice Rust quandu si custruisce un kernel cù prutezzione contr'à l'attacchi Spectre (opzioni MITIGATION_{RETHUNK,RETPOLINE,SLS}), aduprendu u sistema di debugging KASAN, i meccanismi di prutezzione kCFI (kernel Control Flow Integrity) è Shadow Call, è quandu si utilizanu plugin GCC supplementari. Hè statu aghjuntu un driver per u controller Ethernet Applied Micro QT2025 PHY, scrittu in Rust. Hè statu preparatu un situ web separatu cù documentazione: rust.docs.kernel.org.
    • L'utilità xdrgen hè stata aghjunta à u codice surghjente di u kernel per cunvertisce e specificazioni XDR (eXternal Data Representation) in funzioni di codificazione è decodificazione XDR scritte cù u stile C aduttatu da u kernel. Linux.
    • U kernel hè statu mudificatu per implementà un mecanismu di maschera di puntatore per riduce u nùmeru di chjamate lente à barrier_nospec () in a funzione copy_from_user () 64-bit, utilizata per copià e dati in u kernel da u spaziu di l'utilizatori. L'usu di maschera accelerà a prova "per_thread_ops", chì valuta u numeru di operazioni chì ponu esse realizati in un filu, da 2.6%.
    • Un novu driver USB hè statu aghjuntu chì vi permette di utilizà u protokollu 9pfs cum'è un trasportu per mandà è riceve dati da un dispositivu USB quandu si munta u sistema di schedari 9p nantu à USB (per esempiu, "mount -t 9p -o trans=usbg, aname=/path/to/fs /mnt/9"). Un esempiu di usu di u novu driver hè aduprendu invece di NFS per urganizà u boot di a partizione radicali quandu si sviluppanu i dispositi incorporati.
  • Sottosistema di discu, I / O è sistemi di fugliale
    • A capacità di travaglià cù i dispositi di almacenamento chì a dimensione di u bloccu hè più grande di a dimensione di a pagina di memoria in u sistema hè stata aghjunta à u subsistema VFS. In i sistemi di fugliale, sta funzione hè attualmente supportata solu in XFS.
    • U subsistema FUSE, chì vi permette di creà implementazioni di sistemi di schedari chì operanu in u spaziu di l'utilizatori, hà aghjustatu supportu per a mappatura di l'identificatori di l'utilizatori di i sistemi di schedari muntati, utilizati per currisponde à i schedarii di un utilizatore specificu nantu à una partizione straniera muntata cù un altru utilizatore nantu à l'attuale. sistema.
    • Una nova operazione fcntl, F_CREATED_QUERY, hè stata implementata, dendu à una applicazione a capacità di determinà se un schedariu apertu cù a bandiera O_CREAT hè statu creatu o s'ellu esiste digià prima.
    • Aggiunta l'abilità di utilizà ID unichi di punti di muntatura di 64 bit à a chjama di u sistema name_to_handle_at() per evità e cundizioni di razza quandu analizza / proc/mountinfo.
    • A dimensione di a struttura "file" in u kernel hè stata ridutta da 232 à 184 bytes, chì reduce u cunsumu di memoria in sistemi chì travaglianu attivamente cù i schedari.
    • A muntagna di sistemi di fugliale per muntà punti in a gerarchia /proc, cum'è /proc/PID/fd, era pruibita, chì creava prublemi di sicurezza potenziali.
    • U pseudo-FS NSFS (NameSpace FS), utilizatu per travaglià cù spazii di nomi, furnisce infurmazioni supplementari nantu à i spazii di nomi di punti di muntagna.
    • U sistema di schedari EROFS (Extendable Read-Only File System), cuncepitu per l'usu in partizioni di sola lettura, supporta avà u muntatu di sistemi di fugliale direttamente da l'imaghjini di discu salvate cum'è schedari.
    • Novi cumandamenti ioctl XFS_IOC_START_COMMIT è XFS_IOC_COMMIT_RANGE sò stati aghjuntu à XFS per scambià cuntenutu trà dui schedari.
    • NFS hà aghjustatu u supportu per u protocolu "LOCALIO", chì vi permette di determinà se u cliente è servitore NFS nant'à u listessu host per attivà l'ottimisazioni currispondenti.
    • In u sistema di schedari Btrfs, l'ottimisazioni di u rendiment sò state pruposte, u codice hè statu refactored, l'area di estensione di bloccu durante l'operazioni di lettura hè stata ridutta, u travagliu hà cuntinuatu à cunvertisce e pagine di memoria per utilizà folios di pagina, è a liberazione automatica di memoria hè stata. implementatu per a struttura btrfs_path.
    • In u sistema di schedari Ext4, i bugs ligati à l'allocazione di blocchi, a gestione di l'estensione, a cummissione rapida è a ghjurnale sò stati riparati.
  • Virtualizazione è Sicurezza
    • Aggiuntu u modulu LSM IPE (Integrity Policy Enforcement), sviluppatu da Microsoft per espansione u sistema di cuntrollu di accessu obligatoriu esistente. U modulu permette di definisce una pulitica di integrità generale per u sistema sanu, indicà quale operazioni sò permesse è cumu l'autenticità di i cumpunenti deve esse verificata. Per esempiu, cù l'IPE, pudete specificà chì i fugliali eseguibili sò permessi di eseguisce, tenendu in contu u so rispettu di a versione di riferimentu cù l'hash criptografici furniti da u sistema dm-verity.
    • In u stadiu di compilazione di u kernel, hè pussibule attivà separatamente i metudi dispunibuli di prutezzione contra diverse vulnerabilità di a classe Spectre in u CPU. Kconfig offre novi paràmetri: MITIGATE_MDS (prutezzione contr'à a vulnerabilità Microarchitectural Data Sampling), MITIGATE_TAA (prutezzione contr'à a vulnerabilità TSX Asynchronous Abort), MITIGATE_MMIO_STALE_DATA (prutezzione contr'à a vulnerabilità MMIO Stale Data), MITIGATE_L1TF (prutezzione contra a vulnerabilità MMIO Stale Data), MITIGATE_L1TF (prutezzione FIGATE_L1TF) (prutezzione contr'à Vulnerabilità Retbleed), MITIGATE_SPECTRE_V2, MITIGATE_SPECTRE_VXNUMX (prutezzione contr'à e vulnerabilità Spectre), MITIGATE_SRBDS (prutezzione contr'à a vulnerabilità Special Register Buffer Data Sampling), MITIGATE_SSB (prutezzione contr'à a vulnerabilità Speculative Store Bypass).
    • Aggiunta l'opzione di linea di cumanda proc_mem.force_override è un set di paràmetri di assemblea in Kconfig (PROC_MEM_FORCE_ALWAYS, PROC_MEM_FORCE_PTRACE è PROC_MEM_FORCE_NEVER) per impediscenu cambiamenti di memoria via /proc/pid/mem.
    • sottosistema LSM (Linux u modulu di sicurezza) hè statu cambiatu per aduprà chjamate statiche, ciò chì hà migliuratu a sicurezza è e prestazioni.
    • A capacità di utilizà core standard per l'architettura ARM64 in ambienti ospiti chì funzionanu nantu à Android-sistemi cù un ipervisore KVM mudificatu (KVM prutettu).
    • U modulu Landlock LSM, chì permette di limità l'interazzione di un gruppu di prucessi cù l'ambiente esternu, implementa u cuncettu di "scoping IPC" per limità selettivamente l'interazzione cù l'ambienti sandbox usendu sockets è signali Unix. Per esempiu, pudete pruibisce e cunnessione chì utilizanu sockets Unix da un ambiente sandbox à prucessi chì ùn anu micca isolatu appiicatu, ma permettenu cunnessione à prucessi in u stessu scopu.
    • In l'ipervisore KVM, una bandiera hè stata aghjunta à u CPUID per i sistemi invitati chì indicanu supportu per l'estensione AVX10.1.
  • Sottusistema di rete
    • U mecanismu TCP di Memoria di u Dispositivu hè statu aghjuntu, chì permette l'usu di sockets di rete per mandà direttamente u cuntenutu di a memoria di i dispositi periferichi nantu à a reta (modu di copia zero) è mette direttamente u cuntenutu di i pacchetti di rete in l'area di memoria di u dispositivu nantu à a reta. latu destinatariu. I dati trasmessi in pacchetti sò trasferiti da a carta di rete à a memoria di un dispositivu perifericu o da a memoria di u dispositivu à a carta di rete direttamente, sguassendu u CPU, è l'intestazione di i pacchetti finiscinu in buffers di kernel regulare.
    • E capacità di parechji driver Ethernet è wireless sò state allargate. Per esempiu, u driver Intel iwlwifi hà aghjustatu supportu per trasfurmà e operazioni RLC / SMPS à u latu di u firmware, u driver RealTek rtw89 hà aumentatu u rendiment è aghjunghjenu supportu per i chip RTL8852BT / 8852BE-VT (WiFi 6), u microchip Ethernet driver aghjustatu supportu per IEEE 802.3 bw (100BASE) specificazioni -T1) è IEEE 802.3bp, implementazioni Ethernet virtuale migliorate Microsoft vNIC è IBM veth. Aggiunti novi driver per Realtek RTL9054, RTL9068, RTL9072, RTL9075, RTL9068, RTL9071 è Microchip LAN8650/1 10BASE-T1S MAC-PHY Ethernet chips.
    • In MPTCP (MultiPath TCP), una estensione di u protocolu TCP per urganizà a consegna di pacchetti TCP simultaneamente longu parechje rotte attraversu diverse interfacce di rete, a dimensione di i pesi utilizati in routing hè aumentatu da 8 à 16 bits. A rilevazione implementata di u trafficu persu (blackhole) è a sospensjoni per qualchì tempu di tentativi di stabilisce cunnessione cù sistemi chì portanu à a perdita di trafficu.
    • Per IPv6, u supportu hè implementatu per a bandiera "p" in u PIO (Prefix Information Option), utilizatu in l'annunzii RA (IPv6 Router Advertisements) per selezziunà un mudellu di implementazione di u cliente via DHCPv6-PD (DHCPv6 Prefix Delegation, RFC9663) invece di assignà. indirizzi individuali basati nantu à prefissi chì utilizanu SLAAC (Stateless Address Autoconfiguration). IPv6 IOAM6 aghjunghje supportu per un novu modu di incapsulazione tunsrc chì permette un megliu rendimentu.
    • Prestazione mejorata per u processu di pacchetti di cuntrollu IPsec.
    • Rendimentu migliuratu di flussu di grande serie di regule nftables. nfnetlink_queue hà migliuratu u supportu per u protocolu SCTP.
    • L'API ethtool hà aghjustatu un supportu per attaccà parechje carte di rete à una interfaccia di rete.
  • Equipment
    • In u driver AMDGPU, u travagliu cuntinueghja à implementà u supportu per i GPU AMD RDNA4 ("GFX12"). Aggiunta a capacità di resettà e file di attività individuali senza resettate tutta a GPU.
    • U travagliu cuntinuau nantu à u driver Xe drm (Direct Rendering Manager) per GPU basati nantu à l'architettura Intel Xe, chì hè utilizatu in carte video di a famiglia Intel Arc è grafica integrata, cuminciendu cù i processori Tiger Lake. A nova versione include supportu per GPU basati nantu à e microarchitetture Battlemage è Lunar Lake. U supportu per i modificatori Xe2 CCS (Color Control Surface) hè statu introduttu per cuntrullà i paràmetri di GPU integrati è discreti.
    • U driver i915 implementa l'abilità di pruduce informazioni nantu à a velocità di u fan via l'interfaccia HWMON o sysfs (l'attributu "fan1_input"). U paràmetru "i915.modeset" hè statu deprecatu; u paràmetru "i915.modeset" deve esse usatu invece di "i0.modeset=915".
    • Aggiuntu supportu per i GPU A615, A306 è A621 à u driver msm DRM (Qualcomm Adreno GPU).
    • U driver Nouveau hà avutu i so strutturi interni ritravagliati è puliti.
    • U driver intel_pstate, chì cuntrolla i paràmetri di cunsumu di energia (P-state) in sistemi cù processori Intel, hà aghjustatu supportu per i sistemi ibridi cù CPU asimmetrici (caratteristiche diverse), è ancu supportu per a gestione di l'energia di i processori basati in Granite Rapids è Sierra Forest. microarchitetture. Aghjunghje supportu per u CPU Xeon Granite Rapids à u driver intel_idle. U driver intel_rapl furnisce u ricunniscenza di i prucessi di a famiglia AMD 1Ah è i processori Intel ArrowLake-U.
    • Inclusione cuntinuata di cambiamenti per sustene l'ARM SoC Snapdragon X Elite, chì usa u CPU Oryon 12-core di Qualcomm è a GPU Qualcomm Adreno. U chip hè destinatu à l'usu in laptops è PC, è hè davanti à i chips Apple M3 è Intel Core Ultra 155H in parechje teste di rendiment.
    • Aghjunghje supportu per schede ARM, SoC è dispusitivi: Broadcom bcm2712 (Raspberry Pi 5), Renesas R9A09G057 (RZ/V2H), Qualcomm Snapdragon 414 (MSM8929), Lenovo ThinkPad T14s Gen 6, Lenovo A6000/A6010pnic 7/A35/A30SP4 , Firefly Core-PX68-JD433, Lunzn Fastrhino R2S, Aspeed Riser, AGX Orin, Rockchip Qnap-TS920, Huashan Pi, Meta Catalina, BeagleY-AI, NanoPi R2002S Plus, ExynosAuto v5332, SOPHGO SG4, GQ815 (Qualcomh5, LGQ35) CoolPi CM11 GenBook, Anbernic RG93XXSP, GameForce Ace, IBM P6, Kontron i.MXXNUMX OSM-S, NanoPC-TXNUMX
    • Supportu aghjuntu per Anbernic RG28XX, On Tat Industrial Company KD50G21-40NT-A1, Innolux G070ACE-LH3, Melfas lmfbx101117480, Densitron DMT028VGHMCMI-1D, Microchip AC40T08A, schermi AOU B116XTNAU02.3. B116XAN06.1, AOU B116XAT04.1, BOE TV101WUM-LL2, BOE NV140WUM-N41, BOE NV133WUM-N63, BOE NV116WHM-A4D, BOE NE140WUM-N6G, NV116WUM-N2G, CMNEAB-CMNEAB, CMNEAB, CMNEAB-CMNEAB MNB116LS2-601, Starry er1.
    • U subsistema audio hà aghjustatu supportu per chips è codecs RME Digiface USB, AMD ACP 7.1, Mediatek MT6367, MT8365, Realtek RTL1320, C-Media CM9825. I vechji drivers di sonu per Intel ASoC sò stati dichjarati obsoleti, è hè cunsigliatu di utilizà i driver AVS invece. Parechji migliure sò stati fatti à u driver SoundWire.

Source: opennet.ru

Cumprate un hosting affidabile per i siti cù prutezzione DDoS, servitori VPS VDS 🔥 Cumprate un hosting di siti web affidabile cù prutezzione DDoS, servitori VPS VDS | ProHoster