Linux 5.9 -ytimen julkaisu

Kahden kuukauden kehitystyön jälkeen Linus Torvalds toimitettu ytimen julkaisu Linux 5.9. Merkittävimpiä muutoksia: symbolien tuonnin rajoittaminen omistetuista moduuleista GPL-moduuleihin, kontekstin vaihtotoimintojen nopeuttaminen FSGSBASE-prosessorin käskyn avulla, tuki ytimen kuvan pakkaamiseen Zstd:llä, säikeiden priorisoinnin uudelleenkäsittely ytimessä, tuki PRP:lle. (Parallel Redundancy Protocol) , kaistanleveystietoinen ajoitus määräajan ajoittimessa, muistisivujen ennakoiva pakkaus, ominaisuuslippu CAP_CHECKPOINT_RESTOR, close_range()-järjestelmäkutsu, dm-crypt-suorituskykyparannukset, koodin poisto 32-bittisille Xen PV -vieraille, uusi levymuisti hallintamekanismi, vaihtoehto "rescue" Btrfs:ssä, tuki sisäiselle salaukselle ext4:ssä ja F2FS:ssä.

Uusi versio sisältää 16074 korjausta vuoden 2011 kehittäjiltä,
korjaustiedoston koko - 62 Mt (muutokset vaikuttivat 14548 tiedostoon, 782155 koodiriviä lisättiin, 314792 riviä poistettiin). Noin 45 % kaikista 5.9
muutokset liittyvät laiteajureihin, noin 15 % muutoksista on
asenne laitteistoarkkitehtuurikohtaisen koodin päivittämiseen, 13 %
liittyvät verkkopinoon, 3 % tiedostojärjestelmiin ja 3 % sisäisiin
ytimen alijärjestelmät.

Pääasiallinen innovaatioita:

  • Muisti- ja järjestelmäpalvelut
    • Kiristetty Suojaus GPL-tasojen käytöltä omistettujen ohjainten linkittämiseen ytimen komponentteihin, jotka viedään vain GPL-lisenssin alaisia ​​moduuleja varten. Lippu TAINT_PROPRIETARY_MODULE on nyt peritty kaikissa moduuleissa, jotka tuovat symboleja tällä lipulla varustetuista moduuleista. Jos GPL-moduuli yrittää tuoda symboleja ei-GPL-moduulista, tämä GPL-moduuli perii TAINT_PROPRIETARY_MODULE-tunnisteen eikä voi käyttää ytimen komponentteja, jotka ovat saatavilla vain GPL-lisensoiduille moduuleille, vaikka moduuli olisi aiemmin tuonut symboleja "gplonly"-luokka. Käänteinen lukitus (vain EXPORT_SYMBOL_GPL:n vienti moduuleissa, jotka tuovat EXPORT_SYMBOL_GPL:n), joka voi keskeyttää omien ohjainten toiminnan, ei ole käytössä (vain oma moduulin lippu peritään, mutta ei GPL-sidoksia).
    • lisätty kcompactd-moottorin tuki muistisivujen esipakkaus taustalla lisätäksesi ytimen käytettävissä olevien suurten muistisivujen määrää. Alustavien arvioiden mukaan taustapakkaus minimaalisen yleiskustannuksella voi vähentää viiveitä suurten muistisivujen varaamisessa (huge-page) 70-80 kertaa verrattuna aiemmin käytettyyn pakkausmekanismiin, joka käynnistetään tarpeen tullen (on-demand). ). Kcompactdin tarjoaman ulkoisen pirstoutumisen rajat asetetaan lisättynä sysctl vm.compaction_proactiveness.
    • lisätty tuki ytimen kuvan pakkaamiseen algoritmilla Zstandardi (zstd).
    • Prosessoriohjeiden tuki on otettu käyttöön x86-järjestelmissä FSGSBASE, jonka avulla voit lukea ja muuttaa FS/GS-rekisterien sisältöä käyttäjätilasta. Ytimessä FSGSBASEa käytetään nopeuttamaan kontekstin vaihtotoimintoja poistamalla tarpeettomat MSR-kirjoitustoiminnot GSBASE:lle, ja käyttäjätilassa se välttää tarpeettomia järjestelmäkutsuja FS/GS:n vaihtamiseksi.
    • lisättyä "allow_writes" -parametrilla voit estää prosessorin MSR-rekisterien muuttamisen käyttäjätilasta ja rajoittaa pääsyn näiden rekisterien sisältöön lukutoimintoihin, koska MSR:n muuttaminen voi johtaa ongelmiin. Oletuksena kirjoittamista ei ole vielä poistettu käytöstä, ja MSR:n muutokset näkyvät lokissa, mutta jatkossa oletuskäyttö on tarkoitus vaihtaa vain luku -tilaan.
    • Asynkroniseen I/O-liitäntään io_uring Lisätty täysi tuki asynkronisille puskuroiduille lukutoiminnoille, jotka eivät vaadi ytimen säikeitä. Nauhoitustukea odotetaan tulevassa julkaisussa.
    • I/O-aikataulun määräajassa toteutettu kapasiteettiin perustuva suunnittelu, sallimalla tehdä oikeita päätöksiä epäsymmetrisissä järjestelmissä, kuten ARM-pohjaisissa järjestelmissä DynamIQ ja big.LITTLE, jotka yhdistävät tehokkaat ja vähemmän tehokkaat energiatehokkaat CPU-ytimet yhdessä sirussa. Erityisesti uuden tilan avulla voit välttää aikataulutuserot, kun hitaalla suorittimen ytimellä ei ole tarvittavia resursseja suorittaakseen tehtävää ajoissa.
    • Ytimen energiankulutusmalli (Energy Model -kehys) on nyt kuvaa ei vain suorittimen virrankulutus, vaan myös oheislaitteet.
    • close_range()-järjestelmäkutsu on toteutettu sallimaan prosessin sulkea koko joukon avoimia tiedostokuvauksia kerralla.
    • Tekstikonsolin ja fbcon-ohjaimen toteutuksesta koodi poistettu, joka tarjoaa mahdollisuuden vierittää tekstiä ohjelmallisesti taaksepäin (CONFIG_VGACON_SOFT_SCROLLBACK) enemmän kuin VGA-tekstitilan videomuistin verran.
    • Uudelleentyöstetty Algoritmi prioriteettien määrittämiseksi ytimen säikeille. Uusi vaihtoehto tarjoaa paremman johdonmukaisuuden kaikissa ytimen alijärjestelmissä määritettäessä prioriteetteja reaaliaikaisille tehtäville.
    • Lisätty sysctl sched_uclamp_util_min_rt_default ohjata suorittimen tehostusasetuksia reaaliaikaisia ​​tehtäviä varten (voit esimerkiksi muuttaa reaaliaikaisten tehtävien käyttäytymistä lennossa säästääksesi virtaa akkukäyttöön vaihtamisen jälkeen tai mobiilijärjestelmissä).
    • Transparent Huge Pages -teknologian tuen käyttöönottoa sivun välimuistissa on valmisteltu.
    • Fanotify-moottori ottaa käyttöön uudet liput FAN_REPORT_NAME ja FAN_REPORT_DIR_FID raportoimaan ylätason nimen ja yksilölliset FID-tiedot, kun hakemistokohteiden ja muiden kuin hakemistoobjektien luonti-, poisto- tai siirtotapahtumia tapahtuu.
    • c-ryhmille toteutettu uusi laattamuistiohjain, joka on huomionarvoinen laattakirjanpidon siirtämisessä muistisivutasolta ytimen objektitasolle, mikä mahdollistaa slab-sivujen jakamisen eri c-ryhmissä sen sijaan, että kullekin cryhmälle varattaisiin erillisiä laattavälimuistia. Ehdotettu lähestymistapa mahdollistaa slab:n käytön tehokkuuden lisäämisen, laatalle käytetyn muistin koon pienentämisen 30-45%, vähentää merkittävästi ytimen kokonaismuistin kulutusta ja vähentää muistin pirstoutumista.
    • Äänen alijärjestelmässä ALSA и USB-pino, mukaisesti äskettäin hyväksytty suosituksia kattavan terminologian käytöstä Linux-ytimessä, poliittisesti epäkorrektit termit siivottiin. Koodi on poistettu sanoista "orja", "isäntä", "musta lista" ja "valkoinen lista".
  • Virtualisointi ja turvallisuus
    • Kun rakennetaan ydin Clang-kääntäjällä ilmestyi kyky määrittää (CONFIG_INIT_STACK_ALL_ZERO) automaattinen alustus nollaksi kaikista pinoon tallennetuista muuttujista (määritä rakentaessasi "-ftrivial-auto-var-init=zero").
    • Kun seccomp-alijärjestelmässä käytetään prosessinohjaustilaa käyttäjätilassa, lisätty tilaisuus tiedostokuvaajien korvaaminen valvotussa prosessissa, jotta voidaan emuloida täysin järjestelmäkutsuja, jotka johtavat tiedostokuvaajien luomiseen. Toiminnalle on kysyntää eristetyissä konttijärjestelmissä ja Chromen hiekkalaatikkototeutuksissa.
    • Xtensa- ja csky-arkkitehtuureihin on lisätty tuki järjestelmäkutsujen rajoittamiseen seccomp-alijärjestelmän avulla. xtensalle on lisäksi otettu käyttöön tuki tarkastusmekanismille.
    • lisättyä uusi ominaisuuslippu CAP_CHECKPOINT_RESTORE, jonka avulla voit tarjota pääsyn prosessien jäädyttämiseen ja tilan palauttamiseen liittyviin ominaisuuksiin ilman lisäoikeuksien siirtämistä.
    • GCC 11 tarjoaa kaikki tarvitsemasi ominaisuudet
      virheenkorjaustyökalu KCSAN (Kernel Concurrency Sanitizer), joka on suunniteltu havaitsemaan dynaamisesti kilpailuolosuhteet ytimessä. Siten KCSANia voidaan nyt käyttää GCC:ssä rakennettujen ytimien kanssa.

    • AMD Zenille ja uudemmille CPU-malleille lisätty tuki P2PDMA-teknologialle, jonka avulla voit käyttää DMA:ta suorassa tiedonsiirrossa kahden PCI-väylään kytketyn laitteen muistin välillä.
    • dm-cryptiin on lisätty tila, jonka avulla voit vähentää latenssia suorittamalla salaustietojen käsittelyä ilman työjonoja. Tämä tila on tarpeen myös oikean toiminnan kannalta kaavoitettu lohkolaitteet (laitteet, joiden alueet on kirjoitettava peräkkäin, päivittämällä koko lohkoryhmän). Työtä on tehty dm-crypt:n suorituskyvyn lisäämiseksi ja latenssin vähentämiseksi.
    • Poistettu koodi, joka tukee 32-bittisiä vieraita, jotka toimivat paravirtualisointitilassa ja käyttävät Xen-hypervisoria. Tällaisten järjestelmien käyttäjien tulee siirtyä käyttämään 64-bittisiä ytimiä vierasympäristöissä tai käyttämään täysiä (HVM) tai yhdistettyjä (PVH) virtualisointitiloja paravirtualisoinnin (PV) sijasta ympäristöjen suorittamiseen.
  • Levyalijärjestelmä, I/O ja tiedostojärjestelmät
    • Btrfs-tiedostojärjestelmässä toteutettu "rescue"-asennusvaihtoehto, joka yhdistää pääsyn kaikkiin muihin palautusvaihtoehtoihin. "alloc_start"- ja "subvolrootid"-vaihtoehtojen tuki on poistettu, ja vaihtoehto "inode_cache" on poistettu käytöstä. Suorituskykyä on optimoitu, mikä on erityisesti nopeuttanut fsync()-operaatioiden suorittamista huomattavasti. lisätty kyky käyttää muita vaihtoehtoisia tarkistussummia kuin CRC32c.
    • lisätty mahdollisuus käyttää sisäistä salausta (Inline Encryption) ext4- ja F2FS-tiedostojärjestelmissä, mikä mahdollistaa "inlinecrypt" -liitosvaihtoehdon. Inline-salaustilassa voit käyttää taajuusmuuttajan ohjaimeen sisäänrakennettuja salausmekanismeja, jotka läpinäkyvästi salaavat ja purkaa sisääntulon/ulostulon.
    • XFS:ssä turvattu inode reset (huuhtele) täysin asynkronisessa tilassa, joka ei estä prosesseja suoritettaessa muistin puhdistustoimintoa. Ratkaistiin pitkään jatkunut kiintiöongelma, joka aiheutti soft limit- ja inode limit -varoitusten virheellisen seurannan. DAX-tuen yhtenäinen toteutus ext4:lle ja xfs:lle.
    • Ext4:ssä toteutettu esilataa lohkon varausbittikartat. Yhdessä alustamattomien ryhmien tarkistuksen rajoittamisen kanssa optimointi lyhensi erittäin suurten osioiden asentamiseen tarvittavaa aikaa.
    • F2FS:ssä lisätty ioctl F2FS_IOC_SEC_TRIM_FILE, jonka avulla voit käyttää TRIM/hylkää-komentoja tiedoston tiettyjen tietojen fyysiseen nollaamiseen, esimerkiksi pääsyavaimien poistamiseen jättämättä asemaan jäännöstietoja.
      Myös F2FS:ssä lisätty uusi roskankeruutila GC_URGENT_LOW, joka toimii aggressiivisemmin poistamalla jotkin lepotilan tarkastukset ennen roskakeräimen käynnistämistä.

    • Bcachessa laajuuksien bucket_size-arvoa on nostettu 16 bitistä 32 bittiin valmisteltaessa vyöhyketettyjen laitevälimuistien mahdollistamista.
    • SCSI-alijärjestelmään on lisätty mahdollisuus käyttää sisäistä salausta, joka perustuu UFS-ohjainten tarjoamaan sisäänrakennettuun laitteistosalaukseen (Yleinen Flash-tallennus).
    • Uusi ytimen komentoriviparametri "debugfs" on lisätty, jonka avulla voit hallita samannimisen pseudo-FS:n saatavuutta.
    • NFSv4.2-asiakasohjelma tukee laajennettuja tiedostomääritteitä (xattr).
    • dm-pölyssä lisätty käyttöliittymä, joka näyttää kerralla luettelon kaikista tunnistetuista huonoista lohkoista levyllä ("dmsetup message dust1 0 listbadblocks").
    • Md/raid5:lle /sys/block/md1/md/stripe_size-parametri on lisätty STRIPE-lohkon koon määrittämiseksi.
    • NVMe-tallennuslaitteille lisätty tuki aseman kaavoituskomentoille (ZNS, NVM Express Zoned Namespace), jonka avulla voit jakaa tallennustilan vyöhykkeisiin, jotka muodostavat lohkoryhmiä, jotta voit hallita täydellisemmin tietojen sijoittamista asemaan.
  • Verkkoalijärjestelmä
    • Netfilterissä lisätty kyky hylätä paketit vaiheessa ennen reititystarkistusta (REJECT-lauseketta voidaan nyt käyttää INPUT-, FORWARD- ja OUTPUT-ketjujen lisäksi myös PREROUTING-vaiheessa icmp:lle ja tcp:lle).
    • nftablesissa lisätty kyky tarkastaa konfiguraatiomuutoksiin liittyviä tapahtumia.
    • Netlink API:n nftablesissa lisätty tuki anonyymeille ketjuille, joiden nimen ydin määrittää dynaamisesti. Kun poistat anonyymiin ketjuun liittyvän säännön, itse ketju poistetaan automaattisesti.
    • BPF lisää tuen iteraattoreille, jotka voivat kulkea, suodattaa ja muokata assosiatiivisten taulukoiden (karttojen) elementtejä kopioimatta tietoja käyttäjätilaan. Iteraattoreita voidaan käyttää TCP- ja UDP-socketeille, jolloin BPF-ohjelmat voivat iteroida avoimien vastakkeiden luetteloita ja poimia niistä tarvitsemansa tiedot.
    • Lisätty uudentyyppinen BPF-ohjelma BPF_PROG_TYPE_SK_LOOKUP, joka käynnistetään, kun ydin etsii sopivaa kuunteluliitäntää tulevalle yhteydelle. Tällaista BPF-ohjelmaa käyttämällä voit luoda käsittelijöitä, jotka tekevät päätökset siitä, mihin pistorasiaan yhteys tulee liittää ilman, että bind()-järjestelmäkutsu rajoita niitä. Voit esimerkiksi liittää yhden pistorasian useisiin osoitteisiin tai portteihin. Lisäksi bpf_setsockopt()-tiedostoon on lisätty tuki SO_KEEPALIVE-lipulle ja mahdollisuus asentaa BPF_CGROUP_INET_SOCK_RELEASE-käsittelijöitä, joita kutsutaan, kun pistoke vapautetaan, on otettu käyttöön.
    • Protokollatuki toteutettu PRP (Parallel Redundancy Protocol), joka mahdollistaa Ethernet-pohjaisen kytkennän varakanavalle, joka on läpinäkyvä sovelluksille, jos verkkokomponentit eivät toimi.
    • Pino mac80211 lisätty tuki nelivaiheiselle WPA/WPA2-PSK-kanavan neuvottelulle tukiasematilassa.
    • Lisätty mahdollisuus vaihtaa qdisc (jonokuri) -ajastin käyttämään FQ-PIE (Flow Queue PIE) -verkkojononhallintaalgoritmia oletusarvoisesti. Sen tarkoituksena on vähentää pakettien välipuskuroinnin negatiivista vaikutusta reunaverkkolaitteisiin (bufferbloat) verkoissa, joissa on kaapelimodeemit.
    • MPTCP:hen (MultiPath TCP) on lisätty uusia ominaisuuksia, TCP-protokollan laajennuksia TCP-yhteyden toiminnan järjestämiseen ja pakettien toimittamiseen samanaikaisesti useaa reittiä pitkin eri IP-osoitteisiin liittyvien eri verkkorajapintojen kautta. Lisätty tuki syn-evästeille, DATA_FIN:lle, puskurin automaattiselle viritykselle, socket-diagnostiikalle ja REUSEADDR-, REUSEPORT- ja V6ONLY-lippuille setsockoptissa.
    • Virtuaalisille reititystaulukoille VRF (Virtual Routing and Forwarding), jotka mahdollistavat useamman reititysalueen toiminnan järjestämisen yhdessä järjestelmässä, on toteutettu "tiukka"-tila. Tässä tilassa virtuaalitaulukko voidaan liittää vain reititystaulukkoon, jota ei käytetä muissa virtuaalitaulukoissa.
    • Langaton ajuri on ath11k lisätty tukee 6 GHz taajuutta ja spektrinen skannaus.
  • Оборудование
    • Poistettu koodi, joka tukee UniCore-arkkitehtuuria, kehitettiin Pekingin yliopiston Microprocessor Centerissä ja sisällytettiin Linux-ytimeen vuonna 2011. Tätä arkkitehtuuria ei ole ylläpidetty vuodesta 2014, eikä sillä ole tukea GCC:ssä.
    • Tuki RISC-V-arkkitehtuurille on otettu käyttöön kcov (debugfs-liittymä ytimen koodin kattavuuden analysointiin), kmemleak (muistivuotojen havaitsemisjärjestelmä), pinosuojaus, hyppymerkit ja tickless toiminnot (monitehtävä ajastinsignaaleista riippumatta).
    • PowerPC-arkkitehtuuriin on otettu käyttöön spinlock-jonojen tuki, mikä on parantanut merkittävästi suorituskykyä lukitusristiriitatilanteissa.
    • ARM- ja ARM64-arkkitehtuureissa prosessorin taajuuden säätömekanismi on oletusarvoisesti käytössä aikataulu (cpufreq Goveror), joka käyttää suoraan tehtävän ajastimen tietoja tehdäkseen päätöksen taajuuden muuttamisesta ja voi välittömästi käyttää cpufreq-ajureita muuttaakseen taajuutta nopeasti säätämällä CPU:n toimintaparametrit välittömästi nykyisen kuormituksen mukaan.
    • Intel-näytönohjainkorttien i915 DRM -ohjain sisältää tuen mikroarkkitehtuuriin perustuville siruille Rakettijärvi ja lisäsi alustavan tuen erillisille korteille Intel Xe DG1.
    • Amdgpu-ohjain lisäsi alkuperäisen tuen AMD GPU:ille Navi 21 (Navy Kampela) ja Navi 22 (Sienna Cichlid). Lisätty tuki UVD/VCE-videon koodaus- ja dekoodauskiihdytysmoottoreille Southern Islands GPU:lle (Radeon HD 7000).
      Lisätty ominaisuus näytön kääntämiseksi 90, 180 tai 270 astetta.

      Mielenkiintoista, ajuri AMD GPU: lle on ytimen suurin ohjain - siinä on noin 2.71 miljoonaa koodiriviä, mikä on noin 10% ytimen kokonaiskoosta (27.81 miljoonaa riviä). Samaan aikaan 1.79 miljoonaa riviä vastaavat automaattisesti luoduista otsikkotiedostoista, joissa on tietoja GPU-rekistereille, ja C-koodi on 366 tuhatta riviä (vertailun vuoksi Intel i915 -ohjain sisältää 209 tuhatta riviä ja Nouveau - 149 tuhatta riviä).

    • Nouveaun kuljettajassa lisätty tuki kehys kehykseltä eheyden tarkistukseen käyttämällä CRC (Cyclic Redundancy Checks) NVIDIA GPU -näyttömoottoreissa. Toteutus perustuu NVIDIA:n toimittamiin asiakirjoihin.
    • Lisätyt ajurit LCD-paneeleille: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 ja XBD599da.
    • ALSA-äänialijärjestelmä tukee Intel Silent Stream (jatkuva virrankäyttö ulkoisille HDMI-laitteille, jotta vältetään viive toiston alkaessa) ja uusi laite ohjata mikrofonin aktivointi- ja mykistyspainikkeiden valaistusta sekä lisätty tuki uusille laitteille, mukaan lukien ohjain Longson 7A1000.
    • Lisätty tuki ARM-korteille, laitteille ja alustoille: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (käytetään Sony Xperia 10:ssä, 10 Plus:ssa, XA2 Plus:ssa ja XA2A:ssa, X2A Ultra), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, viisi uutta NXP i.MX6:een perustuvaa korttia, MikroTik RouterBoard 3011, Xiaomi Libra, Microsoft Lumia 950, Sony Xperia Z5, MStar, Microchip Sparx5, Intel Alpine Keem Bay v3, Renesas RZ/G2H.

Samaan aikaan Latinalaisen Amerikan Free Software Foundation muodostettu
вариант täysin ilmainen kernel 5.9 - Linux-vapaa 5.9-gnu, puhdistettu laiteohjelmistosta ja ajurielementeistä, jotka sisältävät ei-vapaita komponentteja tai koodiosia, joiden laajuutta valmistaja rajoittaa. Uusi julkaisu poistaa blob-latauksen käytöstä WiFi rtw8821c:n ja SoC MediaTek mt8183:n ohjaimissa. Päivitetty blob-puhdistuskoodi Habanalabs-, Wilc1000-, amdgpu-, mt7615-, i915 CSR-, Mellanox mlxsw- (Spectrum3), r8169- (rtl8125b-2)- ja x86-kosketusnäytön ohjaimissa ja alijärjestelmissä.

Lähde: opennet.ru

Lisää kommentti