Linux 5.3 kodola laidiens

Pēc divu mēneÅ”u izstrādes Linuss Torvalds ieviesa kodola izlaiÅ”ana Linux 5.3. Starp ievērojamākajām izmaiņām: atbalsts AMD Navi GPU, Zhaoxi procesoriem un Intel Speed ā€‹ā€‹ā€‹ā€‹Select enerÄ£ijas pārvaldÄ«bas tehnoloÄ£ijai, iespēja izmantot umwait instrukcijas, lai gaidÄ«tu, neizmantojot ciklus,
ā€œUtilization clampingā€ režīms, kas palielina interaktivitāti asimetriskiem CPU, pidfd_open sistēmas izsaukums, iespēja izmantot IPv4 adreses no 0.0.0.0/8 apakÅ”tÄ«kla, nftables aparatÅ«ras paātrinājuma iespēja, HDR atbalsts DRM apakÅ”sistēmā, ACRN integrācija. hipervizors.

Š’ paziņojums Jaunajā izlaidumā Linus atgādināja visiem izstrādātājiem galveno kodola izstrādes noteikumu - saglabāt tādu paÅ”u uzvedÄ«bu lietotāja telpas komponentiem. Kodola izmaiņas nekādā veidā nedrÄ«kst sabojāt jau darbojoŔās lietojumprogrammas vai izraisÄ«t regresiju lietotāja lÄ«menÄ«. Å ajā gadÄ«jumā uzvedÄ«bas pārkāpums var izraisÄ«t ne tikai izmaiņas ABI, novecojuÅ”a koda noņemÅ”anu vai kļūdu parādÄ«Å”anos, bet arÄ« netieÅ”u noderÄ«gu uzlabojumu ietekmi, kas darbojas pareizi. Kā ilustratÄ«vs piemērs bija izmesti noderÄ«ga optimizācija Ext4 kodā, kas samazina diskdziņa piekļuves skaitu, atspējojot inode tabulas iepriekŔēju nolasÄ«Å”anu maziem I/O pieprasÄ«jumiem.

Optimizācija noveda pie tā, ka diska aktivitātes samazināŔanās dēļ nejauÅ”o skaitļu Ä£eneratora getrandom() entropija sāka uzkrāties lēnāk, un dažās konfigurācijās noteiktos apstākļos ielādes laikā varēja novērot sasalÅ”anu, lÄ«dz entropijas pÅ«ls tika pilnÄ«bā izveidots. piepildÄ«ta. Tā kā optimizācija ir patieŔām noderÄ«ga, izstrādātāju vidÅ« radās diskusija, kurā tika piedāvāts novērst problēmu, atspējojot getrandom() izsaukuma noklusējuma bloÄ·Ä“Å”anas režīmu un pievienojot izvēles karogu, lai gaidÄ«tu entropiju, taču Ŕādas izmaiņas ietekmētu nejauÅ”o skaitļu kvalitāte ielādes sākotnējā posmā.

Jaunajā versijā ir iekļauti 15794 1974 labojumi no XNUMX izstrādātājiem,
ielāpa izmērs - 92 MB (izmaiņas skāra 13986 failus, tika pievienotas 258419 koda rindas,
noņemtas 599137 rindas). Apmēram 39% no visiem, kas uzrādīti 5.3
izmaiņas ir saistītas ar ierīču draiveriem, aptuveni 12% izmaiņu ir
attieksme pret aparatūras arhitektūrām raksturīgā koda atjaunināŔanu, 11%
saistÄ«ti ar tÄ«kla steku, 3% ar failu sistēmām un 3% ar iekŔējo
kodola apakÅ”sistēmas.

Galvenais jauninājumiem:

  • Atmiņas un sistēmas pakalpojumi
    • Nepārtraukta pidfd funkcionalitātes attÄ«stÄ«ba, lai palÄ«dzētu risināt PID atkārtotas izmantoÅ”anas situācijas (pidfd ir saistÄ«ts ar konkrētu procesu un nemainās, savukārt PID var tikt saistÄ«ts ar citu procesu pēc tam, kad beidzas paÅ”reizējais ar Å”o PID saistÄ«tais process). IepriekÅ” tas tika pievienots kodolam
      pidfd_send_signal() sistēmas izsaukums un CLONE_PIDFD karodziņŔ klona() izsaukumā, lai iegÅ«tu pidfd izmantoÅ”anai idfd_send_signal(). Izmantojot klonu() ar karogu CLONE_PIDFD, var rasties problēmas ar pakalpojumu pārvaldniekiem vai Android platformas piespiedu darbÄ«bas pārtraukÅ”anas sistēmu, kas ir ārpus atmiņas. Å ajā gadÄ«jumā startÄ“Å”anai tiek izmantots izsaukums uz fork() vai clone() bez CLONE_PIDFD.

      Kodols 5.3 ieviesa sistēmas izsaukumu pidfd_open(), kas ļauj iegÅ«t pārbaudāmu pidfd patvaļīgam esoÅ”am procesam, kas nav izveidots, izsaucot clone() ar karogu CLONE_PIDFD. Pievienots arÄ« atbalsts pidfd aptaujai, izmantojot poll() un epoll(), kas ļauj procesu vadÄ«tājiem izsekot patvaļīgu procesu pārtraukÅ”anai, nebaidoties no sacensÄ«bām, ja PID tiek pieŔķirts jaunam procesam. PaziņoÅ”anas mehānisms, kad process, kas saistÄ«ts ar pidfd, ir izbeigts, ir lÄ«dzÄ«gs paziņoÅ”anai, kad tā pakārtotais process ir pārtraukts;

    • Uzdevumu plānotājam ir pievienots atbalsts slodzes piesprauÅ”anas mehānismam (IzmantoÅ”anas iespÄ«lÄ“Å”ana), ļaujot ievērot minimālo vai maksimālo frekvenču diapazonu atkarÄ«bā no CPU aktÄ«vajiem uzdevumiem. Piedāvātais mehānisms paātrina uzdevumus, kas tieÅ”i ietekmē lietotāja pieredzes kvalitāti, izpildot Å”os uzdevumus vismaz ā€œpieprasÄ«tāsā€ frekvences apakŔējā daļā. Zemas prioritātes uzdevumi, kas neietekmē lietotāja darbu, tiek palaisti, izmantojot ā€œatļautāsā€ frekvences augŔējo robežu. Ierobežojumi tiek iestatÄ«ti, izmantojot atribÅ«tus sched_uclamp_util_min un sched_uclamp_util_max sistēmas izsaukumā sched_setattr().
    • Pievienots atbalsts enerÄ£ijas pārvaldÄ«bas tehnoloÄ£ijai Intel Speed ā€‹ā€‹ā€‹ā€‹Select, pieejams atseviŔķos serveros ar Intel Xeon procesoriem. Å Ä« tehnoloÄ£ija ļauj iestatÄ«t veiktspējas un nodalÄ«jumu caurlaidspējas iestatÄ«jumus dažādiem CPU kodoliem, kas ļauj noteikt veiktspējas prioritāti uzdevumiem, kas darbojas noteiktos kodolos, upurējot veiktspēju citos kodolos;
    • Procesi lietotāja telpā pieŔķirts iespēja Ä«su brÄ«di pagaidÄ«t, neizmantojot cilpas, izmantojot umwait instrukciju. Å Ä« instrukcija kopā ar umonitora un tpause instrukcijām tiks piedāvāta Intel gaidāmajās "Tremont" mikroshēmās un ļaus ieviest aizkaves, kas ir energoefektÄ«vas un neietekmē citu pavedienu veiktspēju, izmantojot Hyper Threading;
    • RISC-V arhitektÅ«rai ir pievienots atbalsts lielām atmiņas lapām;
    • Kprobes izsekoÅ”anas mehānisms ir pievienojis iespēju atsaukt kodola rādÄ«tājus uz lietotāja vietu, ko var izmantot, piemēram, lai novērtētu sistēmas izsaukumiem nodoto struktÅ«ru saturu. Ir pievienota arÄ« iespēja instalēt pārbaudes sāknÄ“Å”anas stadijā.
    • Konfigurācijas failam pievienota opcija PREEMPT_RT reāllaika darbÄ«bai. Pats kods reāllaika režīma atbalstam vēl nav pievienots kodolam, taču opcijas parādÄ«Å”anās ir laba zÄ«me, ka ilgtermiņa episkā integrācija Realtime-Preempt ielāpi tuvojas pabeigÅ”anai;
    • Pievienots clone3() sistēmas izsaukums ar vairāk paplaÅ”ināmas clone() interfeisa versijas ievieÅ”anu, kas ļauj norādÄ«t lielāku karogu skaitu;
    • Pievienots bpf_send_signal() apdarinātājs, kas ļauj BPF programmām nosÅ«tÄ«t signālus patvaļīgiem procesiem;
    • Perf notikumiem KVM hipervizora vidē ir pievienots jauns notikumu filtrÄ“Å”anas mehānisms, kas ļauj administratoram noteikt notikumu veidus, kuri ir atļauti vai nav atļauti uzraudzÄ«bai viesu sistēmas pusē;
    • eBPF lietojumprogrammu pārbaudes mehānismam ir pievienota iespēja apstrādāt programmas ar cilpām, ja cilpas izpilde ir ierobežota un nevar novest pie maksimālā instrukciju skaita ierobežojuma pārsniegÅ”anas;
  • Diska apakÅ”sistēma, I/O un failu sistēmas
    • XFS failu sistēma tagad atbalsta vairāku pavedienu inode apieÅ”anu (piemēram, pārbaudot kvotas). Ir pievienoti jauni ioctls BULKSTAT un INUMBERS, kas nodroÅ”ina piekļuvi funkcijām, kas parādÄ«jās FS formāta piektajā izdevumā, piemēram, inode dzimÅ”anas laiks un iespēja iestatÄ«t BULKSTAT un INUMBERS parametrus katrai AG grupai (pieŔķirÅ”anas grupām);
    • Ext4 atbalsts pievienots tukÅ”umi direktorijos (nesaistÄ«tie bloki).
      NodroÅ”ināta apstrāde karodziņŔ ā€œiā€ (nemainÄ«gs) atvērtiem failiem (rakstÄ«Å”ana ir aizliegta situācijā, ja karodziņŔ uzstādÄ«ts laikā, kad fails jau bija atvērts);

    • Btrfs sniedz definÄ«ciju ātrai crc32c ievieÅ”anai visās arhitektÅ«rās;
    • Programmā CIFS smbdirect atbalsta kods ir noņemts kā eksperimentāla izstrāde. SMB3 pievienoja iespēju izmantot kriptogrāfijas algoritmus GCM režīmā. Pievienota jauna stiprinājuma opcija, lai izvilktu režīma parametrus no ACE (piekļuves kontroles ieraksta) ierakstiem. Optimizēta open() izsaukuma veiktspēja;
    • Pievienota opcija F2FS, lai ierobežotu atkritumu savācēju, kad tas darbojas režīmā Checkpoint=disable. Pievienots ioctl, lai noņemtu bloku diapazonus no F2FS, ļaujot lidojuma laikā pielāgot nodalÄ«juma izmērus. Pievienota iespēja ievietot mijmaiņas failu F2FS, lai nodroÅ”inātu tieÅ”u I/O. Pievienots atbalsts faila piesprauÅ”anai un bloku pieŔķirÅ”anai lÄ«dzÄ«giem failiem visiem lietotājiem;
    • Pievienots asinhrono operāciju sendmsg() un recvmsg() atbalsts asinhronās ievades/izvades io_uring saskarnei;
    • UBIFS failu sistēmai ir pievienots atbalsts saspieÅ”anai, izmantojot zstd algoritmu, un iespēja pārbaudÄ«t parakstÄ«tus FS attēlus;
    • Ceph FS tagad atbalsta SELinux droŔības etiÄ·etes failiem;
    • NFSv4 ir ieviesta jauna pievienoÅ”anas opcija ā€œnconnect=ā€, kas nosaka ar serveri izveidoto savienojumu skaitu. Satiksme starp Å”iem savienojumiem tiks sadalÄ«ta, izmantojot slodzes balansÄ“Å”anu. Turklāt NFSv4 serveris tagad izveido direktoriju /proc/fs/nfsd/clients ar informāciju par paÅ”reizējiem klientiem, tostarp informāciju par failiem, kurus tie ir atvēruÅ”i;
  • Virtualizācija un droŔība
    • Kodolā ir iekļauts hipervizors iegultajām ierÄ«cēm ACRN, kas ir rakstÄ«ts, ņemot vērā gatavÄ«bu reāllaika uzdevumiem un piemērotÄ«bu lietoÅ”anai kritiskās sistēmās. ACRN nodroÅ”ina minimālas pieskaitāmās izmaksas, garantē zemu latentumu un adekvātu reaģētspēju, mijiedarbojoties ar aprÄ«kojumu. Atbalsta CPU resursu, I/O, tÄ«kla apakÅ”sistēmas, grafikas un skaņas operāciju virtualizāciju. ACRN var izmantot, lai darbinātu vairākas izolētas virtuālās maŔīnas elektroniskās vadÄ«bas blokos, informācijas paneļos, automobiļu informācijas sistēmās, patērētāju IoT ierÄ«cēs un citās iegultās tehnoloÄ£ijās;
    • Linux lietotāja režīmā piebilda Laika ceļoÅ”anas režīms, kas ļauj palēnināt vai paātrināt laiku virtuālajā UML vidē, lai atvieglotu ar laiku saistÄ«tā koda atkļūdoÅ”anu. Turklāt ir pievienots parametrs
      time-travel-start, kas ļauj sistēmas pulkstenim sākt no noteikta brīža laikmeta formātā;

    • Ir pievienotas jaunas kodola komandrindas opcijas ā€œinit_on_allocā€ un ā€œinit_on_freeā€, ja norādÄ«tas, ir iespējota pieŔķirto un atbrÄ«voto atmiņas apgabalu nulles noteikÅ”ana (malloc un free aizpildÄ«Å”ana ar nullēm), kas ļauj palielināt droŔību, pateicoties papildu inicializācijas pieskaitāmajām izmaksām;
    • Pievienots jauns draiveris virtio-iommu ar paravirtualizētas ierÄ«ces ievieÅ”anu, 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;
    • Pievienots jauns draiveris virtio-pmem, kas apzÄ«mē piekļuvi atmiņas ierÄ«cēm, kas kartētas fiziskajā adreÅ”u telpā, piemēram, NVDIMM;
    • Ieviesta iespēja pievienot kriptogrāfiskās atslēgas lietotāja vai tÄ«kla nosaukumvietai (atslēgas kļūst nepieejamas ārpus izvēlētās nosaukumvietas), kā arÄ« aizsargāt atslēgas, izmantojot ACL;
    • Uz kriptovalÅ«tu apakÅ”sistēmu pievienots atbalsts ļoti ātram nekriptogrāfiskam jaukÅ”anas algoritmam xxhash, kura ātrums ir atkarÄ«gs no atmiņas veiktspējas;
  • TÄ«kla apakÅ”sistēma
    • Iespējota IPv4 adreÅ”u apstrāde diapazonā 0.0.0.0/8, kas iepriekÅ” nebija pieejama lietoÅ”anai. Å Ä« apakÅ”tÄ«kla ievads atļaus izplatÄ«t vēl 16 miljonus IPv4 adreÅ”u;
    • Netfilter for nftables pievienots atbalsts aparatÅ«ras paātrinājuma mehānismiem pakeÅ”u filtrÄ“Å”anai, izmantojot pievienotos draiverus Flow Block API. TÄ«kla adapteru malās var ievietot veselas noteikumu tabulas ar visām ķēdēm. IespējoÅ”ana tiek veikta, pievienojot tabulai karogu NFT_TABLE_F_HW. Atbalsta vienkārÅ”us 3. un 4. slāņa protokola metadatus, pieņem/noraida darbÄ«bas, kartÄ“Å”anu pēc IP un sÅ«tÄ«tāja/saņēmēja tÄ«kla portiem un protokola tipu;
    • Pievienots iebÅ«vēts savienojuma izsekoÅ”anas atbalsts tÄ«kla tiltiem, kam nav nepiecieÅ”ams izmantot emulācijas slāni br_netfilter;
    • Mapē nf_tables pievienots atbalsts modulim SYNPROXY, kas atkārto lÄ«dzÄ«gu funkcionalitāti no iptables, kā arÄ« ir ieviesta iespēja pārbaudÄ«t noteikumus atseviŔķām opcijām IPv4 galvenē;
    • Pievienota iespēja pievienot BPF programmas setsockopt() un getsockopt() sistēmas izsaukumiem, kas, piemēram, ļauj Å”iem zvaniem pievienot savus piekļuves apstrādātājus. Papildus ir pievienots jauns izsaukuma punkts (hook), ar kuru var organizēt izsaukumu BPF programmai vienu reizi katram RTT intervālam (turp un atpakaļ laiks, ping laiks);
    • IPv4 un IPv6 piebilda jauns nexthop marÅ”rutÄ“Å”anas datu uzglabāŔanas mehānisms, kura mērÄ·is ir palielināt marÅ”rutÄ“Å”anas tabulu mērogojamÄ«bu. Testi parādÄ«ja, ka, izmantojot jauno sistēmu, 743 tÅ«kstoÅ”u marÅ”rutu komplekts kodolā tika ielādēts tikai 4.3 sekundēs;
    • Paredzēts Bluetooth Ä«stenota funkcionalitāte, kas nepiecieÅ”ama, lai atbalstÄ«tu LE ping;
  • ŠžŠ±Š¾Ń€ŃƒŠ“Š¾Š²Š°Š½ŠøŠµ
    • Pievienots atbalsts uzņēmuma ar x86 saderÄ«giem procesoriem DžaksÄ«ns, kas izstrādāts VIA Technologies un Å anhajas paÅ”valdÄ«bas kopÄ«ga projekta rezultātā. ZX CPU saime ir veidota uz x86-64 Isaiah arhitektÅ«ras, turpinot tehnoloÄ£iju attÄ«stÄ«bu VIA Kentaurs;
    • DRM (Direct Rendering Manager) apakÅ”sistēma, kā arÄ« amdgpu un i915 grafikas draiveri ir pievienojuÅ”i atbalstu HDR (augsta dinamiskā diapazona) metadatu parsÄ“Å”anai, apstrādei un nosÅ«tÄ«Å”anai caur HDMI portu, ļaujot izmantot HDR paneļus un ekrānus, kas spēj parāda papildu spilgtuma diapazonus;
    • Amdgpu draiveris ir pievienojis sākotnējo atbalstu AMD NAVI GPU (RX5700), kas ietver bāzes draiveri, ekrāna mijiedarbÄ«bas kodu (DCN2), GFX un skaitļoÅ”anas atbalstu (GFX10),
      SDMA 5 (System DMA0), jaudas pārvaldība un multivides kodētāji/dekoderi (VCN2). amdgpu arī uzlabo atbalstu kartēm, kuru pamatā ir Vega12 un Vega20 GPU, kurām ir pievienotas papildu atmiņas un jaudas pārvaldības iespējas;

    • Pievienots atbalsts kartēm, kuru pamatā ir VegaM GPU, amdkfd draiverim (diskrētiem GPU, piemēram, Fidži, Tonga, Polaris);
    • DRM draiverÄ« Intel videokartēm Icelake mikroshēmām Ä«stenota jauns vairāku segmentu gamma korekcijas režīms. Pievienota iespēja izvadÄ«t caur DisplayPort YCbCr4:2:0 formātā. Pievienota jauna programmaparatÅ«ra GuC SKL, BXT, KBL, GLK un ICL. Ir ieviesta iespēja izslēgt ekrāna baroÅ”anu asinhronajā režīmā. Pievienots atbalsts Ironlake (gen5) un gen4 (Broadwater - Cantiga) mikroshēmu renderÄ“Å”anas konteksta saglabāŔanai un atjaunoÅ”anai, kas ļauj atjaunot GPU stāvokli no lietotāja vietas, pārejot no vienas partijas darbÄ«bas uz citu;
    • Nouveau draiveris nodroÅ”ina NVIDIA Turing TU116 mikroshēmojuma noteikÅ”anu;
    • Ir paplaÅ”inātas ARM Komeda ekrāna paātrinātāju (Mali D71) DRM/KMS draivera iespējas, atbalsts mērogoÅ”anai, slāņu sadalÄ«Å”anai/sapludināŔanai, rotācijai, atliktai rakstÄ«Å”anai, AFBC, SMMU un krāsu kodÄ“Å”anas formātiem Y0L2, P010, YUV420_8/10BIT. pievienots;
    • MSM draiveris pievieno atbalstu A540 GPU Adreno sērijai, ko izmanto Qualcomm procesoros, kā arÄ« atbalstu MSM8998 DSI kontrollerim Snapdragon 835;
    • Pievienoti draiveri LCD paneļiem Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 un VXT VL050-8048NT-C01;

    • Pievienots draiveris, lai iespējotu paātrinājuma rÄ«ku dekodÄ“Å”anu
      video pieejami Amlogic Meson SoC;

    • ParādÄ«jās v3d draiveris (Broadcom Video Core V GPU, ko izmanto Raspberry Pi). atbalstÄ«t skaitļoÅ”anas ēnotāju nosÅ«tÄ«Å”ana;
    • Pievienots draiveris SPI tastatÅ«rām un skārienpaliktņiem, ko izmanto mÅ«sdienu Apple MacBook un MacBookPro klēpjdatoros;
    • Pievienots papildu aizsardzÄ«ba ioctl izsaukumiem, kas saistÄ«ti ar disketes draiveri, un pats draiveris tiek atzÄ«mēts kā neapkopts
      (ā€œbāreņiā€), kas nozÄ«mē tā testÄ“Å”anas pārtraukÅ”anu. Draiveris joprojām tiek saglabāts kodolā, taču tā pareiza darbÄ«ba netiek garantēta. Draiveris tiek uzskatÄ«ts par novecojuÅ”u, jo ir grÅ«ti atrast darba aprÄ«kojumu tā pārbaudei - visi paÅ”reizējie ārējie diskdziņi, kā likums, izmanto USB interfeisu.

    • Pievienots cpufreq draiveris Raspberry Pi platēm, kas ļauj dinamiski kontrolēt procesora frekvences izmaiņas;
    • Pievienots atbalsts jaunajam ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP + MMA) un Amlogic G12B (4x Cortex-A73 +-2). A53), kā arÄ« dēļi:
      • Purism Librem5,
      • Aspeed BMC,
      • Microsoft Olympus BMC,
      • Kontron SMARC,
      • Novtech Meerkat96 (i.MX7),
      • ST Micro Avenger96,
      • Google Cheza (Qualcomm SDM845),
      • Qualcomm Dragonboard 845c (Qualcomm SDM845),
      • Hugsun X99 TV kaste (Rockchip RK3399),
      • Khadas Edge/Edge-V/Captain (Rockchip RK3399),
      • HiHope RZ/G2M,
      • NXP LS1021A-TSN.

Tajā paŔā laikā Latīņamerikas BrÄ«vās programmatÅ«ras fonds veidojas
iespēja pilnīgi bezmaksas kodols 5.3 Sākot no Linux bezmaksas 5.3-gnu, notīrīta no programmaparatūras un draivera elementiem, kas satur nebrīvas sastāvdaļas vai koda sadaļas, kuru darbības jomu ierobežo ražotājs. Jaunajā laidienā blob ielāde ir atspējota draiveros qcom, hdcp drm, allegro-dvt un meson-vdec.
Atjaunināts blobu tÄ«rÄ«Å”anas kods draiveros un apakÅ”sistēmās amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, Skylake skaņas draiverÄ«, kā arÄ« mikrokoda dokumentācijā.

Avots: opennet.ru

Pievieno komentāru