Linux kodols 5.14

Linux kodols 5.14

Pēc divu mēneÅ”u izstrādes Linuss Torvalds ieviesa kodola izlaiÅ”ana Linux 5.14. Starp ievērojamākajām izmaiņām: jauni quotactl_fd() un memfd_secret() sistēmas izsaukumi, ide un raw draiveru noņemÅ”ana, jauns I/O prioritātes kontrolleris cgroup, SCHED_CORE uzdevumu plānoÅ”anas režīms, infrastruktÅ«ra verificētu BPF programmu ielādētāju izveidei.

Jaunajā versijā ir iekļauti 15883 2002 labojumi no 69 izstrādātājiem, ielāpa izmērs ir 12580 MB (izmaiņas skāra 861501 321654 failus, tika pievienota 47 5.14 koda rindiņa, dzēstas 14 13 rindiņas). Aptuveni 3% no visām izmaiņām, kas ieviestas 3 versijā, ir saistÄ«tas ar ierīču draiveriem, aptuveni XNUMX% no izmaiņām ir saistÄ«tas ar aparatÅ«ras arhitektÅ«rām raksturÄ«gā koda atjaunināŔanu, XNUMX% ir saistÄ«tas ar tÄ«kla steku, XNUMX% ir saistÄ«tas ar failu sistēmām un XNUMX% ir saistÄ«ti ar iekŔējām kodola apakÅ”sistēmām.

Galvenais jauninājumiem:

  • diska apakÅ”sistēma, ievades/izvades un failu sistēmas:
    • par cgroup Ä«stenota jauns I/O prioritātes kontrolieris - rq-qos, kas var kontrolēt katras cgrupas dalÄ«bnieku Ä£enerēto ierīču bloÄ·Ä“Å”anas pieprasÄ«jumu apstrādes prioritāti. Mq-deadline I/O plānotājam ir pievienots jauns prioritātes kontrollera atbalsts;
    • ext4 failu sistēmā Ä«stenota jauna ioctl komanda EXT4_IOC_CHECKPOINT, kas visas neapstiprinātās transakcijas no žurnāla un saistÄ«tajiem buferiem pārsÅ«ta uz disku, kā arÄ« pārraksta žurnāla krātuves izmantoto apgabalu. Izmaiņas tika sagatavotas kā daļa no iniciatÄ«vas, lai novērstu informācijas noplÅ«di no failu sistēmām;
    • in Btrfs ieviesa Veiktspējas optimizācija: novērÅ”ot nevajadzÄ«gu paplaÅ”ināto atribÅ«tu reÄ£istrÄ“Å”anu fsync izpildes laikā, intensÄ«vu darbÄ«bu veiktspēja ar paplaÅ”inātiem atribÅ«tiem palielinājās lÄ«dz pat 17%. Turklāt, veicot apgrieÅ”anas darbÄ«bas, kas neietekmē apmērus, tiek atspējota pilna sinhronizācija, kas samazināja darbÄ«bas laiku par 12%. Sysf ir pievienots iestatÄ«jums, lai ierobežotu I/O joslas platumu, pārbaudot FS. Pievienoti ioctl zvani, lai atceltu ierÄ«ces izmēru maiņas un dzÄ“Å”anas darbÄ«bas;
    • XFS formātā pārstrādāts bufera keÅ”atmiņas ievieÅ”ana, kas tiek pārnesta uz atmiņas lapu pieŔķirÅ”anu pakeÅ”u režīmā. Uzlabota keÅ”atmiņas efektivitāte;
    • F2FS pievienoja opciju darbam tikai lasÄ«Å”anas režīmā un ieviesa saspiestu bloku keÅ”atmiņas režīmu (compress_cache), lai uzlabotu izlases lasÄ«Å”anas veiktspēju. Ir ieviests atbalsts atmiņā saglabāto failu saspieÅ”anai, izmantojot operāciju mmap(). Lai selektÄ«vi atspējotu failu saspieÅ”anu ar masku, ir piedāvāta jauna piestiprināŔanas opcija nocompress;
    • ir veikts darbs exFAT draiverÄ«, lai uzlabotu saderÄ«bu ar dažu digitālo kameru krātuvi;
    • pievienots sistēmas zvans quotactl_fd(), kas ļauj pārvaldÄ«t kvotas, nevis izmantojot Ä«paÅ”u ierÄ«ces failu, bet gan norādot faila deskriptoru, kas saistÄ«ts ar failu sistēmu, kurai kvota tiek piemērota;
    • Vecie draiveri blokierÄ«cēm ar IDE interfeisu ir noņemti no kodola, tos jau sen ir aizstājusi libata apakÅ”sistēma. Veco ierīču atbalsts ir saglabāts pilnÄ«bā, izmaiņas attiecas tikai uz iespēju izmantot vecos draiverus, kurus lietojot, diski tika saukti par /dev/hd*, nevis /dev/sd*;
    • ā€œRawā€ draiveris ir noņemts no kodola, nodroÅ”inot nebuferētu piekļuvi bloķētajām ierÄ«cēm, izmantojot /dev/raw saskarni. Å Ä« funkcionalitāte jau sen ir ieviesta lietojumprogrammās, kas izmanto karogu O_DIRECT;
  • atmiņas un sistēmas pakalpojumi:
    • uzdevumu plānotājā ir ieviests jauns plānoÅ”anas režīms SCHED_CORE, kas ļauj kontrolēt, kuri procesi var darboties kopā vienā CPU kodolā. Katram procesam var pieŔķirt sÄ«kdatņu identifikatoru, kas nosaka uzticÄ«bas apjomu starp procesiem (piemēram, piederÄ«bu vienam lietotājam vai konteineram). Organizējot koda izpildi, plānotājs var nodroÅ”ināt, ka viens CPU kodols tiek koplietots tikai starp procesiem, kas saistÄ«ti ar to paÅ”u Ä«paÅ”nieku, ko var izmantot, lai bloķētu dažus Spectre uzbrukumus, neļaujot uzticamiem un neuzticamiem uzdevumiem darboties tajā paŔā SMT (Hyper Threading) pavedienā. ;
    • cgroup mehānismam ir ieviests kill operācijas atbalsts, kas ļauj uzreiz nogalināt visus ar grupu saistÄ«tos procesus (nosÅ«tÄ«t SIGKILL), virtuālajā failā cgroup.kill ierakstot ā€œ1ā€;
    • paplaÅ”inātas iespējas, kas saistÄ«tas ar reaģēŔanu uz dalÄ«tu slēdzeņu (ā€œsadalÄ«to slēdzeņuā€) noteikÅ”anu, kas rodas, piekļūstot nesaskaņotiem datiem atmiņā, jo, izpildot atomu instrukciju, dati Ŕķērso divas CPU keÅ”atmiņas lÄ«nijas. Šāda bloÄ·Ä“Å”ana izraisa ievērojamu veiktspējas kritumu, tāpēc iepriekÅ” bija iespējams piespiedu kārtā pārtraukt lietojumprogrammu, kas izraisÄ«ja bloÄ·Ä“Å”anu. Jaunajā laidienā ir pievienots kodola komandrindas parametrs ā€œsplit_lock_detect=ratelimit:Nā€, kas ļauj definēt sistēmas mēroga ierobežojumu bloÄ·Ä“Å”anas operāciju ātrumam sekundē, pēc kura pārsniegÅ”anas tiks pārsniegts jebkurÅ” process, kas kļuva par dalÄ«tās bloÄ·Ä“Å”anas avotu. bÅ«t spiestam apstāties uz 20 ms, nevis pārtraukt;
    • cgroup joslas platuma kontrolieris CFS (CFS joslas platuma kontrolieris), kas nosaka, cik daudz procesora laika var atvēlēt katrai cgrupai, ir iespēja definēt ierobežojumus, ko ierobežo noteikts darbÄ«bas ilgums, kas ļauj labāk regulēt latentuma jutÄ«gās slodzes. Piemēram, iestatot cpu.cfs_quota_us uz 50000 un cpu.cfs_period_us uz 100000, procesu grupa ik pēc 100 ms ļaus iztērēt 50 ms CPU laika;
    • pievienots sākotnējā infrastruktÅ«ra BPF programmu ielādētāju izveidei, kas turpmāk ļaus lejupielādēt tikai BPF programmas, kas parakstÄ«tas ar uzticamu digitālo atslēgu;
    • pievienota jauna futex operācija FUTEX_LOCK_PI2, kas taimauta aprēķināŔanai izmanto monotonu taimeri, kas ņem vērā laiku, ko sistēma pavada miega režīmā;
    • RISC-V arhitektÅ«rai atbalsts lielām atmiņas lapām (Transparent Huge-Pages) un iespēja izmantot KŽOGS identificēt kļūdas, strādājot ar atmiņu;
    • madvise() sistēmas izsaukumā, kas nodroÅ”ina lÄ«dzekli procesa atmiņas pārvaldÄ«bas optimizÄ“Å”anai, pievienots MADV_POPULATE_READ un MADV_POPULATE_WRITE karodziņi, lai Ä£enerētu "lapas kļūdu" visās atmiņas lapās, kas kartētas lasÄ«Å”anas vai rakstÄ«Å”anas darbÄ«bām, neveicot faktisku lasÄ«Å”anu vai rakstÄ«Å”anu (iepriekÅ”noklusējums). Karogu izmantoÅ”ana var bÅ«t noderÄ«ga, lai samazinātu programmas izpildes aizkavÄ“Å”anos, pateicoties proaktÄ«vai ā€œlapas kļūdasā€ apstrādātāja izpildei visām nepieŔķirtajām lapām vienlaikus, negaidot faktisko piekļuvi tām;
    • vienÄ«bas testÄ“Å”anas sistēmā kunit pievienots atbalsts testu veikÅ”anai QEMU vidē;
    • pievienoti jauni marÄ·ieri: "osnoise" lai izsekotu lietojumprogrammu aizkaves, ko izraisa pārtraukumu apstrāde, un " timerlat ", lai parādÄ«tu detalizētu informāciju par aizkavi, kad pamoÅ”anās no taimera signāla;
  • virtualizācija un droŔība:
    • piebilda sistēmas zvans memfd_secret(), kas ļauj izveidot privātu atmiņas apgabalu izolētā adreÅ”u telpā, kas ir redzama tikai Ä«paÅ”nieka procesam, nav atspoguļota citos procesos un nav tieÅ”i pieejama kodolam;
    • seccomp sistēmas zvanu filtrÄ“Å”anas sistēmā, pārvietojot slēdzenes apstrādātājus lietotāja telpā, ir iespējams izmantot vienu atomoperāciju, lai izveidotu faila deskriptoru izolētam uzdevumam un atgrieztu to, apstrādājot sistēmas izsaukumu. Piedāvātā darbÄ«ba atrisina problēma ar operatora pārtraukumu lietotāja telpā, kad pienāk signāls;
    • piebilda jauns mehānisms lai pārvaldÄ«tu resursu ierobežoÅ”anu lietotāja ID nosaukumvietā, kas saista atseviŔķus rlimit skaitÄ«tājus ar lietotāju "lietotāja nosaukumvietā". Izmaiņas atrisina problēmu ar kopējo resursu skaitÄ«tāju izmantoÅ”anu, kad viens lietotājs palaiž procesus dažādos konteineros;
    • KVM hipervizors ARM64 sistēmām ir pievienojis iespēju izmantot MTE (MemTag, Memory Tagging Extension) paplaÅ”inājumu viesu sistēmās, kas ļauj saistÄ«t tagus katrai atmiņas pieŔķirÅ”anas darbÄ«bai un organizēt rādÄ«tāju pareizas izmantoÅ”anas pārbaudi, lai bloķētu ievainojamÄ«bas, ko izraisa piekļuve jau atbrÄ«votajiem atmiņas blokiem, buferu pārpilde, piekļuve pirms inicializācijas un izmantoÅ”ana ārpus paÅ”reizējā konteksta;
    • RādÄ«tāja autentifikāciju, ko nodroÅ”ina platforma ARM64, tagad var konfigurēt atseviŔķi kodolam un lietotāja vietai. TehnoloÄ£ija ļauj izmantot specializētas ARM64 instrukcijas, lai pārbaudÄ«tu atgrieÅ”anas adreses, izmantojot ciparparakstus, kas tiek saglabāti paÅ”a rādÄ«tāja neizmantotajos augŔējos bitos;
    • Linux lietotāja režīmā pievienots atbalsts draiveru izmantoÅ”anai PCI ierÄ«cēm ar virtuālo PCI kopni, ko Ä«steno PCI-over-virtio draiveris;
    • x86 sistēmām pievienots atbalsts virtio-iommu paravirtualizētajai ierÄ«cei, kas ļauj nosÅ«tÄ«t IOMMU pieprasÄ«jumus, piemēram, ATTACH, DETACH, MAP un UNMAP, izmantojot virtio transportu, ne emulējot atmiņas lapu tabulas;
    • Intel centrālajiem procesoriem, sākot no Skylake saimes un beidzot ar Coffee Lake, Intel TSX (transakciju sinhronizācijas paplaÅ”inājumi), kas nodroÅ”ina rÄ«kus vairāku pavedienu lietojumprogrammu veiktspējas uzlaboÅ”anai, dinamiski novērÅ”ot nevajadzÄ«gas sinhronizācijas darbÄ«bas, lietoÅ”ana pēc noklusējuma ir atspējota. PaplaÅ”inājumi ir atspējoti uzbrukumu iespējamÄ«bas dēļ Zombieload, manipulējot ar informācijas noplÅ«di pa treÅ”o puÅ”u kanāliem, kas notiek operāciju asinhronās pārtraukÅ”anas mehānisma (TAA, TSX Asynchronous Abort) darbÄ«bas laikā;
  • tÄ«kla apakÅ”sistēma:
    • turpināta integrācija MPTCP (MultiPath TCP) kodolā, kas ir TCP protokola paplaÅ”inājums TCP savienojuma darbÄ«bas organizÄ“Å”anai ar pakeÅ”u piegādi vienlaicÄ«gi pa vairākiem marÅ”rutiem caur dažādām tÄ«kla saskarnēm, kas saistÄ«tas ar dažādām IP adresēm. Jaunajā numurā piebilda mehānisms savu trafika jaukÅ”anas politiku iestatÄ«Å”anai IPv4 un IPv6 (daudzceļu jaukÅ”anas politika), kas ļauj no lietotāja vietas noteikt, kuri lauki paketēs, ieskaitot iekapsulētos, tiks izmantoti, aprēķinot jaucēju, kas nosaka ceļa izvēli. par paciņu;
    • ligzdas atbalsts ir pievienots virtuālajam transporta virtio SOCK_SEQPACKET (datagrammu sakārtota un uzticama pārraide);
    • PaplaÅ”inātas SO_REUSEPORT ligzdas mehānisma iespējas, kas ļauj vienlaikus pieslēgties vairākām klausÄ«Å”anās ligzdām vienam portam, lai saņemtu savienojumus ar ienākoÅ”o pieprasÄ«jumu sadali vienlaicÄ«gi pa visām ligzdām, kas pieslēgtas caur SO_REUSEPORT, kas vienkārÅ”o daudzpavedienu servera aplikāciju izveidi. . Jaunajā versijā pievienots lÄ«dzeklis vadÄ«bas pārsÅ«tÄ«Å”anai uz citu ligzdu, ja rodas kļūmes, apstrādājot pieprasÄ«jumu sākotnēji izvēlētajā ligzdā (atrisina problēmu ar atseviŔķu savienojumu zudumu, restartējot pakalpojumus);
  • aprÄ«kojums:
    • amdgpu draiverÄ« Ä«stenota atbalsts jaunajai AMD Radeon RX 6000 sērijas GPU ar koda nosaukumiem ā€œBeige Gobyā€ (Navi 24) un ā€œYellow Carpā€, kā arÄ« uzlabots atbalsts Aldebaran GPU (gfx90a) un Van Gogh APU. Pievienota iespēja vienlaikus strādāt ar vairākiem eDP paneļiem. APU Renoir ir ieviests atbalsts darbam ar Å”ifrētiem buferiem video atmiņā (TMZ, Trusted Memory Zone). Pievienots karstās atvienoÅ”anas grafikas karÅ”u atbalsts. Radeon RX 6000 (Navi 2x) GPU un vecākiem AMD GPU pēc noklusējuma ir iespējots atbalsts ASPM (Active State Power Management) enerÄ£ijas taupÄ«Å”anas mehānismam, kas iepriekÅ” bija iespējots tikai Navi 1x, Vega un Polaris GPU;
    • AMD mikroshēmām ir pievienots atbalsts koplietojamai virtuālajai atmiņai (SVM, koplietojamā virtuālā atmiņa), pamatojoties uz HMM (Heterogeneous memory management) apakÅ”sistēmu, kas ļauj izmantot ierÄ«ces ar savām atmiņas pārvaldÄ«bas vienÄ«bām (MMU, atmiņas pārvaldÄ«bas vienÄ«ba), kas var piekļūt galvenajai atmiņai. Izmantojot HMM, varat organizēt kopÄ«gu adreÅ”u telpu starp GPU un CPU, kurā GPU var piekļūt procesa galvenajai atmiņai;
    • pievienots sākotnējais tehnoloÄ£iju atbalsts AMD Smart Shift, kas dinamiski maina CPU un GPU enerÄ£ijas patēriņa parametrus klēpjdatoros ar mikroshēmojumu un AMD grafisko karti, lai uzlabotu veiktspēju spēlējot, video rediģējot un 3D renderÄ“Å”anā;
    • i915 draiverÄ« Intel videokartēm iekļauts atbalsts Intel Alderlake P mikroshēmām;
    • pievienots drm/hyperv draiveris Hyper-V virtuālajam grafikas adapterim;
    • piebilda simpledrm grafikas draiveris, kas izvadei izmanto EFI-GOP vai VESA kadru buferi, ko nodroÅ”ina UEFI programmaparatÅ«ra vai BIOS. Draivera galvenais mērÄ·is ir nodroÅ”ināt grafiskās izvades iespējas sāknÄ“Å”anas sākumposmā, pirms var izmantot pilnu DRM draiveri. Draiveri var izmantot arÄ« kā pagaidu risinājumu iekārtām, kurām vēl nav vietējo DRM draiveru;
    • pievienots viss vienā datoru atbalsts Raspberry Pi 400;
    • Pievienots dell-wmi-privacy draiveris, lai atbalstÄ«tu kameras un mikrofona aparatÅ«ras slēdžus, kas iekļauti Dell klēpjdatoros;
    • Lenovo klēpjdatoriem piebilda WMI interfeiss BIOS parametru maiņai, izmantojot sysfs /sys/class/firmware-attributes/;
    • paplaÅ”ināts atbalsts ierÄ«cēm ar USB4 interfeisu;
    • pievienots atbalsts skaņas kartēm un kodekiem AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 un Texas Instruments TAS2505. Uzlabots audio atbalsts HP un ASUS klēpjdatoriem. Pievienots ielāpus, lai samazinātu aizkavi, pirms tiek sākta audio atskaņoÅ”ana ierÄ«cēs ar USB interfeisu.

Avots ā€“ opennet.ru.

Avots: linux.org.ru