Post du monatoj da evoluo, Linus Torvalds prezentis la liberigon de la Linukso 6.8-kerno. Inter la plej rimarkindaj ŝanĝoj: la Xe-ŝoforo por Intel GPU-oj, la protekta reĝimo por blokaj aparatoj kun muntitaj dosiersistemoj, la Deadline-servila taskoplanilo-mekanismo, aŭtomata optimumigo de kunfandado de identaj memorpaĝoj, la unua ŝoforo en la Rust-lingvo, listmount kaj statmount. sistemvokoj, forigo de bpfilter kaj SLAB-mekanismo guest_memfd en KVM, profilado de datuma aliro.
La nova versio inkluzivas 15641 korektojn de 2018 programistoj, la flikgrandeco estas 44 MB (la ŝanĝoj influis 12212 dosierojn, 663864 linioj de kodo estis aldonitaj, 339094 linioj estis forigitaj). La lasta eldono havis 18405 korektojn de 2066 programistoj, kaj la flikgrandeco estis 72 MB. Proksimume 42% de ĉiuj ŝanĝoj lanĉitaj en 6.8 rilatas al aparataj ŝoforoj, proksimume 15% de ŝanĝoj rilatas al ĝisdatigo de kodo specifa por hardvararkitekturoj, 14% rilatas al la retstako, 6% rilatas al dosiersistemoj kaj 3% estas rilataj al internaj kernaj subsistemoj.
Estas 6.8 milionoj da objektoj en la Git-deponejo kun kerno 9.996, kio indikas, ke la sekva kerno 6.9 rompos la mejloŝtonon de 10 milionoj Git-objektoj. Antaŭe, la ŝanĝo en branĉaj numeroj 3.x kaj 4.x bone korelaciis kun la nombro da git-objektoj en la deponejo - kerno 3.0 estis liberigita kiam estis proksimume 2 milionoj da objektoj en la deponejo, kaj kerno 4.0 - 4 milionoj da objektoj. Samtempe, en 2019, eldono 5.0 rompis ĉi tiun logikan ĉenon, ĉar kiam ĝi estis formita, la deponejo inkludis proksimume 6.5 milionojn da git-objektoj.
Ŝlosilaj novigoj en kerno 6.8:
- Diska Subsistemo, I/O kaj Dosiersistemoj
- Aldonita reĝimo por bloki rektan skribon por bloki aparatojn, kiuj muntis dosiersistemojn (post ebligo de la reĝimo, la radika uzanto ne povos fari ŝanĝojn al la FS per manipuladoj ĉe la bloka aparato nivelo). Defaŭlte, la reĝimo estas malŝaltita kaj postulas ke la parametro BLK_DEV_WRITE_MOUNTED estu specifita dum konstruado. Por sekcioj kun Btrfs, blokado ankoraŭ ne funkcias, ĉar la necesaj ŝanĝoj ankoraŭ ne estis faritaj al la Btrfs-kodo.
- Aldonita listmount() kaj statmount() sistemvokoj, permesante detalajn informojn pri surmuntitaj dosiersistemoj esti akiritaj de uzantspaco.
- En la dosiersistemo XFS, laboro daŭre efektivigas la kapablon uzi la fsck-ilaĵon por kontroli kaj korekti identigitajn problemojn interrete, sen malmunti la dosiersistemon.
- Ext4 uzas la vokon dioread_nolock por blokoj pli malgrandaj ol memorpaĝo, kiu plibonigas rendimenton forigante nenecesajn serurojn. Iuj funkcioj estis konvertitaj por uzi paĝajn foliojn.
- Btrfs aldonis subtenon por la munta flago "nospace_cache" por malŝalti la liberan blokkaŝmemoron. Iuj funkcioj estis konvertitaj por uzi paĝajn foliojn.
- La dosiersistemo EROFS (Etendebla Nurlegebla Dosiera Sistemo), desegnita por uzo en nurlegeblaj sekcioj, aldonis subtenon por subpaĝa kunpremado kaj plibonigita efikecon en situacioj de malalta memoro.
- La dosiersistemo F2FS plibonigis subtenon por zonitaj stokaj aparatoj (dividante grupojn de blokoj aŭ sektoroj en zonojn, en kiuj nur sinsekva aldono de datumoj estas permesita kun ĝisdatigo de la tuta grupo de blokoj).
- Por la SMB-dosiersistemo, la kapablo krei blokajn kaj simbolajn aparatdosierojn estis efektivigita.
- Parta subteno por kontroli kaj restarigi la integrecon de surmuntitaj dosiersistemoj estis aldonita al Bcachefs.
- La subsistemo de aparato-mapisto ne plu subtenas MD_LINEAR, MD_MULTIPATH, kaj MD_FAULTY-traktilojn, kiuj estis malrekomenditaj en 2021.
- Memoraj kaj sistemaj servoj
- La Zswap-subsistemo estis kompletigita kun la kapablo devigi malŝarĝi "malvarmajn" memorpaĝojn, kiuj ne estis aliritaj kaj plej verŝajne restos nereklamitaj, aktivigitaj kiam mankas RAM. Zswap konservas paĝojn kiuj estas elmetitaj al la interŝanĝa sekcio, stokante ilin en RAM en kunpremita formo kiam ajn eblas sen flui ilin al la fakta nekunpremita interŝanĝsekcio sur disko. Ŝanĝoj faritaj kiam memoro estas malalta permesas vin redukti la grandecon de la Zswap-pool stokita en RAM kaj liberigi memoron por la sistemo.
- Zswap ofertas novan reĝimon kiu tute malŝaltas reskribon al la reala interŝanĝa sekcio se la skribprovo estas malsukcesa, kaj ne fluigas paĝojn jam en la zswap-grupo al la interŝanĝa sekcio.
- La servilmekanismo SCHED_DEADLINE estis aldonita al la taskoplanilo, kiu solvas la problemon de subutiligo de CPU-resursoj per regulaj taskoj kiam la CPU estas monopoligita de altprioritaj (realtempaj) taskoj. Por malhelpi CPU-monopoligon, la kerno antaŭe uzis la Realtime-ŝrangimekanismon, kiu provis rezervi 5% por malalt-prioritataj taskoj, lasante 95% de la tempo por realtempaj taskoj. Ĉi tiu mekanismo lasis multon por deziri, ĉar ordinaraj taskoj en multaj situacioj ne ricevis sufiĉe da procesora tempo. SCHED_DEADLINE-servilo efektivigas pli efikan rezervmekanismon de rimedoj.
- La subsistemo DAMON (Data Access MONitor), kiu ebligas al vi kontroli la aliron de procezo al datumoj en RAM (ekzemple, vi povas ekscii kiujn memorareojn la procezo aliris kaj kiuj memorareoj restis nepostulataj), aldonis mekanismon por aŭtomate ĝustigi. la agresemo de memorkonsumo bazita sur specifitaj kvotoj.
- Aldonita subteno por multgrandaj grandaj memorpaĝoj (mTHP - plurgrandaj Travideblaj Grandegaj Paĝoj), permesante al vi asigni memoron en blokoj pli grandaj ol la baza paĝo, sed pli malgrandaj ol tradicia THP-paĝo.
- Aldonita subteno por grandaj folioj (paĝaj folioj, kombinitaj memorpaĝoj) por anonima memoro (ne ligita al la FS, ekzemple, asignita per malloc). La ŝanĝo celas plibonigi rendimenton asignante grandajn pecojn da memoro dum aliro al neasignitaj memorpaĝoj (paĝaj misfunkciadoj). Ekzemple, la uzo de grandaj volumoj ebligis redukti la kernan remuntan tempon je 5% (dum reduktante la tempon pasigitan ĉe la kernnivelo je 40%).
- La parametro TRANSPARENT_HUGEPAGE_NEVER estis aldonita al la agorda dosiero de la kerno, ebligante malŝalti la uzon de Travideblaj Grandegaj Paĝoj.
- La sistemvoko userfaultfd(), kiu ebligas krei prizorgilojn por aliri neasignitajn memorpaĝojn (paĝaj faŭltoj) en uzantspaco, aldonis la operacion UFFDIO_MOVE, kiu ebligas, dum amaskompaktado, movi memorpaĝojn en la virtuala adresspaco sen farante memorpaĝan asignooperacion. En la testoj faritaj, la uzo de UFFDIO_MOVE permesis al ni redukti paktempon je 40% kompare kun uzado de la operacio UFFDIO_COPY.
- Meĥanismo "KSM-konsilisto" estis aldonita, kiu permesas vin aŭtomate optimumigi la parametrojn de la subsistemo por kunfandi identajn memorpaĝojn (KSM - Kernel Samepage Merging).
- Daŭra migrado de ŝanĝoj de la branĉo Rust-por-Linukso rilataj al la uzo de la Rust-lingvo kiel dua lingvo por evoluigado de ŝoforoj kaj kernaj moduloj (Rusto-subteno ne estas aktiva defaŭlte, kaj ne kondukas al la inkludo de Rust inter la postulataj asembleaj dependecoj por la kerno). La nova versio inkluzivas ŝanĝojn, kiuj aldonas Rust-envolvaĵon super la phylib abstrakta nivelo kaj la ax88796b_rust-ŝoforo kiu uzas ĉi tiun envolvaĵon, provizante subtenon por la PHY-interfaco de la Asix AX88772A (100MBit) Ethernet-regilo. Koncerne funkciecon, la Rust-ŝoforo estas tute ekvivalenta al la malnova ax88796b-ŝoforo, skribita en C, kaj povas esti uzata kun X-Surf 100 retkartoj ekipitaj per la AX88796B-peceto. Por la arkitekturo LoongArch, eblas skribi modulojn en la Rust-lingvo. La transiro al uzado de la eldono de Rust 1.74.1 estis farita.
- BPF-ĵeton-mekanismo estis aldonita, kiu ebligas al vi selekteme delegi la prilaboradon de iuj BPF-kapabloj, kiel ŝarĝi BPF-programon aŭ krei BPF-mapon, al senprivilegiaj procezoj en uzantspaco, kies valideco estas konfirmita per speciala ĵetono.
- La funkcieco de la BPF programkontrolilo estis vastigita.
- La perf-utilo aldonis subtenon por datuma profilado, kiu ebligas al vi spuri legadon kaj skribadon al datumstrukturoj, ekzemple, por identigi la plej aktive modifitajn kampojn en la strukturoj. Sur sistemoj kun procesoroj kiuj subtenas kolekti informojn pri memoroperacioj (Intel, AMD, ARM), vi devus uzi la komandon "perf mem record" por amasigi statistikojn, kaj "perf annotate -data-type" por montri raporton pri aliroj al datumoj. strukturoj.
- La agado de sistemvoka prilaborado sur la s390 (IBM Z) arkitekturo estis optimumigita, kiu en testoj kaŭzis akcelon de sistemvoka eniro je proksimume 11%.
- La kapablo ŝanĝi la grandecon de spurbufroj uzitaj por bufri informojn pri spurokazaĵoj elsenditaj al uzantspaco estis disponigita.
- La antaŭe malrekomendita SLAB-memor-asigna mekanismo estis forigita, anstataŭigante kiun la kerno nun uzas nur SLUB. La kialoj cititaj estas prizorgaj problemoj, problemoj en la kodo kaj duobligo de funkcieco kun la pli progresinta SLUB-asignilo.
- Dum konstruado de la kerno, la flago "-Wmissing-prototypes" estas ebligita, kiu generas avertojn por vokoj al tutmondaj funkcioj kiuj ne havas prototipan difinon.
- Por la RISC-V-arkitekturo sur sistemoj kiuj subtenas la SUSP SBI-etendaĵon, subteno por enirado de ŝancatendoreĝimo kun ŝtatŝparado en RAM estis efektivigita. Provizis la kapablon uzi la sistemvokon riscv_hwprobe() por akiri informojn pri subtenataj etendaĵoj al la arkitekturo de instrukcioj de RISC-V.
- Virtualigo kaj Sekureco
- Aldonitaj novaj sistemaj alvokoj lsm_list_modules(), lsm_get_self_attr() kaj lsm_set_self_attr() por listigi ŝarĝitajn LSM-modulojn (Linuksaj Sekurec-Moduloj) kaj akiri/starigi LSM-modulajn atributojn. Nova lsm_ctx strukturo estis aldonita por komunikado en la LSM-kunteksto inter uzantspaco kaj la kerno.
- La AppArmor-subsistemo estis ŝanĝita al uzado de la SHA-256-algoritmo por konfirmo de reguloj, anstataŭe de SHA-1-haŝiŝoj.
- La efektivigo de la funkcio strlcpy(), kiu estis inkluzivita en la Glibc 3.38 C-biblioteko somere, estis forigita de la kerno. Strlcpy estas alternativo al la funkcio strncpy(), kiu enhavas bufran superfluan protekton kaj ĉiam starigas la postan nulan bajton.
- En la hipervizoro KVM Subteno estis aldonita por la subsistemo guest_memfd (gast-unua memoro), kiu provizas memoradministradajn funkciojn, kiuj ebligas funkciojn kaj optimumigojn neatingeblajn per la ĝenerala subsistemo de memoradministrado. Ekzemple, guest_memfd permesas la asignon kaj mapadon de memoro neatingebla por la gasta sistemo, kiu povas esti uzata por konfidenca komputado.
- Por gastsistemoj funkciantaj la KVM-hipervizieron, subteno estas ebligita por la LAM (Linear Address Masking) reĝimo disponigita en Intel-procesoroj, kiu permesas uzi parton de la bitoj de 64-bitaj montriloj (de 57 ĝis 62 bitoj) por stoki metadatenojn ne rilatajn al. alparolado.
- La KVM-hiperviziero por sistemoj bazitaj sur la ARM64-arkitekturo aldonis subtenon por 52-bitaj (LPA2) fizikaj adresoj. Por sistemoj kun x86-arkitekturo, estas eble konstrui sen kopii Hyper-V-hipervokojn, kio permesas redukti la grandecon de la kerno.
- La iaa (IAA Compression Accelerator) ŝoforo estis aldonita por akceli datumkunpremadon kaj malkunpremadon uzante la DEFLATE-metodon, uzante la kapablojn de Intel Analytics Accelerator (IAA) kriptografaj akceliloj.
- Flanke de la gastiganto, subteno por la mekanismo Intel TDX (Trusted Domain Extensions) estis efektivigita, kiu ebligas la kreadon de sekuraj gastaj medioj, kiuj utiligas memorĉifradon dum uzado de la KVM-hipervizoro. virtualaj maŝinoj.
- SELinux aldonis la "init" SID por identigi startprocezojn kiuj estis komencitaj antaŭ ol SELinux-politikoj estis aplikitaj. Plibonigita /sys/fs/selinux interfaco por administri SELinux.
- Reta subsistemo
- Malaltnivela reorganizado de la subestaj retdatumstrukturoj estis aranĝita por plibonigi kaŝmemorefikecon. Antaŭe, kampoj en la ŝtrumpetoj, netdev, netns, kaj mibs retaj stakstrukturoj estis aranĝitaj kiam ili estis aldonitaj, kio limigis la uzon de la procesorkaŝmemoro. La revizio de la lokigo de variabloj en strukturoj kaŭzis rimarkindan pliiĝon en TCP-rapideco, danke al minimumigo de la uzo de kaŝmemorlinioj ĉe la datumtransiga stadio kaj optimumigado de aliro al variabloj. En kazoj kie multoblaj paralelaj TCP-konektoj estas prilaboritaj, la akcelo povas atingi 40%.
- La bpfilter-subsistemo, kiu uzas BPF por filtri pakaĵetojn, estis forigita. Bpfilter estis ekspedita ekde eldono 4.18, sed neniam estis evoluigita al nivelo taŭga por ĝeneraligita uzo. En la lastaj jaroj, la bpfilter-kodo ne estis evoluigita en la kerno, kaj evoluo daŭris de Facebook en hotela deponejo.
- Ekipaĵo
- La pako inkluzivas novan drm-ŝoforon (Direct Rendering Manager) Xe por GPU-oj bazitaj sur la arkitekturo Intel Xe, kiu estas uzata en videokartoj de la familio Intel Arc kaj integraj grafikaĵoj, komencante per procesoroj de Tiger Lake. La Xe-ŝoforo estas poziciigita kiel la bazo por funkcii novajn blatojn, sen esti ligita al la kodo por subteni pli malnovajn platformojn. La ŝoforo estas konstruita uzante novan arkitekturon kiu faras pli grandan uzon de ekzistantaj DRM-subsistemkomponentoj, same kiel senmarkajn i915-ŝoforkomponentojn kiuj ne estas ligitaj al specifaj GPUoj, kiel ekzemple ekraninteragadkodo, memormodelo, kaj execbuf-efektivigo. En Mesa, ruli OpenGL kaj Vulkan aldone al la Xe-ŝoforo estas efektivigita per ŝanĝoj faritaj al la ekzistantaj Mesa Iris kaj ANV-ŝoforoj.
- En la i915-ŝoforo, laboro daŭre efektivigi subtenon por Intel LunarLake (Xe 2) blatoj. Plibonigita subteno por Intel Meteor Lake-fritoj.
- La Nouveau-ŝoforo estas agordita por uzi GSP-firmvarfunkciojn defaŭlte por labori kun NVIDIA GPU-oj bazitaj sur la Turing kaj Ampere-mikroarkitekturoj, en kiuj GPU-inicialigo kaj kontroloperacioj estas faritaj per aparta GSP-mikroregilo (GPU System Processor). Kiam la agordo estas ebligita, la ŝoforo funkcios per aliro al la firmvaro, anstataŭ rekte programi operaciojn por interagi kun la ekipaĵo.
- La AMDGPU-ŝoforo inkluzivas subtenon por ACPI WBRF kaj VPE DPM, la prilaborado de PCIe-kanala rapideco estis ŝanĝita, 64-bitaj sinsekvaj nombroj estas uzataj en la atendovicoj uzataj por sinkronigado, subteno por AMD-specifaj koloradministradmekanismoj estis aldonita, kaj la problemo pri ŝanĝado al dormreĝimo estis solvita.
- Aldonita komenca efektivigo de ŝoforo por Broadcom VideoCore 7.1 GPU uzata en Raspberry Pi 5-tabuloj.
- Aldonita pelilo por PowerVR 6-serio GPU-oj bazitaj sur Rogue-mikroarkitekturo de Imagination Technologies.
- Aldonita subteno por Thunderbolt/USB4-regiloj integritaj en blatoj bazitaj sur Intel Lunar Lake mikroarkitekturo.
- Aldonitaj ŝoforoj por fotiloj uzataj en SoC Starfive, GalaxyCore GC2145/GC0308, Chips&Media Wave kaj THine THP7312.
- Aldonita subteno por NSO (Nintendo Switch Online) ludregiloj - variantoj de malnovaj regiloj de SNES (Super Nintendo), Genesis kaj N64 (Nintendo 64), adaptitaj por Nintendo Switch. Aldonita pelilo por Adafruit Seesaw ludpads. Subteno por Lenovo Legion Go-regiloj estis aldonita al la xpad-ŝoforo.
- La dts-ŝoforo nun subtenas videoludadaparatojn Powkiddy RK2023, Powkiddy X55 kaj Anbernic RG351V.
- Aldonita subteno por sonsistemoj uzataj en NXP i.MX8m MICFIL, Qualcomm SM8250, AMD ACP5x, Intel Arrow Lake, SM8550, SM8650 kaj X1E80100-blatoj.
- AMD faris ŝanĝojn rilate al subteno por la estonta serio de procesoroj bazitaj sur la nova mikroarkitekturo Zen 5.
- Aldonita subteno por ARM64 SoC: Qualcomm SM8650 (Snapdragon 8 Gen 3), Qualcomm X1E80100 (Snapdragon X Elite), Samsung Exynos Auto v920, Google GS101 (Tensor G1), MediaTek MT8188 kaj Unisoc UMS9620 (Tanggula).
- Aldonita subteno por ARM-tabuloj kaj aparatoj: Huashan Pi, Microsoft Lumia, HTC One Mini 2, Motorola MotoG 4G, Huawei Honor 5X/GR5, Anbernic RG351V, Powkiddy RK2023, Powkiddy X55, ComXpress bazita sur Marvell CN913x, Lenovo Chromebook, Asus kaj Acer surbaze de Mediatek MT8183, Toradex Verdin AM62, tabuloj bazitaj sur Allwinner H616/H618.
- Subteno por ARM11 ARMv6K SMP-procesoroj estis nuligita.
Samtempe, Latin American Free Software Foundation formis version de la tute libera kerno 6.8 - Linukso-libre 6.8-gnu, malplenigita de elementoj de firmware kaj ŝoforoj enhavantaj proprietajn komponentojn aŭ sekciojn de kodo, kies amplekso estas limigita de la fabrikanto. En eldono 6.8, la blob-purigadkodo en diversaj ŝoforoj kaj subsistemoj estis ĝisdatigita. Intel qat_420xx, Imagination PowerVR, Intel Xe, Chips&Media Wave5, Intel VSC, Aquantia PHY kaj Realtek rtw8922a ŝoforoj estis purigitaj. Pro forigo de la kerno, purigado de la ŝoforoj atmel, hermes, orinoco_usb, libertas_cs kaj zd1201 estis ĉesigita. Purigis blobnomojn en dts-dosieroj (devicetree) por ARM kaj Aarch64-arkitekturoj. Problemoj pri purigado de la i915-ŝoforo estis solvitaj.
fonto: opennet.ru
