Kerneli vabastamine Linux 6.12 reaalajas toega

Pärast kahekuulist arendust avaldas Linus Torvalds kerneli. Linux 6.12. Kõige tähelepanuväärsemate muudatuste hulgas on: reaalajas režiimi lubamise võimalus, sched_ext protsessori ajakavade loomiseks eBPF-i kaudu, QR-koodi väljastamine hädaolukorras, seadme mälu TCP mehhanism, SCHED_DEADLINE serveri ressursside reserveerimise mehhanism, EEVDF-i ülesannete ajakava täiustamine, IPE moodul terviklikkuse poliitikate seadistamiseks.

Uus versioon sisaldab 14607 2167 parandust 37 13087 arendajalt, paiga suurus on 507913 MB (muudatused puudutasid 234083 15130 faili, lisati 2078 85 koodirida, 6.10 41 rida kustutati). Viimases versioonis oli 45 6.12 parandust 12 arendajalt, paiga suurus oli 13 MB (6 tuumas oli plaaster 3 MB). Umbes XNUMX% kõigist versioonis XNUMX tehtud muudatustest on seotud seadme draiveritega, ligikaudu XNUMX% muudatustest on seotud riistvaraarhitektuurile omase koodi uuendamisega, XNUMX% on seotud võrgupinuga, XNUMX% on seotud failisüsteemidega ja XNUMX% on seotud sisemiste tuuma alamsüsteemidega.

Peamised uuendused kernelis 6.12:

  • Mälu- ja süsteemiteenused
    • Nüüd on saadaval võimalus kerneli ehitada PREEMPT_RT valikuga ilma reaalajas toimimiseks vajalike täiendavate parandusteta. Viimane puuduv kerneli funktsioon, mis takistas PREEMPT_RT režiimi lubamist, oli blokeerimata aatomiväljundi tugi printk funktsiooni kaudu, mis on samuti kernelis olemas. PREEMPT_RT tugi on saadaval x86, x86_64, ARM64 ja RISC-V arhitektuuridele. Seni pakuti PREEMPT_RT režiimi rakendamist väliste paranduste kujul, mida mõned distributsioonid, näiteks RHEL, SUSE ja Ubuntu, lõid oma toodetest eraldi reaalajas versioonid, millele on nõudlus sellistes valdkondades nagu finantssüsteemid, heli- ja videotöötlusseadmed, lennundus, meditsiin, robootika, telekommunikatsioon ja tööstussüsteemid, kus on vaja tagada prognoositav sündmuste töötlemise aeg.
    • Lisatud on mehhanism "sched_ext" (SCX), mis võimaldab eBPF-i abil luua protsessori planeerijaid, mis hõlmavad praktiliselt kõiki ülesannete planeerimise ja protsessori ressursside eraldamise aspekte. Selliseid planeerijaid saab kernelis dünaamiliselt laadida ja käivitada. Linux в virtuaalmasin eBPF. Mehhanism sched_ext lihtsustab ülesandepõhiste ajastajate loomist, võimaldab katsetada erinevate ajastustehnikate ja -strateegiatega ning lubab kiiresti luua töötavaid prototüüpe ja asendada ajastajaid reaalajas tootmisinfrastruktuurides. Näiteks sched_ext abil saate luua ajastaja, mis võtab arvesse konkreetse rakenduse eripärasid ja muudab dünaamiliselt oma ajastusstrateegiat sõltuvalt süsteemi olekust ja muudest teguritest.
    • Kompositsioon sisaldab ülejäänud osa SCHED_DEADLINE serverimehhanismi tööks vajalikest paikadest, mis lahendab CPU ressursside alakasutamise probleemi tavaliste ülesannete puhul, kui protsessorit monopoliseerivad kõrge prioriteediga (reaalajas) ülesanded. Protsessori monopoliseerimise vältimiseks kasutas kernel varem reaalajas drosselimehhanismi, mis üritas reserveerida 5% madala prioriteediga ülesannete jaoks, jättes 95% ajast reaalajas ülesannete jaoks. See mehhanism jättis palju soovida, kuna tavalised toimingud ei saanud paljudes olukordades piisavalt protsessori aega. SCHED_DEADLINE server rakendab tõhusamat ressursside broneerimise mehhanismi.
    • Tegumiplaanija EEVDF (Earliest Emigible Virtual Deadline First) integreerimine on lõpule viidud, mis asendas CFS (Completely Fair Scheduler) planeerija, mida tarnitakse alates kernelist 2.6.23. Uus planeerija võtab järgmise protsessi valikul, kuhu täitmise üle kanda, arvesse protsesse, mis pole saanud piisavalt protsessoriressursse või on saanud ebaõiglaselt palju protsessoriaega. Esimesel juhul on kontrolli üleandmine protsessile sunnitud ja teisel juhul lükatakse see edasi. Vana CFS-i planeerija kasutas eritähelepanu vajavate protsesside tuvastamiseks heuristikat ja peenhäälestust, samas kui uus planeerija jälgib neid selgemalt ega vaja peenhäälestamist. Eeldatakse, et EEVDF vähendab viivitusi ülesannete täitmisel, mille puhul CFS-il on olnud ajakavaga probleeme.
    • Kerneli hädaabikäsitlejas - DRM Panic, mis kasutab DRM-i (Direct Rendering Manager) alamsüsteemi, et kuvada visuaalne aruanne "surma sinise ekraani" stiilis, võimalus kuvada logo ja QR-koodi koos kmsg-aruandega ekraan hädaolukorra ilmnemisel on lisatud. Kuna QR-koodi mahub vaid 2953 baiti, siis on ette nähtud valik DRM_PANIC_SCREEN_QR_CODE_URL, milles kmsg aruanne tihendatakse zlib-i abil ja lisatakse parameetrina URL-ile, mis võimaldab V40 QR-koodi kaudu üle kanda umbes 7500 baiti. Kerneliga pakettide koostamisel saavad distributsioonid määrata URL-ile baas-URL-i, mis võimaldab neil navigeerida probleemist teatamiseks lehele. QR-koodi vormingu valimiseks pakutakse sätet DRM_PANIC_SCREEN_QR_VERSION.
    • Lisatud tugi ARM POE-le (Permission Overlay Extension), mis võimaldab määrata mälualadele juurdepääsuõigusi. Seda laiendust kasutades saab ARM64 protsessoritega süsteemides rakendada mälukaitsevõtmete mehhanismi, mida kasutatakse mälulehtedele juurdepääsu piiramiseks ilma mälulehtede tabelit muutmata.
    • Loongarchi, ARM64, PowerPC ja s390 arhitektuuri puhul on süsteemikutse getrandom() juurutamine viidud, optimeeritud vDSO (virtuaalne dünaamiline jagatud objekt) mehhanismi abil, mis võimaldab teisaldada süsteemikõnede töötleja kernelist kasutajale. ruumi ja vältige kontekstilülitusi. Optimeerimine võimaldab kiirendada juhuslike arvude genereerimist kuni 15 korda.
    • Asünkroonse sisendi/väljundi alamsüsteemi io_uring on lisatud absoluutsete ajalõppude kasutamise võimalus, mis käivitub süsteemi kellal teatud aja saavutamisel (varem sai määrata ainult suhtelisi ajalõppe, mis näitasid kestust operatsiooni algusest ).
    • Lisatud failid sidemete genereerimiseks libcpupoweri teegi jaoks, kasutades SWIG-i tööriistakomplekti, mis võimaldab genereerida C/C++ koodist seoseid erinevatele programmeerimiskeeltele. Sidemed võimaldavad luua skripte Pythonis ja teistes keeltes ning kasutada neid libcpupoweri teegi funktsionaalsuse laiendamiseks, mis pakub API-d cpufreqi ja draiverite haldamiseks kasutajaruumist.
    • Cpuidle'i utiliit kuvab jõudeoleku "residentsuse" väärtuse, mida kasutatakse reaalajas süsteemide jaoks ja võttes arvesse minimaalset aega, mille jooksul protsessor peab jõudeolekus olema, et õigustada sellesse olekusse ülemineku ja sellest väljumise energiakulusid.
    • Lisatud võimalus kasutada Clangi kompilaatorit standardse C-teegi nolibc loomiseks, mis on kerneli lähtekoodis olemas. Linux ja pakub põhiliste süsteemikõnede ümber ümbrise. Clangis nolibc loomisel on lingiaja optimeerimine (LTO) lubatud.
    • Mõned cgroup1 liidesed on aegunud, näiteks TCP-arvestus, pehme piirangu versioon XNUMX ja mälu tühjenemise haldus. Nende funktsioonide tugi on praegu täielik ja hoiatus on tehtud selleks, et uurida nende funktsioonide kasutamist jätkavate kasutajate arvu.
    • Lisatud on võimalus konfigureerida helinajäljepuhvrit, et salvestada kogunenud andmed pärast taaskäivitamist, mis võimaldab teil mitte kaotada kogunenud silumisinfot kerneli krahhi korral. Andmed salvestatakse mällu. Lubamine toimub kerneli käsurea parameetri trace_instance kaudu, näiteks säte "trace_instance=boot_map@0x285400000:12M" reserveerib 12 MB mälu 0x285400000 puhvri jaoks "boot_map", millele pääseb juurde faili /sys/kerneli kaudu. /tracing/instances/boot_map.
    • Jätkus muudatuste migreerimine Rust-for-harustLinux, mis on seotud Rusti kasutamisega teise keelena draiverite ja kerneli moodulite arendamiseks (Rusti tugi pole vaikimisi aktiivne ja ei hõlma Rusti kerneli nõutavate ehitussõltuvuste hulgas). Lisatud on moodulid 'list' ja 'rbtree' kahekordselt lingitud loendite ja puna-mustade otsingupuudega töötamiseks. Laiendatud on moodulite 'init', 'sync', 'types' ja 'error' võimalusi. Lisatud on võimalus kasutada Rusti koodi kerneli ehitamisel, mis on kaitstud Spectre rünnakute eest (valikud MITIGATION_{RETHUNK,RETPOLINE,SLS}), kasutades KASAN silumissüsteemi, kCFI (kernel Control Flow Integrity) ja Shadow Call kaitsemehhanisme ning täiendavate GCC pluginate kasutamisel. Lisatud on draiver Applied Micro QT2025 PHY Etherneti kontrollerile, mis on kirjutatud Rustis. Valmistatud on eraldi veebisait dokumentatsiooniga: rust.docs.kernel.org.
    • Kerneli lähtekoodi on lisatud utiliit xdrgen, mis teisendab XDR-i (eXternal Data Representation) spetsifikatsioonid XDR-i kodeerimis- ja dekodeerimisfunktsioonideks, mis on kirjutatud kerneli poolt omaksvõetud C-stiilis. Linux.
    • Kernelit on muudetud, et rakendada kursori maskeerimise mehhanismi, et vähendada aeglaste väljakutsete arvu Barjääri_nospec() 64-bitises funktsioonis copy_from_user(), mida kasutatakse andmete kopeerimiseks kasutajaruumist kernelisse. Maskeerimise kasutamine kiirendab 2.6% võrra "per_thread_ops" testi, mis hindab ühes lõimes tehtavate toimingute arvu.
    • Lisatud on uus USB-draiver, mis võimaldab kasutada 9pfs-protokolli USB-seadme andmete saatmiseks ja vastuvõtmiseks, kui ühendate 9p-failisüsteemi USB kaudu (näiteks "mount -t 9p -o trans=usbg, aname=/tee/fs /mnt/9"). Uue draiveri kasutamise näide on selle kasutamine NFS-i asemel juurpartitsiooni alglaadimise korraldamiseks manustatud seadmete arendamisel.
  • Ketta alamsüsteem, I/O ja failisüsteemid
    • VFS-i alamsüsteemi on lisatud võimalus töötada salvestusseadmetega, mille ploki suurus on suurem kui süsteemis oleva mälulehe suurus. Failisüsteemides toetatakse seda funktsiooni praegu ainult XFS-is.
    • FUSE alamsüsteem, mis võimaldab luua kasutajaruumis töötavate failisüsteemide rakendusi, on lisanud toe ühendatud failisüsteemide kasutajatunnuste kaardistamiseks, mida kasutatakse ühendatud välispartitsiooni konkreetse kasutaja failide sobitamiseks mõne teise praeguse kasutajaga. süsteem.
    • Rakendatud on uus fcntl-operatsioon F_CREATED_QUERY, mis annab rakendusele võimaluse määrata, kas lipu O_CREAT abil avatud fail loodi või oli see juba varem olemas.
    • Süsteemikutsele name_to_handle_at() lisati võimalus kasutada kordumatuid 64-bitisi ühenduspunkti ID-sid, et vältida võistlustingimusi /proc/mountinfo sõelumisel.
    • Kerneli "faili" struktuuri suurust on vähendatud 232-lt 184-le baidile, mis vähendab mälutarbimist süsteemides, mis töötavad aktiivselt failidega.
    • Failisüsteemide ühendamine /proc hierarhia ühenduspunktideks, nagu /proc/PID/fd, oli keelatud, mis tekitas potentsiaalseid turvaprobleeme.
    • Nimeruumidega töötamiseks kasutatav pseudoFS NSFS (NameSpace FS) annab lisateavet ühenduspunktide nimeruumide kohta.
    • EROFS (Extendable Read-Only File System) failisüsteem, mis on mõeldud kasutamiseks kirjutuskaitstud partitsioonidel, toetab nüüd failisüsteemide ühendamist otse failidena salvestatud kettakujutistelt.
    • XFS-i on lisatud uued ioctl käsud XFS_IOC_START_COMMIT ja XFS_IOC_COMMIT_RANGE, et vahetada sisu kahe faili vahel.
    • NFS-ile on lisatud tugi protokollile "LOCALIO", mis võimaldab teil määrata, kas klient ja server NFS samal hostil, et lubada vastavad optimeerimised.
    • Btrfs-failisüsteemis on pakutud välja jõudluse optimeerimine, koodi ümberkujundamine, lugemisoperatsioonide ajal lukustamise ulatuse vähendamine, töö mälulehtede teisendamiseks lehefoolio kasutamiseks ja automaatne mälu vabastamine. rakendatakse struktuuri btrfs_path jaoks.
    • Ext4 failisüsteemis on parandatud vead, mis on seotud plokkide eraldamise, ulatuse haldamise, kiire kinnitamise ja ajakirjandusega.
  • Virtualiseerimine ja turvalisus
    • Lisatud on IPE (Integrity Policy Enforcement) LSM-moodul, mille Microsoft on välja töötanud olemasoleva kohustusliku juurdepääsukontrollisüsteemi laiendamiseks. Moodul võimaldab defineerida kogu süsteemile üldise terviklikkuse poliitika, mis näitab, millised toimingud on lubatud ja kuidas komponentide autentsust tuleks kontrollida. Näiteks saate IPE abil määrata, millised käivitatavad failid on lubatud käivitada, võttes arvesse nende vastavust võrdlusversioonile, kasutades süsteemi dm-verity pakutavaid krüptograafilisi räsi.
    • Kerneli kompileerimisetapis on võimalik eraldi lubada saadaolevad kaitsemeetodid CPU erinevate Spectre klassi haavatavuste vastu. Kconfig pakub uusi parameetreid: MITIGATE_MDS (kaitse mikroarhitektuuriandmete proovivõtu haavatavuse eest), MITIGATE_TAA (kaitse TSX asünkroonse katkestamise haavatavuse eest), MITIGATE_MMIO_STALE_DATA (kaitse MMIO vananenud andmete haavatavuse eest), L1 TFIG_haavatavuse vastu, IGATE_RETBLEED (kaitse vastu Retbleedi haavatavused), MITIGATE_SPECTRE_V1, MITIGATE_SPECTRE_V1 (kaitse Spectre haavatavuste eest), MITIGATE_SRBDS (kaitse spetsiaalse registripuhvri andmete proovivõtu haavatavuse eest), MITIGATE_SSB (kaitse spekulatiivse poe ümbersõidu eest).
    • Lisatud käsurea suvand proc_mem.force_override ja Kconfigi koosteseadete komplekt (PROC_MEM_FORCE_ALWAYS, PROC_MEM_FORCE_PTRACE ja PROC_MEM_FORCE_NEVER), et vältida mälu muutmist läbi /proc/pid/mem.
    • LSM-i alamsüsteem (Linux turvamoodul) on üle viidud staatiliste kõnede kasutamisele, mis on parandanud turvalisust ja jõudlust.
    • Võimalus kasutada ARM64 arhitektuuri standardseid südamikke külaliskeskkondades, mis töötavad Android-süsteemid modifitseeritud KVM hüperviisoriga (kaitstud KVM).
    • Landlock LSM moodul, mis võimaldab piirata protsesside rühma koostoimet väliskeskkonnaga, rakendab IPC ulatuse kontseptsiooni, et valikuliselt piirata suhtlemist liivakastikeskkondadega, kasutades Unixi pistikupesasid ja signaale. Näiteks saate keelata liivakastikeskkonnast Unixi pesadega ühendused protsessidega, millel pole isolatsiooni rakendatud, kuid mis võimaldavad ühendusi sama ulatusega protsessidega.
    • KVM-i hüperviisoris on külalissüsteemide CPUID-le lisatud lipp, mis näitab AVX10.1 laienduste tuge.
  • Võrgu alamsüsteem
    • Lisatud on seadme mälu TCP mehhanism, mis võimaldab võrgupesade abil saata välisseadmete mälu sisu otse üle võrgu (nullkoopia režiim) ja paigutada võrgupakettide sisu otse seadme mälualasse. saaja pool. Pakettidena edastatavad andmed edastatakse võrgukaardilt välisseadme mällu või seadme mälust otse võrgukaardile, möödudes protsessorist ning pakettide päised satuvad tavalistesse kerneli puhvritesse.
    • Paljude Etherneti ja traadita ühenduse draiverite võimalusi on laiendatud. Näiteks Inteli iwlwifi draiver lisas toe RLC/SMPS-i toimingute teisaldamiseks püsivara poolele, RealTek rtw89 draiver suurendas jõudlust ja lisas toe RTL8852BT/8852BE-VT (WiFi 6) kiipidele, mikrokiibi Etherneti draiver lisas IEEE 802.3 toe. bw (100BASE) spetsifikatsioonid -T1) ja IEEE 802.3bp, täiustatud virtuaalse Etherneti rakendused Microsoft vNIC ja IBM veth. Lisatud uued draiverid Realtek RTL9054, RTL9068, RTL9072, RTL9075, RTL9068, RTL9071 ja Microchip LAN8650/1 10BASE-T1S MAC-PHY Etherneti kiipide jaoks.
    • MPTCP-s (MultiPath TCP), mis on TCP-protokolli laiendus TCP-pakettide edastamise korraldamiseks korraga mitmel marsruudil läbi erinevate võrguliideste, suurendatakse marsruutimisel kasutatavate kaalude suurust 8 bitilt 16-le. Rakendatud on kaotsiläinud (musta augu) liikluse tuvastamine ja mõneks ajaks peatatud katsed luua ühendusi süsteemidega, mis põhjustavad liikluse kadumise.
    • IPv6 puhul on PIO-s (prefiksiteabe valik) rakendatud lipu "p" tugi, mida kasutatakse RA reklaamides (IPv6 ruuterireklaamid), et määrata määramise asemel DHCPv6-PD (DHCPv6 prefiksi delegeerimine, RFC9663) kaudu kliendi juurutusmudel. individuaalsed aadressid, mis põhinevad eesliidetel, kasutades SLAAC-i (Stateless Address Autoconfiguration). IPv6 IOAM6 lisab tuge uuele tunsrc kapseldusrežiimile, mis võimaldab paremat jõudlust.
    • Parem jõudlus IPseci juhtpakettide töötlemisel.
    • Suuremate nftablesi reeglikomplektide loputamise täiustatud jõudlus. nfnetlink_queue on täiustanud SCTP-protokolli tuge.
    • Ethtool API on lisanud toe mitme võrgukaardi sidumiseks ühe võrguliidesega.
  • Оборудование
    • AMDGPU draiveris jätkub töö AMD RDNA4 (GFX12) GPU-de toe juurutamiseks. Lisati võimalus lähtestada üksikuid ülesannete järjekordi ilma kogu GPU-d lähtestamata.
    • Töö jätkus Intel Xe arhitektuuril põhineva GPU-de Xe drm-draiveri (Direct Rendering Manager) kallal, mida kasutatakse Intel Arc perekonna videokaartides ja integreeritud graafikas, alustades Tiger Lake'i protsessoritest. Uus versioon sisaldab Battlemage'i ja Lunar Lake'i mikroarhitektuuridel põhinevate GPU-de tuge. Integreeritud ja diskreetsete GPU-de parameetrite juhtimiseks on kasutusele võetud Xe2 CCS (Color Control Surface) modifikaatorite tugi.
    • I915 draiver rakendab võimalust väljastada teavet ventilaatori kiiruse kohta HWMON-i või sysfs-liidese kaudu (atribuut "fan1_input"). Parameeter "i915.modeset" on aegunud; parameetri "i915.modeset" asemel tuleks kasutada "i0.modeset".
    • Msm DRM-draiverile (Qualcomm Adreno GPU) lisati tugi A615, A306 ja A621 GPU-dele.
    • Nouveau draiveril on sisemised struktuurid ümber tehtud ja puhastatud.
    • Intel_pstate draiver, mis kontrollib Inteli protsessoritega süsteemide energiatarbimise parameetreid (P-state), on lisanud toe asümmeetriliste (erinevate omadustega) protsessoritega hübriidsüsteemidele, samuti Granite Rapidsil ja Sierra Forestil põhinevate protsessorite toitehalduse toe. mikroarhitektuurid. Intel_idle draiverile lisati tugi Xeon Granite Rapidsi protsessorile. Intel_rapl draiver tuvastab AMD 1Ah perekonna protsessid ja Intel ArrowLake-U protsessorid.
    • Jätkuv muudatuste kaasamine, et toetada ARM SoC Snapdragon X Elite'i, mis kasutab Qualcommi enda 12-tuumalist Oryoni protsessorit ja Qualcomm Adreno GPU-d. Kiip on mõeldud kasutamiseks sülearvutites ja personaalarvutites ning edestab paljudes jõudlustestides Apple M3 ja Intel Core Ultra 155H kiipe.
    • Lisatud tugi ARM-plaatidele, SoC-dele ja seadmetele: Broadcom bcm2712 (Raspberry Pi 5), Renesas R9A09G057 (RZ/V2H), Qualcomm Snapdragon 414 (MSM8929), Lenovo ThinkPad T14s Gen 6, Lenovo A6000/AXX Laptop 6010, Surface A7/A35 Laptop 30 , Firefly Core-PX4-JD68, Lunzn Fastrhino R433S, Aspeed Riser, AGX Orin, Rockchip Qnap-TS2, Huashan Pi, Meta Catalina, BeagleY-AI, NanoPi R920S Plus, ExynosAuto v2002, SOPHGO SG5332, LGQ4, Qual815com IP5 Lahe Pi CM35 GenBook, Anbernic RG11XXSP, GameForce Ace, IBM P93, Kontron i.MX6 OSM-S, NanoPC-TXNUMX
    • Lisatud tugi Anbernic RG28XX, On Tat Industrial Company KD50G21-40NT-A1, Innolux G070ACE-LH3, Melfas lmfbx101117480, Densitron DMT028VGHMCMI-1D, Microchip AC40T08A, AXTOU B116s ekraan. B02.3XAN116, AOU B06.1XAT116, BOE TV04.1WUM-LL101, BOE NV2WUM-N140, BOE NV41WUM-N133, BOE NV63WHM-A116D, BOE NE4WHM-N-140G6, NCPEA-N-116G2 , CSW MNB116LS2-601, Starry er1.
    • Heli alamsüsteemile on lisatud tugi kiipidele ja koodekitele RME Digiface USB, AMD ACP 7.1, Mediatek MT6367, MT8365, Realtek RTL1320, C-Media CM9825. Intel ASoC vanad helidraiverid on kuulutatud aegunuks ja nende asemel on soovitatav kasutada AVS-draivereid. SoundWire'i draiverit on tehtud palju täiustusi.

Allikas: opennet.ru

Ostke DDoS-kaitsega saitide jaoks usaldusväärne hostimine, VPS VDS-serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega, VPS VDS serverid | ProHoster