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 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.