Linux 5.1 kodola laidiens

Pēc divu mēneÅ”u izstrādes Linuss Torvalds ieviesa kodola izlaiÅ”ana Linux 5.1. Starp ievērojamākajām izmaiņām: jauns interfeiss asinhronai I/O io_uring, iespēja izmantot NVDIMM kā RAM, atbalsts koplietojamai virtuālajai atmiņai Nouveau, atbalsts ļoti lielu failu sistēmu mērogojamai uzraudzÄ«bai, izmantojot fanotify, iespēja konfigurēt Zstd saspieÅ”anu. lÄ«meņi Btrfs, jauns cpuidle TEO apdarinātājs, sistēmas izsaukumu ievieÅ”ana, lai atrisinātu 2038. problēmu, iespēja bootēt no ierÄ«ces kartÄ“Å”anas ierÄ«cēm bez initramfs, SafeSetID LSM modulis, atbalsts kombinētiem tieÅ”raides ielāpiem.

Galvenais jauninājumiem:

  • Diska apakÅ”sistēma, I/O un failu sistēmas
    • Ieviests jauns interfeiss asinhronai I/O - io_uring, kas ir ievērojams ar I/O aptauju atbalstu un spēju strādāt ar vai bez buferizācijas. Atgādināsim, ka iepriekÅ” piedāvātais asinhronais I/O mehānisms ā€œaioā€ neatbalstÄ«ja buferizēto I/O, varēja darboties tikai O_DIRECT režīmā (bez buferizācijas un keÅ”atmiņas apieÅ”anas), bija problēmas ar bloÄ·Ä“Å”anu, jo gaidÄ«ja metadatu pieejamÄ«bu un uzrādÄ«ja lielas pieskaitāmās izmaksas datu kopÄ“Å”anas dēļ atmiņā.

      API ietvaros
      io_uring izstrādātāji centās novērst vecās aio saskarnes nepilnÄ«bas. Autors produktivitāte io_uring ir ļoti tuvu SPDK un ievērojami apsteidz libaio, strādājot ar iespējotu aptauju. Ir sagatavota bibliotēka io_uring izmantoÅ”anai gala lietojumprogrammās, kas darbojas lietotāja telpā atslābinoÅ”s, kas nodroÅ”ina augsta lÄ«meņa sistēmu kodola saskarnē;

    • Notikumu izsekoÅ”anas mehānismā FS fanotify() pievienots atbalsts superbloku un struktÅ«ras izmaiņu situāciju izsekoÅ”anai dirent (direktoriju izveides, dzÄ“Å”anas un pārvietoÅ”anas notikumi). Piedāvātās funkcijas palÄ«dz atrisināt mērogojamÄ«bas problēmas, kas rodas, veidojot rekursÄ«vu izmaiņu izsekoÅ”anu ļoti lielās failu sistēmās, izmantojot inotify mehānismu (tieŔās izmaiņas iepriekÅ” varēja izsekot, tikai izmantojot inotify, bet
      veiktspēja lielu ligzdotu direktoriju rekursÄ«vas izsekoÅ”anas apstākļos atstāja daudz vēlamo). Tagad Ŕādu uzraudzÄ«bu var efektÄ«vi veikt, izmantojot fanotify;

    • Btrfs failu sistēmā pievienots iespēja pielāgot saspieÅ”anas lÄ«meni zstd algoritmam, ko var uzskatÄ«t par optimālu kompromisu starp ātro, bet neefektÄ«vo lz4 un lēno, bet labo saspieÅ”anu xz. Pēc analoÄ£ijas ar to, kā iepriekÅ” bija iespējams iestatÄ«t saspieÅ”anas lÄ«meni, izmantojot zlib, zstd ir pievienota stiprinājuma opcija ā€œ-o compress=zstd:levelā€. TestÄ“Å”anas laikā minimālais pirmais lÄ«menis nodroÅ”ināja datu saspieÅ”anu 2.658 reizes ar saspieÅ”anas ātrumu 438.47 MB/s, dekompresijas ātrumu 910.51 MB/s un atmiņas patēriņu 780 MB, bet maksimālais lÄ«menis 15 nodroÅ”ināja 3.126 reizes, bet ar saspieÅ”anu. ātrums 37.30 MB/s izpakoÅ”ana 878.84 MB/s un atmiņas patēriņŔ 2547 MB;
    • Pievienots iespēja palaist no failu sistēmas, kas atrodas ierÄ«ces kartētāja ierÄ«cē, neizmantojot initramfs. Sākot ar paÅ”reizējo kodola laidienu, ierÄ«ces kartētāja ierÄ«ces var tieÅ”i izmantot sāknÄ“Å”anas procesā, piemēram, kā nodalÄ«jumu ar saknes failu sistēmu. SadalÄ«jums ir konfigurēts, izmantojot sāknÄ“Å”anas parametru ā€œdm-mod.createā€. Ierīču kartÄ“Å”anas moduļi, kurus atļauts ielādēt, ietver: ā€œkriptuā€, ā€œaizkavÄ“Å”anosā€, ā€œlineāruā€, ā€œmomentuzņēmuma izcelsmiā€ un ā€œverityā€;
    • F2FS_NOCOW_FL karodziņŔ ir pievienots F2FS failu sistēmai, kas orientēta uz zibatmiņas diskdziņiem, kas ļauj atspējot kopÄ“Å”anas un rakstÄ«Å”anas režīmu konkrētam failam;
    • Failu sistēma ir noņemta no kodola Exofs, kas ir ext2 variants, kas pielāgots darbam ar OSD (Object-based Storage Device) objektu krātuvēm. Ir noņemts arÄ« SCSI protokola atbalsts Ŕādām objektu uzglabāŔanas ierÄ«cēm;
  • Virtualizācija un droŔība
    • Prctl() pievienota opcija PR_SPEC_DISABLE_NOEXEC, lai kontrolētu instrukciju spekulatÄ«vu izpildi atlasÄ«tajam procesam. Jauna opcija ļauj selektÄ«vi atspējot spekulatÄ«vo izpildi procesiem, kuriem potenciāli varētu tikt uzbrukts Spectre uzbrukums. BloÄ·Ä“Å”ana ilgst lÄ«dz pirmajam exec();
    • Ieviests LSM modulis SafeSetID, kas ļauj sistēmas pakalpojumiem droÅ”i pārvaldÄ«t lietotājus, nepalielinot privilēģijas (CAP_SETUID) un neiegÅ«stot root tiesÄ«bas. Privilēģijas tiek pieŔķirtas, definējot noteikumus securityfs, pamatojoties uz derÄ«go saiÅ”u balto sarakstu (formā ā€œUID1:UID2ā€);
    • Pievienotas zema lÄ«meņa izmaiņas, kas nepiecieÅ”amas droŔības moduļu (LSM) ielādei, pamatojoties uz steku. Ieviesta "lsm" kodola sāknÄ“Å”anas opcija, lai kontrolētu, kuri moduļi tiek ielādēti un kādā secÄ«bā;
    • Audita apakÅ”sistēmai ir pievienots atbalsts failu nosaukumvietām;
    • Izvērsts GCC spraudņa structleak iespējas, kas ļauj bloķēt iespējamās atmiņas satura noplÅ«des Tiek nodroÅ”ināta jebkuru kodā izmantoto mainÄ«go inicializācija, izmantojot atsauces piekļuvi stekā;
  • TÄ«kla apakÅ”sistēma
    • Par rozetēm Ä«stenota jauna opcija "SO_BINDTOIFINDEX" lÄ«dzÄ«ga
      "SO_BINDTODEVICE", bet par argumentu ņemot tīkla interfeisa indeksa numuru, nevis interfeisa nosaukumu;

    • Mac80211 steks ir pievienojis iespēju vienai ierÄ«cei pieŔķirt vairākus BSSID (MAC adreses). Kā daļa no projekta, lai optimizētu WiFi veiktspēju, mac80211 kaudze ir pievienojusi raidlaika uzskaiti un iespēju sadalÄ«t raidlaiku starp vairākām stacijām (ja darbojas piekļuves punkta režīmā, mazāku pārraides laiku atvēlot lēnām bezvadu stacijām, nevis vienmērÄ«gi sadalot laiku starp visām stacijām. stacijas);
    • Pievienots mehānisms "devlink veselÄ«ba", kas nodroÅ”ina paziņojumus, ja rodas problēmas ar tÄ«kla saskarni;
  • Atmiņas un sistēmas pakalpojumi
    • ÄŖstenots droÅ”a signāla piegāde, kas ļauj atkārtoti izmantot PID. Piemēram, iepriekÅ” izsaucot kill, var rasties situācija, ka uzreiz pēc signāla nosÅ«tÄ«Å”anas mērÄ·a PID var tikt atbrÄ«vots procesa pārtraukÅ”anas dēļ un aizņemts citam procesam, un signāls tiktu nodots citam procesam. Lai novērstu Ŕādas situācijas, ir pievienots jauns sistēmas izsaukums pidfd_send_signal, kas izmanto failu deskriptorus no /proc/pid, lai nodroÅ”inātu stabilu procesu saistÄ«Å”anu. Pat ja PID tiek atkārtoti izmantots sistēmas izsaukuma apstrādes laikā, faila deskriptors nemainÄ«sies un to var droÅ”i izmantot, lai nosÅ«tÄ«tu signālu procesam;
    • Pievienots iespēja izmantot pastāvÄ«gās atmiņas ierÄ«ces (piemēram, pastāvÄ«go atmiņu). NVDIMM) kā RAM. LÄ«dz Å”im kodols Ŕādas ierÄ«ces atbalstÄ«ja kā atmiņas ierÄ«ces, taču tagad tās var izmantot arÄ« kā papildu RAM. Funkcija tiek ieviesta, reaģējot uz to lietotāju vēlmēm, kuri vēlas samierināties ar veiktspējas nobÄ«di un vēlas izmantot vietējo Linux kodola atmiņas pārvaldÄ«bas API, nevis izmantot esoŔās lietotāja vietas atmiņas pieŔķirÅ”anas sistēmas, kas darbojas uz dax paredzētās mmap. fails;
    • Pievienots jauns CPU dÄ«kstāves apdarinātājs (cpuidle, izlemj, kad CPU var pārslēgt dziļos enerÄ£ijas taupÄ«Å”anas režīmos; jo dziļāks režīms, jo lielāks ietaupÄ«jums, taču arÄ« ilgāks laiks nepiecieÅ”ams, lai izietu no režīma) - TEO (uz taimera notikumiem orientēts pārvaldnieks ). LÄ«dz Å”im tika piedāvāti divi cpuidle apdarinātāji - ā€œizvēlneā€ un ā€œkāpnesā€, kas atŔķiras pēc heiristikas. "Izvēlnes" apstrādātājam ir zināmas problēmas ar heiristisku lēmumu pieņemÅ”anu, kuru novērÅ”anai tika nolemts sagatavot jaunu apdarinātāju. TEO ir pozicionēts kā alternatÄ«va "izvēlnes" apstrādātājam, nodroÅ”inot lielāku veiktspēju, vienlaikus saglabājot tādu paÅ”u enerÄ£ijas patēriņa lÄ«meni.
      Jauno apdarinātāju var aktivizēt, izmantojot sāknÄ“Å”anas parametru ā€œcpuidle.governor=teoā€;

    • Kā daļu no darba, lai novērstu 2038. gada problēmas, ko izraisa 32 bitu time_t tipa pārplÅ«de, ietver sistēmas izsaukumus, kas piedāvā 32 bitu laika skaitÄ«tājus 64 bitu arhitektÅ«rām. Rezultātā 64 bitu time_t struktÅ«ru tagad var izmantot visās arhitektÅ«rās. LÄ«dzÄ«gas izmaiņas ir ieviestas arÄ« opciju tÄ«kla apakÅ”sistēmā laikspiedolu tÄ«kla ligzdas;
    • Karstā lāpÄ«Å”anas sistēmā kodolam (dzÄ«vā ielāpÄ“Å”ana) pievienots "Atomic Replace" funkcija, lai atomiski piemērotu virkni izmaiņu vienai funkcijai. Å Ä« funkcija ļauj izplatÄ«t kopsavilkuma ielāpus, kas aptver vairākas izmaiņas vienlaikus, nevis pakāpenisku dzÄ«vu ielāpu uzlikÅ”anas procesu stingri noteiktā secÄ«bā, ko ir diezgan grÅ«ti uzturēt. Ja iepriekÅ” katras nākamās izmaiņas bija jābalsta uz funkcijas stāvokli pēc pēdējām izmaiņām, tagad ir iespējams vienlaikus izplatÄ«t vairākas izmaiņas, kas saistÄ«tas ar vienu sākotnējo stāvokli (t.i., uzturētāji var uzturēt vienu konsolidētu ielāpu attiecÄ«bā pret bāzes kodolu. viens no otra atkarÄ«gu ielāpu ķēdes );
    • Paziņots novecojuÅ”ais atbalsts a.out izpildāmā faila formātam un
      dzēsts kods pamatdatņu Ä£enerÄ“Å”anai a.out formātā, kas ir pamestā stāvoklÄ«. Formāts a.out ilgu laiku nav izmantots Linux sistēmās, un a.out failu Ä£enerÄ“Å”anu jau sen neatbalsta modernie rÄ«ki noklusējuma Linux konfigurācijās. Turklāt a.out failu ielādētāju var pilnÄ«bā ieviest lietotāja telpā;

    • BPF programmas pārbaudes mehānismam ir pievienota iespēja identificēt un noņemt neizmantoto kodu. Kodols ietver arÄ« ielāpus ar spinlock atbalstu BPF apakÅ”sistēmai, nodroÅ”inot papildu iespējas BPF programmu paralēlas izpildes pārvaldÄ«bai;
  • ŠžŠ±Š¾Ń€ŃƒŠ“Š¾Š²Š°Š½ŠøŠµ
    • Nouveau vadÄ«tājs pievienots atbalsts neviendabÄ«gai atmiņas pārvaldÄ«bai, ļaujot CPU un GPU piekļūt kopÄ«gām sinhronizētām atmiņas zonām. Koplietojamās virtuālās atmiņas sistēma (SVM, koplietojamā virtuālā atmiņa) tiek realizēta uz apakÅ”sistēmas HMM (Heterogeneous memory management) bāzes, kas ļauj izmantot ierÄ«ces ar savām atmiņas pārvaldÄ«bas vienÄ«bām (MMU, memory management unit), kurām var piekļūt. galvenā atmiņa. Jo Ä«paÅ”i, izmantojot HMM, varat organizēt kopÄ«gu adreÅ”u telpu starp GPU un CPU, kurā GPU var piekļūt procesa galvenajai atmiņai. SVM atbalsts paÅ”laik ir iespējots tikai Pascal Ä£imenes GPU, lai gan atbalsts tiek nodroÅ”ināts arÄ« Volta un Turing GPU. Turklāt Nouveau piebilda jauns ioctl, lai kontrolētu procesa atmiņas apgabalu migrāciju uz GPU atmiņu;
    • Intel DRM draiverÄ« GPU Skylake un jaunākām versijām (gen9+) ieslēgts Pēc noklusējuma ātrās palaiÅ”anas režīms novērÅ” nevajadzÄ«gas režīma izmaiņas sāknÄ“Å”anas laikā. Pievienots Š½Š¾Š²Ń‹Šµ ierīču identifikatori, kuru pamatā ir Coffelake un Ice Lake mikroarhitektÅ«ras. Coffelake čipsiem pievienots GVT atbalsts (GPU virtualizācija). Virtuālajiem GPU Ä«stenota VFIO EDID atbalsts. LCD paneļiem MIPI/DSI pievienots atbalsts ACPI/PMIC elementiem. ÄŖstenots jauni TV režīmi 1080p30/50/60 TV;
    • Pievienots atbalsts Vega10/20 BACO GPU amdgpu draiverim. Ieviestas Vega 10/20 jaudas pārvaldÄ«bas un Vega 10 dzesētāja vadÄ«bas tabulas. Pievienoti jauni PCI ierīču identifikatori Picasso GPU. Pievienots saskarne plānojamu atkarÄ«bu pārvaldÄ«bai, lai izvairÄ«tos no strupceļa;
    • Pievienots DRM/KMS draiveris ekrāna paātrinātājiem ARM Komeda (Mali D71);
    • Pievienots atbalsts Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 un Kingdisplay kd097d04 ekrāna paneļiem;
    • Pievienots atbalsts Rockchip RK3328, Cirrus Logic CS4341 un CS35L36, MediaTek MT6358, Qualcomm WCD9335 un Ingenic JZ4725B audio kodekiem, kā arÄ« Mediatek MT8183 audio platformai;
    • Pievienots atbalsts NAND kontrolleriem Flash STMicroelectronics FMC2, Amlogic Meson;
    • Pievienots akseleratora atbalsts Habana AI aparatÅ«ras sistēmām;
    • Pievienots atbalsts NXP ENETC gigabit Ethernet kontrolleriem un MediaTek MT7603E (PCIe) un MT76x8 bezvadu saskarnēm.

Tajā paŔā laikā Latīņamerikas BrÄ«vās programmatÅ«ras fonds veidojas
iespēja pilnÄ«gi bezmaksas kodols 5.1 Sākot no Linux bezmaksas 5.1-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ā mt7603 un goya draiveros ir atspējota blob ielāde. Atjaunināts blobu tÄ«rÄ«Å”anas kods draiveros un apakÅ”sistēmās wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk un touchscreen_dmi. Lāpu tÄ«rÄ«Å”ana lantiq xrx200 programmaparatÅ«ras ielādētājā ir apturēta, jo tā ir noņemta no kodola.

Avots: opennet.ru

Pievieno komentāru