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