Linux 5.7 -ytimen julkaisu

Kahden kuukauden kehitystyön jälkeen Linus Torvalds toimitettu ytimen julkaisu Linux 5.7. Merkittävimpiä muutoksia: uusi exFAT-tiedostojärjestelmän toteutus, bareudp-moduuli UDP-tunneleiden luomiseen, ARM64:n osoittimen todentamiseen perustuva suojaus, mahdollisuus liittää BPF-ohjelmia LSM-käsittelijöihin, Curve25519:n uusi toteutus, split- lukkotunnistin, BPF-yhteensopivuus PREEMPT_RT:n kanssa, koodin 80 merkin rivikoon rajoituksen poistaminen, prosessorin lämpötilan osoittimien huomioon ottaminen tehtävän ajastimessa, kyky käyttää clone():ta prosessien synnyttämiseen toisessa cryhmässä, suojaus kirjoittamista vastaan muistiin käyttämällä userfaultfd:tä.

Uusi versio sisältää 15033 1961 korjausta XNUMX XNUMX kehittäjältä,
korjaustiedoston koko - 39 Mt (muutokset vaikuttivat 11590 tiedostoon, lisätty 570560 koodiriviä,
297401 riviä poistettu). Noin 41 % kaikista 5.7
muutokset liittyvät laiteajureihin, noin 16 % muutoksista on
asenne laitteistoarkkitehtuurikohtaisen koodin päivittämiseen, 13 %
liittyvät verkkopinoon, 4 % tiedostojärjestelmiin ja 4 % sisäisiin
ytimen alijärjestelmät.

Pääasiallinen innovaatioita:

  • Levyalijärjestelmä, I/O ja tiedostojärjestelmät
    • Lisätty uusi exFAT-ohjaintoteutus, perustettu perustuu nykyiseen "sdfat" (2.x) -koodipohjaan, jonka Samsung on kehittänyt Android-älypuhelimilleen. Aiemmin ytimeen lisätty ohjain perustui vanhaan Samsung-koodiin (versio 1.2.9) ja oli suorituskyvyltään noin 10 % jäljessä uudesta ajurista. Muistetaan, että exFAT-tuen lisääminen ytimeen tuli mahdolliseksi Microsoftin jälkeen julkaistu julkisia määrityksiä ja teki exFAT-patentteja rojaltivapaaseen käyttöön Linuxissa.
    • Btrfs toteuttaa uuden ioctl()-komennon - BTRFS_IOC_SNAP_DESTROY_V2, jonka avulla voit poistaa alaosion sen tunnisteen perusteella. Täysi tuki sisäisten laajuuksien kloonaukselle tarjotaan. Uudelleenjakelutoimintojen peruutuspisteiden määrää on lisätty, mikä on vähentänyt pitkiä odotuksia saldon peruutuskomentoa suoritettaessa. Käänteisten linkkien määrittämistä laajuuksiin on nopeutettu (esimerkiksi testiskriptin suoritusaika on lyhentynyt tunnista muutamaan minuuttiin). Lisätty mahdollisuus liittää tiedoston laajuudet puun jokaiseen inodiin. Aliosioihin kirjoitettaessa ja NOCOW:n poissulkemisessa käytetty estomalli on suunniteltu uudelleen. Parannettu fsync-suorituksen tehokkuus alueilla.
    • XFS on parantanut aktiivisten osioiden metatietojen tarkistusta ja fsck:tä. Btree-rakenteiden uudelleenrakentamiseen on ehdotettu kirjastoa, jota käytetään jatkossa xfs_repair-työskentelyyn ja palautusmahdollisuuden toteuttamiseen ilman osion irrottamista.
    • CIFS:ään on lisätty kokeellinen tuki swap-osion sijoittamiselle SMB3-muistiin. Toteutettu POSIX-laajennukset SMB3.1.1-spesifikaatiossa määriteltyyn readdir-tiedostoon. Parannettu kirjoitussuorituskyky 64 kt:n sivuille, kun cache=strict-tila on käytössä ja protokollaversioita 2.1+ käytetään.
    • FS EXT4 on siirretty bmapista ja iopollista iomapin käyttöön.
    • F2FS tarjoaa valinnaisen tuen tietojen pakkaamiseen zstd-algoritmia käyttäen. Pakkaamiseen käytetään oletusarvoisesti LZ4-algoritmia. Lisätty tuki "chattr -c commit" -komennolle. Asennusajan näyttö on toimitettu. Lisätty ioctl F2FS_IOC_GET_COMPRESS_BLOCKS saadaksesi tietoa pakattujen lohkojen määrästä. Lisätty pakkausdatan lähtö statx:n kautta.
    • Ceph-tiedostojärjestelmä on lisännyt mahdollisuuden suorittaa paikallisesti tiedostojen luonti- ja poistotoiminnot (poista linkitys) odottamatta vastausta palvelimelta (työskentely asynkronisessa tilassa). Muutos voi esimerkiksi parantaa merkittävästi suorituskykyä käytettäessä rsync-apuohjelmaa.
    • OVERLAYFS:ään on lisätty mahdollisuus käyttää virtiofeja huipputason tiedostojärjestelmänä.
    • Uudelleenkirjoitettu polun läpikulkukoodi VFS:ssä, symbolisen linkin jäsennyskoodi on muokattu uudelleen ja liitospisteen läpikulku on yhtenäistetty.
    • Scsi-alijärjestelmässä etuoikeutetuille käyttäjille sallittu ZBC-komentojen suorittaminen.
    • Kohdassa dm_writecache toteutettu kyky tyhjentää välimuisti asteittain max_age-parametrin perusteella, joka asettaa lohkon enimmäiskeston.
    • dm_integrityssä lisätty tuki "hävitä"-toiminnolle.
    • In null_blk lisätty tuki virheiden korvaamiselle, jotta voidaan simuloida epäonnistumisia testauksen aikana.
    • lisätty mahdollisuus lähettää udev-ilmoituksia laitteen koon muutoksista.
  • Verkkoalijärjestelmä
    • Netfilter mukana muutokset, mikä nopeuttaa merkittävästi suurten hakuluetteloiden (nftables-joukot) käsittelyä, jotka edellyttävät aliverkkojen, verkkoporttien, protokollien ja MAC-osoitteiden yhdistelmän tarkistamista.
      Optimoinnit tehty nft_set_pipapo (PIle PAcket POLicies) -moduuliin, joka ratkaisee ongelman paketin sisällön sovittamisesta mielivaltaisiin suodatussäännöissä käytettyihin kenttätila-alueisiin, kuten IP- ja verkkoporttialueisiin (nft_set_rbtree ja nft_set_hash manipuloivat intervallien täsmäämistä ja arvojen suoraa heijastusta ). Pipapon versio, joka oli vektorisoitu 256-bittisten AVX2-käskyjen avulla järjestelmässä, jossa oli AMD Epyc 7402 -prosessori, osoitti 420 %:n suorituskyvyn kasvua, kun jäsennettiin 30 tuhatta tietuetta, mukaan lukien porttiprotokollayhdistelmät. Kasvu, kun verrataan aliverkon ja portin numeron yhdistelmää jäsennettäessä 1000 tietuetta, oli 87 % IPv4:llä ja 128 % IPv6:lla.

    • lisättyä bareudp-moduuli, jonka avulla voit kapseloida erilaisia ​​L3-protokollia, kuten MPLS, IP ja NSH, UDP-tunneliin.
    • MPTCP (MultiPath TCP) -komponenttien integrointi on jatkunut TCP-protokollan laajennuksena TCP-yhteyden toiminnan organisoimiseen ja pakettien toimittamiseen samanaikaisesti useaa reittiä pitkin eri verkkorajapintojen kautta, jotka on sidottu eri IP-osoitteisiin.
    • lisätty tuki laitteistokiihdytysmekanismeille Ethernet-kehysten kapseloimiseksi 802.11:een (Wi-Fi).
    • Kun laitetta siirretään verkon nimiavaruudesta toiseen, vastaavien sysf-tiedostojen käyttöoikeuksia ja omistajuutta säädetään.
    • Lisätty mahdollisuus käyttää SO_BINDTODEVICE-lippua muille kuin pääkäyttäjille.
    • Korjausten kolmas osa on hyväksytty, mikä muuntaa ethtool-työkalupaketin ioctl():stä netlink-rajapinnan käyttöön. Uusi käyttöliittymä helpottaa laajennuksien lisäämistä, parantaa virheiden käsittelyä, mahdollistaa ilmoitusten lähettämisen tilan muuttuessa, yksinkertaistaa ytimen ja käyttäjätilan välistä vuorovaikutusta ja vähentää synkronoitavien nimettyjen listojen määrää.
    • Lisätty mahdollisuus käyttää erityisiä laitteistokiihdyttimiä yhteydenseurantatoimintojen suorittamiseen.
    • Netfilterissä lisätty koukku lähtevien pakettien luokittimien yhdistämiseen (ulostulo), joka täydensi aiemmin olemassa olevaa koukkua saapuville paketeille (ingress).
  • Virtualisointi ja turvallisuus
    • Lisätty osoittimen todennuksen laitteistototeutus (Osoittimen todennus), joka käyttää ARM64 CPU:n erikoiskäskyjä suojautuakseen hyökkäyksiltä paluusuuntautuneella ohjelmointitekniikalla (ROP), jossa hyökkääjä ei yritä sijoittaa koodiaan muistiin, vaan toimii konekäskypaloilla, jotka ovat jo saatavilla ladatuissa kirjastoissa, päättyen ohjauksen palautusohjeella. Suojaus perustuu digitaalisten allekirjoitusten käyttämiseen palautusosoitteiden tarkistamiseen ytimen tasolla. Allekirjoitus tallennetaan itse osoittimen käyttämättömiin yläbitteihin. Toisin kuin ohjelmistototeutukset, digitaalisten allekirjoitusten luominen ja tarkistaminen suoritetaan erityisten CPU-ohjeiden avulla.
    • lisätty kyky suojata muistialue kirjoittamiselta userfaultfd()-järjestelmäkutsulla, joka on suunniteltu käsittelemään sivuvirheitä (pääsy varaamattomille muistisivuille) käyttäjätilassa. Ajatuksena on käyttää userfaultfd():tä sekä havaitsemaan kirjoitussuojatuiksi merkittyjen sivujen käyttöoikeusrikkomukset ja kutsumaan käsittelijää, joka voi vastata tällaisiin kirjoitusyrityksiin (esimerkiksi käsitellä muutoksia käynnissä olevien prosessien reaaliaikaisia ​​tilannekuvia luotaessa, tila sieppaus, kun muisti vedetään levylle, toteutetaan jaettu muisti, seurataan muutoksia muistissa). Toiminnallisuus vastaava käyttämällä mprotect()-komentoa yhdessä SIGSEGV-signaalinkäsittelijän kanssa, mutta se toimii huomattavasti nopeammin.
    • SELinux on poistanut käytöstä "checkreqprot"-parametrin, jonka avulla voit poistaa muistisuojauksen tarkistukset käytöstä sääntöjä käsiteltäessä (sallii suoritettavien muistialueiden käytön säännöissä määritetyistä säännöistä riippumatta). Kernfs-symlinkit saavat periä ylätason hakemistojensa kontekstin.
    • Rakenne mukana moduuli KRSI, jonka avulla voit liittää BPF-ohjelmia kaikkiin ytimen LSM-koukkuihin. Muutoksen avulla voit luoda LSM-moduuleja (Linux Security Module) BPF-ohjelmien muodossa tarkastusongelmien ja pakollisen kulunvalvonnan ratkaisemiseksi.
    • Suoritettu Optimoi /dev/random suorituskyvyn ryhmittelemällä CRNG-arvoja sen sijaan, että kutsuisi RNG-käskyjä erikseen. Parannettu getrandom- ja /dev/random-suorituskyky RNG-ohjeita tarjoavissa ARM64-järjestelmissä.
    • Elliptisen käyrän toteutus Curve25519 vaihdettu vaihtoehto kirjastosta HACL, mille annettu muodollisen luotettavuuden todentamisen matemaattinen todiste.
    • lisättyä mekanismi, jolla tiedotetaan vapaasta muistista. Tämän mekanismin avulla vierasjärjestelmät voivat lähettää isäntäjärjestelmään tietoja sivuista, joita ei enää käytetä, ja isäntä voi ottaa sivutiedot takaisin.
    • Vfio/pci:ssä lisätty tuki SR-IOV:lle (Single-Root I/O Virtualization).
  • Muisti- ja järjestelmäpalvelut
    • 80-100 merkkiä lisääntynyt rajoitus lähdetekstien enimmäisrivin pituudelle. Samaan aikaan kehittäjien suositellaan silti pysymään 80 merkin sisällä riviä kohden, mutta tämä ei ole enää kova raja. Lisäksi rivin kokorajoituksen ylittäminen aiheuttaa nyt koontivaroituksen vain, jos tarkistuskorjaus suoritetaan '--strict'-vaihtoehdolla. Muutos mahdollistaa sen, että kehittäjien huomio ei häiritse manipulointi välilyönneillä ja ole vapaampi kohdistettaessa koodia sekä estää liiallinen rivin katkeaminen, häiritsevä koodin ymmärtäminen ja haku.
    • lisätty EFI-sekakäynnistystilan tuki, jonka avulla voit ladata 64-bittisen ytimen 32-bittisestä laiteohjelmistosta, joka toimii 64-bittisessä suorittimessa ilman erityistä käynnistyslatainta.
    • Mukana järjestelmä split-lukkojen tunnistamiseen ja virheenkorjaukseen ("jaettu lukko"), joka ilmenee käytettäessä muistissa olevaa kohdistamatonta dataa, koska atomikäskyä suoritettaessa data ylittää kaksi suorittimen välimuistiriviä. Tällainen esto johtaa merkittävään suorituskykyongelmiin (1000 sykliä hitaampaa kuin atomioperaatio datalle, joka kuuluu yhdelle välimuistiriville). "split_lock_detect" -käynnistysparametrista riippuen ydin voi havaita tällaiset lukot lennossa ja antaa varoituksia tai lähettää SIGBUS-signaalin lukon aiheuttavalle sovellukselle.
    • Tehtävien ajoitusohjelma seuraa lämpötila-antureita (Lämpöpaine) ja toteutettu ottaen huomioon ylikuumeneminen tehtäviä sijoitettaessa. Saatujen tilastojen avulla lämmönsäädin voi säätää suorittimen maksimitaajuutta ylikuumeneessaan, ja tehtävien ajoitus ottaa nyt huomioon laskentatehon pienenemisen, joka johtuu tällaisesta taajuuden pienenemisestä ajoittaessaan tehtäviä suoritettaviksi (aiemmin ajoittaja vastasi muutoksiin taajuudella tietyllä viiveellä, tekemällä jonkin aikaa päätöksiä, jotka perustuvat liioiteltuihin oletuksiin käytettävissä olevista laskentaresursseista).
    • Tehtävien ajoitus sisältää muuttumattomat indikaattorit kuormituksen seuranta, jonka avulla voit arvioida kuorman oikein riippumatta CPU:n nykyisestä toimintataajuudesta. Muutoksen avulla voit ennustaa tarkemmin tehtävien käyttäytymistä jännitteen ja suorittimen taajuuden dynaamisten muutosten olosuhteissa. Esimerkiksi tehtävä, joka kulutti 1/3 suorittimen resursseista 1000 MHz:llä, kuluttaa 2/3 resursseista, kun taajuus putoaa 500 MHz:iin, mikä loi aiemmin väärän oletuksen, että se käy täydellä kapasiteetilla (eli tehtäviä ilmestyi Suurempi ajoittimelle vain vähentämällä taajuutta, mikä johti virheellisiin päätöksiin schedutil cpufreq kuvernöörissä).
    • Intel P-state -ohjain, joka vastaa suorituskykytilojen valinnasta, on vaihdettu käyttöön aikataulu.
    • Mahdollisuus käyttää BPF-alijärjestelmää ytimen ollessa käynnissä reaaliajassa (PREEMPT_RT) on otettu käyttöön. Aikaisemmin, kun PREEMPT_RT oli käytössä, BPF oli poistettava käytöstä.
    • Uusi BPF-ohjelma on lisätty - BPF_MODIFY_RETURN, joka voidaan liittää ytimen funktioon ja muuttaa tämän funktion palauttamaa arvoa.
    • lisätty tilaisuus Clone3()-järjestelmäkutsulla prosessin luominen c-ryhmään, joka eroaa emo-cgroupista, jolloin pääprosessi voi soveltaa rajoituksia ja ottaa kirjanpidon käyttöön välittömästi uuden prosessin tai säikeen synnyttyä. Palvelupäällikkö voi esimerkiksi allokoida uudet palvelut suoraan erillisiin c-ryhmiin, ja uudet prosessit, kun ne sijoitetaan "jäädytettyihin" c-ryhmiin, pysäytetään välittömästi.
    • Kbuildissa lisätty tuki ympäristömuuttujalle "LLVM=1" vaihtaaksesi Clang/LLVM-työkalupakettiin ydintä rakennettaessa. Binutils-version vaatimuksia on nostettu (2.23).
    • Debugfiin on lisätty osio /sys/kernel/debug/kunit/, jossa on kunit-testien tulokset.
    • Lisätty ytimen käynnistysparametri pm_debug_messages (analogisesti /sys/power/pm_debug_messages), joka mahdollistaa virranhallintajärjestelmän toimintaa koskevien virheenkorjaustietojen tulostamisen (hyödyllinen lepotilan ja valmiustilan ongelmien virheenkorjauksessa).
    • Asynkroniseen I/O-liitäntään io_uring tuki lisätty liitos () и atomipuskurin valinta.
    • Parannettu cgroup-profilointi käyttämällä perf-työkalupakkia. Aikaisemmin perf pystyi profiloimaan tehtäviä vain tietyssä c-ryhmässä, eikä se voinut selvittää, mihin c-ryhmään nykyinen näyte kuuluu. perf vastaanottaa nyt cgroup-tiedot jokaisesta näytteestä, jolloin voit profiloida useamman kuin yhden c-ryhmän ja käyttää lajittelua
      cgroup raporteissa.

    • cgroupfs, pseudo-FS cgroups-ryhmien hallintaan, on lisännyt tuen laajennetuille attribuuteille (xattrs), joiden avulla voit esimerkiksi jättää lisätietoa käsittelijöille käyttäjätilaan.
    • cgroup-muistiohjaimessa lisättyja tuki "memory.low"-arvon rekursiiviselle suojaukselle, joka säätelee ryhmän jäsenille tarjottavan RAM-muistin vähimmäismäärää. Kun liitetään cgroup-hierarkia "memory_recursiveprot"-vaihtoehdolla, alemmille solmuille asetettu "memory.low"-arvo jaetaan automaattisesti kaikille alisolmuille.
    • lisättyä Uacce (Unified/User-space-access-inted Accelerator Framework) -kehys virtuaalisten osoitteiden (SVA, Shared Virtual Addressing) jakamiseen prosessorin ja oheislaitteiden välillä, jolloin laitteistokiihdytin pääsee käsiksi pääsuorittimen tietorakenteisiin.
  • Laitteistoarkkitehtuurit
    • ARM-arkkitehtuurissa on otettu käyttöön muistin pikahakumahdollisuus.
    • RISC-V-arkkitehtuuriin on lisätty tuki prosessorien kytkemiselle ja poistamiselle (CPU hotplug). 32-bittiselle RISC-V:lle on otettu käyttöön eBPF JIT.
    • Mahdollisuus käyttää 32-bittisiä ARM-järjestelmiä KVM-vierasympäristöjen suorittamiseen on poistettu.
    • Poistettiin "vale" NUMA-toteutus s390-arkkitehtuurista, jolle ei löydetty käyttötapauksia suorituskyvyn parannuksiin.
    • ARM64:lle lisätty tuki AMU (Activity Monitors Unit) -laajennukselle, joka on määritelty ARMv8.4:ssä ja joka tarjoaa suorituskykylaskurit, joita käytetään taajuuden skaalauskorjauskertoimien laskemiseen tehtäväajoitusohjelmassa.
  • Оборудование
    • lisätty tuki vDPA-laitteille, jotka käyttävät virtio-määritysten mukaista tiedonsiirtokanavaa. vDPA-laitteet voivat olla joko fyysisesti yhdistettyjä laitteita tai ohjelmistoemuloituja virtuaalilaitteita.
    • GPIO-alijärjestelmässä ilmestyi uusi ioctl()-komento muutosten seurantaan, jonka avulla voit ilmoittaa prosessille minkä tahansa GPIO-rivin tilan muutoksista. Esimerkkinä uuden komennon käytöstä ehdotettu gpio-watch-apuohjelma.
    • Intelin näytönohjainten i915 DRM -ohjaimessa mukana oletustuki Tigerlake ("Gen12") -siruille ja lisätty alustava tuki OLED-taustavalon ohjaukselle. Parannettu tuki Ice Lake-, Elkhart Lake-, Baytrail- ja Haswell-siruille.
    • Amdgpu-ohjaimessa lisätty kyky ladata laiteohjelmisto USBC-sirulle ASIC:lle. Parannettu tuki AMD Ryzen 4000 "Renoir" -siruille. Nyt on olemassa tuki OLED-paneelien ohjaamiseen. Tarjottu laiteohjelmiston tilan näyttö debugfeissa.
    • Mahdollisuus käyttää OpenGL 4:ää vierasjärjestelmissä on lisätty VMware-virtualisointijärjestelmien vmwgfx DRM -ohjaimeen (aiemmin OpenGL 3.3 oli tuettu).
    • Lisätty uudet DRM-ohjaintidss TI Keystone -alustan näyttöjärjestelmään.
    • Lisätyt ajurit LCD-paneeleille: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech F101RD01RD350.
    • Virranhallintajärjestelmään lisätty tuki Atom-pohjaiselle Intel Jasper Lake (JSL) -alustalle.
    • Lisätty tuki Pinebook Pro -kannettavalle, joka perustuu Rockchip RK3399:ään, Pine64 PineTab -tablettiin ja älypuhelimeen PinePhone perustuu Allwinner A64:ään.
    • Lisätty tuki uusille äänikoodekeille ja siruille:
      Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc.

    • Lisätty tuki ARM-korteille ja -alustoille Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron “sl28”, 11 i.MX6 TechNexion Pico -korttivaihtoehtoa, kolme uutta Toradex Colibri -vaihtoehtoa, Samsung S7710 Galaxy STcover 2 -pohjaiseen malliin -Ericsson u8500, DH Electronics DHCOM SoM ja PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3.

Lähde: opennet.ru

Lisää kommentti