Linux 6.12 tuuma versioon Reaalajas-ühe toetusega

Pärast kahte kuud arendust esitles Linus Torvalds Linuxi 6.12 tuuma versiooni. Kõige tähelepanuväärsemate muudatuste seas: Realtime-režiimi aktiveerimise võimalus, sched_ext CPU planeerijate loomiseks eBPF kaudu, QR-koodi genereerimine kriitiliste olukordade korral, seadme mälu TCP mehhanism, ressursside reservi mehhanism SCHED_DEADLINE serveris, EEVDF tööde planeerija täiustamine, ning IPE moodul poliitikate määramiseks, mis tagavad terviklikkuse.

Uude versiooni on lisatud 14607 parandust 2167 arendajalt, plaastri suurus on 37 MB (muudatused puudutasid 13087 faili, lisatud 507913 koodirida, eemaldatud 234083 rida). Eelmises väljaandes oli 15130 parandust 2078 arendajalt, plaastri suurus oli 85 MB (tuumas 6.10 oli plaastri suurus 41 MB). Ligikaudu 45% 6.12 väljaandes esitatud muudatustest on seotud seadme draiveritega, umbes 12% muudatustest puudutab arhitektuurispetsiifilise koodi uuendamist, 13% on seotud võrgu protokolliga, 6% failisüsteemide ja 3% tuuma sisemiste süsteemidega.

Peamised uuendused tuumas 6.12:

  • Mälu ja süsteemiteenused
    • On antud võimalus kokku panna tuuma PREEMPT_RT valikuga ilma täiendavate plaastriteta reaalajas režiimis töötamiseks. Viimane puuduv võimalus, mis takistas PREEMPT_RT režiimi aktiveerimist, oli mittesünkroonne aatomiline väljund printk-funktsiooni kaudu, mis on samuti tuuma koosseisu võetud. PREEMPT_RT tugi on saadaval x86, x86_64, ARM64 ja RISC-V arhitektuuride jaoks. Eelnevalt tarniti PREEMPT_RT režiimi rakendust välistes plaastrites, mille alusel teatud distributsioonid, nagu RHEL, SUSE ja Ubuntu, lõid oma toodete eraldi Realtime väljaanded, mis olid nõutud valdkondades nagu finantsüsteemid, heli- ja videotehnika, lennundus, meditsiin, robootika, telekommunikatsioon ja tööstussüsteemid, kus on vajalik tagada sündmuste töötlemise ennustatav aeg.
    • On lisatud mehhanism „sched_ext“ (SCX), mis võimaldab kasutada eBPF-i CPU planeerijate loomiseks, katab praktiliselt kõik aspektid ülesannete täitmise planeerimisest ja CPU ressurside jaotusest. Sellised planeerijad saavad dünaamiliselt laadida ja töötada Linuxi tuumas. virtuaalses masinas eBPF. Mehanism sched_ext lihtsustab ülesannete jaoks spetsiifiliste planeerijate loomist, võimaldab katsetada erinevaid tehnikaid ja strateegiaid planeerimisel ning võimaldab kiiresti luua tööprototüüpe ja asendada planeerijaid reaalajas tööstuslikes infrastruktuurides. Näiteks sched_ext abil on võimalik luua planeerija, mis arvestab konkreetse rakenduse spetsiifikat ja muudab dünaamiliselt oma täitmisstrateegiat süsteemi seisundi ja mõningate täiendavate tegurite alusel.
    • Komplekti kuuluvad ka ülejäänud plaastrid, mis on vajalikud SCHED_DEADLINE serveri tööks, lahendades traditsiooniliste ülesannete CPU ressursside saamata jätmise probleemi, kui kõrge prioriteediga (realtime) ülesanded monopoliseerivad CPU-d. CPU monopoliseerimise vältimiseks kasutati varasemalt tuumas mehhanismi Realtime throttling, mis püüdis reserveerida 5% madalama prioriteediga ülesannete jaoks, jättes 95% aega realtime-ülesannetele. See mehhanism jättis palju soovida, kuna tavalised ülesanded ei saanud paljudes olukordades protsessoriajast piisavalt. SCHED_DEADLINE server rakendab tõhusamat ressursside reserveerimise mehhanismi.
    • On lõpetatud EEVDF (Earliest Eligible Virtual Deadline First) ülesandepaneerija integreerimine, mis asendab CFS (Completely Fair Scheduler), mis on olnud saadaval alates kernelist 2.6.23. Uus planeerija valib järgmise protsessi täitmiseks, arvesse võttes protsesse, mis on saanud liiga vähe protsessorressursse või on saanud põhjendamatult palju protsessorit. Esimesel juhul sunnitakse käe ulatamine protsessile, teisel juhul aga lükatakse see edasi. Vana CFS planeerija kasutas protsesside tuvastamiseks, mis vajavad erilist tähelepanu, heuristikat ja peeneid seadistusi, samas kui uus planeerija jälgib neid selgemalt ja ei nõua peeneid seadistusi. Eeldatakse, et EEVDF võimaldab vähendada viivitusi ülesannete täitmisel, millega CFS-il olid planeerimise osas probleemid.
    • Ytseeni töötlemissüsteemis DRM Panic, mis kasutab DRM (Direct Rendering Manager) alamsüstemit visuaalse aruande kuvamiseks stiilis "sinine ekraan surma", on lisatud võimalus kuvada ekraanil logo ja QR-kood kmsg aruande jaoks, kui tõrke seisund tekib. Kuna QR-koodi mahub ainult 2953 baiti, on ette nähtud valik DRM_PANIC_SCREEN_QR_CODE_URL, mille puhul kmsg aruanne tihendatakse zlib abil ja lisatakse URL-i parameetrina, mis võimaldab QR-koodi kaudu V40 edastada umbes 7500 baiti. Pakettide kokkupanemisel saavad jaotused määrata baassideme URL-ile, mis võimaldab korraldada üleminekut probleemide teavitamise lehele. QR-koodi formaadi valimiseks on ette nähtud seadistus DRM_PANIC_SCREEN_QR_VERSION.
    • Lisatud ARM POE (Permission Overlay Extension) laienduse tugi, mis võimaldab määrata mälupiirkondade juurdepääsuõigusi. Selle laienduse abil võivad ARM64 protsessoritega süsteemid rakendada Mälukaitse võtmeid, mida kasutatakse mälulehtedele juurdepääsu piiramiseks ilma mälulehtede tabelit muutmata.
    • Loongarch, ARM64, PowerPC ja s390 arhitektuuride jaoks on migrateeritud getrandom() süsteemikõne rakendus, mis on optimeeritud vDSO (virtuaalne dünaamiline jagatud objekt) mehhanismi abil, mis võimaldab süsteemikõne töötlejat kernelist kasutajaruumi viia ja konteksti vahetusi vältida. Optimeerimine võimaldab juhuslike numbrite saamist kiirusel kuni 15 korda.
    • Asünkroonse sisendi/väljundi io_uring alamsüsteemi on lisatud absoluutsete ajapiirangute kasutamise võimalus, mis aktiveeruvad, kui antud aeg süsteemi kellades saavutatakse (varasemalt oli võimalik määrata ainult suhtelisi ajapiiranguid, mis näitasid kestust alates toimingust).
    • Lisatud failid libcpupower raamatukogu sidumiste genereerimiseks SWIG tööriista abil, mis võimaldab luua sidumised C/C++ koodist erinevatele programmeerimiskeeltele. Sidumised võimaldavad luua skripte Pythonis ja muudes keeltes ning kasutada neid libcpupower raamatukogu funktsionaalsuse laiendamiseks, mis pakub API-d cpufreq ja draiverite haldamiseks kasutajaruumi kaudu.
    • Utiliit cpuidle on rakendatud seisundi "residency" kuvamine, mida kasutatakse reaalajas süsteemides, arvestades minimaalset aega, mille jooksul peab protsessor olema edasilükkamise olekus, et õigustada energiat, mis kulub selle olekusse minekuks ja sealt välja tulemiseks.
    • Lisatud on võimalus kasutada Clang-kompilaatorit standardse C-raamatukogu nolibc kokkupanekuks, mis on kaasatud Linuxi tuumakoodi allikate hulka ja pakub ümbritsevat kihti põhifunktsionaalsete süsteemi kutsumise üle. Nolibc kokkupanekul Clangis on lubatud kasutada optimiseerimist linkimise etapis (LTO).
    • Mõned cgroup1 liidesed on kuulutatud vananenuks, sealhulgas TCP arvestamine, esimene versioon pehmest piirangust (soft limit) ja vabade mälude ammendamise haldamine. Nimetatud funktsioonide tugi jääb endiselt täielikuks, kuid teadlikkuse tõstmiseks on tehtud hoiatuse, et uurida kasutajate arvu, kes neid võimalusi endiselt kasutavad.
    • Lisatud on võimalus konfigureerida jälgimisringbuffer, et salvestada akumuleeritud andmeid pärast taaskäivitamist, mis takistab akumuleeritud silumise teabe kadumist tuuma ootamatute katkestuste korral. Andmed salvestatakse mälu. Aktiveerimine toimub tuumakäivituse käsurea parameetri kaudu trace_instance, näiteks "trace_instance=boot_map@0x285400000:12M" seadmisega reserveeritakse 12 MB mälu aadressil 0x285400000 "boot_map" bufferi jaoks, mis on kergesti ligipääsetav faili kaudu /sys/kernel/tracing/instances/boot_map.
    • Jätkuvad muudatused Rust-for-Linux harust, mis on seotud Rusti keele kasutamisega teise keelesena draiverite ja kerneli moodulite arendamisel (Rusti tuki ei ole vaikeaktiveeritud ja ei too kaasa Rusti sisaldumist kärgkomplekti kohustuslike sõltuvustena). Lisatud moodulid 'list' ja 'rbtree' kahekordsete linkide nimekirjade ja punase-musta puu otsingu töötluseks. Laiendatud 'init', 'sync', 'types' ja 'error' moodulite võimalusi. Pakutud võimalust Rusti koodi kasutamiseks kerneli koostamisel Spectre rünnete kaitsega (valikute MITIGATION_{RETHUNK, RETPOLINE, SLS}), KASAN silumise süsteemi kasutamine, kCFI (kernel Control Flow Integrity) ja Shadow Call kaitsemehhanismid, samuti GCC täiendavate pluginate kasutamine. Lisatud juht töötluse ethernet-kontrolleri Applied Micro QT2025 PHY jaoks, kirjutatud Rustis. Valmistatud eraldi lehekülg dokumentatsiooniga — rust.docs.kernel.org.
    • Kerneli lähtekoodidesse on lisatud utiliit xdrgen, et konverteerida XDR-spetsiifikad (eXternal Data Representation) XDR kodeerimis- ja dekodeerimisfunktsioonideks C-tüüpi stiilis, nagu on aktsepteeritud Linuxi kernelis.
    • Kerneli on vastu võetud muudatus, mis rakendab näidikute maskeerimise mehhanismi, et vähendada aeglaste kutsungite arvu barrier_nospec() 64-bitises funktsioonis copy_from_user(), mida kasutatakse andmete kopeerimiseks kernele kasutajaruumi kaudu. Maskeerimise rakendamine kiirendab testi 'per_thread_ops' läbitud aega 2,6%, mõõtes operatsioonide arvu, mida saab teostada ühes lõimes.
    • Lisatud uus USB-draiver, mis võimaldab kasutada protokolli 9pfs andmete edastamiseks ja vastuvõtmiseks USB-seadmest, kui 9p failisüsteem on USB kohal montitud (näiteks 'mount -t 9p -o trans=usbg,aname=/path/to/fs /mnt/9'). Uue draiveri näidatud rakenduseks on NFS-i asendamine juurepartitsiooni laadimise korral, arendades sisseehitatud seadmeid.
  • Diskisüsteem, sisend/väljund ja failisüsteemid
    • VFS alamsüsteemi on lisatud toimetamise võimalus seadmete salvestamiseks, mille bloki suurus on suurem kui süsteemi mälu lehe suurus. Failisüsteemides toetatakse seda võimalust praegu ainult XFS-is.
    • FUSE alamsüsteemi, mis võimaldab luua failisüsteemide rakendusi, mis töötavad kasutaja ruumis, on lisatud kasutajaidentifikaatorite kaardistamise tugi, mis võimaldab seostada teatud kasutaja faile teise kasutajaga praeguses süsteemis mountitud välise sektsiooni puhul.
    • Uus fcntl-operatsioon F_CREATED_QUERY võimaldab rakendusel määrata, kas fail, mille avamisel kasutati O_CREAT lippu, on loodud või eksisteeris see juba enne.
    • Süsteemikutsesse name_to_handle_at() on lisatud võimalus kasutada ainulaadseid 64-bitiseid mounti identifikaatoreid, et vältida võidurelvastumist /proc/mountinfo parsimisel.
    • Struktuuri 'file' suurust kernelis on vähendatud 232 baitilt 184 baitini, mis aitab vähendada mälu tarbimist süsteemides, mis töötavad aktiivselt failidega.
    • Failisüsteemide mountimine mount-kohad /proc ihaarias, näiteks /proc/PID/fd, on keelatud, kuna see tekitas võimalikke turbeprobleeme.
    • NSFS (NameSpace FS) pseudosüsteemis, mida kasutatakse nimede ruumide haldamiseks, on rakendatud täiendava teabe andmist mount-punktide nimede ruumide kohta.
    • Failisüsteemis EROFS (Extendable Read-Only File System), mis on mõeldud kasutamiseks ainult lugemiseks mõeldud sektsioonides, on lisatud tugi failisüsteemide mountinguks otse ketta piltidest, mis on salvestatud failidena.
    • XFS-is on lisatud uued ioctl-käsud XFS_IOC_START_COMMIT ja XFS_IOC_COMMIT_RANGE kahe faili vahelise sisu vahetamiseks.
    • NFS-is on lisatud protokolli 'LOCALIO' tugi, mis võimaldab määrata, kas klient ja server NFS asuvad samas hostis, et rakendada vastavaid optimeerimisi.
    • Failisüsteemis Btrfs on ettepanekud jõudluse optimeerimiseks, kood on refaktoreeritud, vahemikke on vähendatud lugemisoperatsioonide ajal, jätkatakse tööd, et minna üle lehekülgede mälestustele (page folios), rakendatakse automaatset mälu vabastamist btrfs_path struktuuri jaoks.
    • Failisüsteemis Ext4 on kõrvaldatud männede ja manuste vabastamisega seotud vead, samuti 'kiire commit' ja logimise mehhanismid.
  • Virtualiseerimine ja turvalisus
    • Lisatud on LSM-moodul IPE (Integrity Policy Enforcement), mis on välja töötatud Microsofti poolt, et täiendada olemasolevat mandatipõhise juurdepääsu juhtimise süsteemi. Moodul võimaldab määrata üldise poliitika süsteemi terviklikkuse tagamiseks, näidates, millised toimingud on lubatud ja kuidas tuleb komponente autentida. Näiteks saab IPE abil määrata, milliseid täideviimise faile on lubatud käivitada, arvestades nende vastavust originaalversioonile krüptograafiliste räsimärkide abil, mida pakub süsteem dm-verity.
    • Kerneli kompileerimise etapis on võimalus eraldi aktiveerida erinevate Spectre rikkumiste kaitsemeetodeid CPU-s. Kconfig'is on soovitatud uusi parameetreid: MITIGATE_MDS (Microarchitectural Data Sampling häkkeri eest kaitsmine), MITIGATE_TAA (TSX Asynchronous Abort häkkeri eest kaitsmine), MITIGATE_MMIO_STALE_DATA (MMIO Stale Data häkkeri eest kaitsmine), MITIGATE_L1TF (L1 Terminal Fault häkkeri eest kaitsmine), MITIGATE_RETBLEED (Retbleed häkkeri eest kaitsmine), MITIGATE_SPECTRE_V1, MITIGATE_SPECTRE_V2 (Spectre häkkerite eest kaitsmine), MITIGATE_SRBDS (Special Register Buffer Data Sampling häkkeri eest kaitsmine), MITIGATE_SSB (Speculative Store Bypass häkkeri eest kaitsmine).
    • Lisatud on käsuviipa parameeter proc_mem.force_override ja komplekt Kconfigi seadistusi (PROC_MEM_FORCE_ALWAYS, PROC_MEM_FORCE_PTRACE ja PROC_MEM_FORCE_NEVER), mis võimaldavad keelata mälu muutmise kaudu /proc/pid/mem.
    • LSM (Linux Security Module) alamteenus on üle viidud staatilistele kõnedele, mis on võimaldanud tugevdada turvalisust ja suurendada jõudlust.
    • Pakutakse võimalust kasutada tavalisi kernelesid ARM64 architektuuri jaoks külgmenetlustes, mis töötavad Android-süsteemides muudetud KVM hüperviraatoriga (protected KVM).
    • LSM-moodulis Landlock, mis võimaldab piirata protsesside rühma suhtlemist väliskeskkonnaga, on rakendatud «IPC scoping» kontseptsioon, et valikuliselt piirata suhtlemist sandbox-keskkondadega, kasutades Unix-sokette ja signaale. Näiteks võib keelata Unix-soketidega ühenduste loomise sandbox-keskkonnas protsessidega, kus isolatsiooni ei rakendata, kuid lubada ühendused protsessidega samas scope-ala.
    • KVM hüperviraatoris on külgsüsteemide CPUID-sse lisatud lipp, mis annab märku AVX10.1 laiendite toetamisest.
  • Võrgusüsteem
    • Lisatud on seadme mälu TCP mehhanism, mis võimaldab võrgu soklite kaudu otse edastada perifeersete seadmete mälusisu üle võrgu (zero-copy režiim) ja pakettide sisu otse edastada seadme mäluruumi vastuvõtja poolel. Pakettides edastatavad andmed edastatakse otse võrkaardilt perifeerse seadme mällu või seadmest võrgukaardile mööda CPU-d, samal ajal kui paketipealkirjad suunatakse tavalistesse tuumabufferitesse.
    • Paljude Etherneti ja juhtmevabade draiverite funktsioone on laiendatud. Näiteks Intel iwlwifi draiveris on lisatud RLC / SMPS operatsioonide edasiviimise tugi kindlal firmware poolel, RealTek rtw89 draiveris on parandatud jõudlust ja lisatud toetust RTL8852BT / 8852BE-VT (WiFi 6) kiipidele, Etherneti draiveris microchip on lisatud IEEE 802.3bw (100BASE-T1) ja IEEE 802.3bp spetsifikatsioonide tugi, samuti on parendatud Microsoft vNIC ja IBM veth virtuaalsete Ethernetite teostusi. Uued draiverid Etherneti kiipide jaoks, sealhulgas Realtek RTL9054, RTL9068, RTL9072, RTL9075, RTL9068, RTL9071 ja Microchip LAN8650/1 10BASE-T1S MAC-PHY.
    • MPTCP (MultiPath TCP) puhul, TCP protokolli laienduses, mis korraldab TCP-pakettide kohaletoimetamise samaaegselt mitmete marsruutide kaudu erinevate võrguliideste kaudu, on marsruutimisel kasutatavate kaalutegurite suurus suurenenud 8 baitist 16 baitini. On tehtud teostus, mis tuvastab kaotatud (blackhole) liikluse ja peatab mõneks ajaks ühenduste loomise katsed süsteemidega, mis toovad kaasa liikluse kaotuse.
    • IPv6 jaoks on implementeeritud lipu "p" tugi PIO (Prefix Information Option) jaoks, mida rakendatakse RA (IPv6 Router Advertisements) kuulutustes, et valida kliendide juurutamise mudel DHCPv6-PD (DHCPv6 Prefix Delegation, RFC9663) kaudu, mitte eraldi aadresside määramise põhjal, kasutades SLAAC (Stateless Address Autoconfiguration). IPv6 IOAM6 on lisatud uue tünni tunsrc kapseldamise režiimi tugi, et saavutada kõrgemat jõudlust.
    • IPsec juhtpakettide töötlemise jõudlust on parandatud.
    • Suurte nftables reeglite kogumite lähtestamise (flush) jõudlust on parandatud. nfnetlink_queue's on parandatud SCTP protokolli tugi.
    • API ethtoolis on lisatud mitmete võrkaardide sidumise tugi ühe võrguliidese külge.
  • Varustus
    • AMDGPU draiveris on jätkatud AMD RDNA4 GPU („GFX12“) toe teostamist. On lisatud võimalus lähtestada üksikuid tööülesannete järjekordi ilma kogu GPU oleku lähtestamiseta.
    • Jätkatud töö drm-draiveri (Direct Rendering Manager) Xe arendamiseks Intel Xe arhitektuuriga GPU-dele, mida kasutatakse Intel Arc-seeria graafikakaartides ja integreeritud graafikas alates Tiger Lake protsessoritest. Uues versioonis on lisatud tugi Battlemage ja Lunar Lake mikrоarhitektuuride põhistele GPU-dele. Esitleda on CCS-modifikaatorite (Color Control Surface) Xe2 tugi sisseehitatud ja diskreetsete GPU-de parameetrite juhtimiseks.
    • i915 draiveris on rakendatud võimalus edastada HWMON või sysfs (atribuut «fan1_input») kaudu teavet tuulegeneraatori pöörlemiskiirusest. Parameeter «i915.modeset» on kuulutatud aegunuks, selle asemel tuleks kasutada parameetrit «i915.nomodeset».
    • DRM-draiveris msm (Qualcomm Adreno GPU) on lisatud tugi GPU-dele A615, A306 ja A621.
    • Nouveau draiveris on läbi vaadatud ja puhastatud sisemisi struktuure.
    • Draiveris intel_pstate, mis juhib energiatõhususe parameetreid (P-state) Intel protsessoritega süsteemides, on lisatud tugi hübriidsüsteemidele, millel on asümmeetrilised (erinevate omadustega) CPU-d, samuti toitehalduse tugi Granite Rapids ja Sierra Forest mikrоarhitektuuriga protsessoritele. Draiveris intel_idle on lisatud tugi CPU-dele Xeon Granite Rapids. Draiveris intel_rapl on tagatud AMD 1Ah seeria protsesside ja Intel ArrowLake-U protsessorite tuvastamine.
    • Jätkatud on muudatuste sisseviimine ARM SoC Snapdragon X Elite toetamiseks, millel on 12-core Qualcomm Oryon CPU ja Qualcomm Adreno GPU. Chip on suunatud kasutamiseks sülearvutites ja lauaarvutites ning saavutab palju teste sooritades paremaid tulemusi kui Apple M3 ja Intel Core Ultra 155H.
    • Lisatud on tugi ARM-plaatide, SoC-de ja seadmete jaoks: Broadcom bcm2712 (Raspberry Pi 5), Renesas R9A09G057 (RZ/V2H), Qualcomm Snapdragon 414 (MSM8929), Lenovo ThinkPad T14s Gen 6, Lenovo A6000/A6010, Surface Laptop 7, Anbernic RG35XXSP, Firefly Core-PX30-JD4, Lunzn Fastrhino R68S, Aspeed Riser, AGX Orin, Rockchip Qnap-TS433, Huashan Pi, Meta Catalina, BeagleY-AI, NanoPi R2S Plus, ExynosAuto v920, SOPHGO SG2002, Qualcomm IPQ5332, LG G4 (h815), Cool Pi CM5 GenBook, Anbernic RG35XXSP, GameForce Ace, IBM P11, Kontron i.MX93 OSM-S, NanoPC-T6.
    • Lisatud on tugi ekraanipaneelidele Anbernic RG28XX, On Tat Industrial Company KD50G21-40NT-A1, Innolux G070ACE-LH3, Melfas lmfbx101117480, Densitron DMT028VGHMCMI-1D, Microchip AC40T08A, AOU B116XTN02.3, AUO B116XAN06.1, AOU B116XAT04.1, BOE TV101WUM-LL2, BOE NV140WUM-N41, BOE NV133WUM-N63, BOE NV116WHM-A4D, BOE NE140WUM-N6G, CMN N116BCA-EA2, CMN N116BCP-EA2, CSW MNB601LS1-4, Starry er88577.
    • Helisüsteemi on lisatud tugi RME Digiface USB, AMD ACP 7.1, Mediatek MT6367, MT8365, Realtek RTL1320, C-Media CM9825 kiipidele ja koodekitele. Vanad ASoC Intel heli draiverid on kuulutatud aegunuks ja nende asemel soovitatakse kasutada AVS draivereid. SoundWire draiverisse on sisse viidud palju parandusi.

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster