Nakon dva mjeseca razvoja, Linus Torvalds predstavio je izdanje Linux jezgre 6.0. Značajna promjena broja verzije učinjena je iz estetskih razloga i predstavlja formalni korak koji uklanja nelagodu zbog nakupljanja velikog broja izdanja u seriji (Linus se našalio da je razlog promjene broja grane taj što mu ponestaje prstiju na rukama i nogama za brojanje verzija). Među najvažnijim promjenama: podrška za asinkrono međuspremno zapisivanje u XFS, blokovni vozač ublk, optimizacija planera zadataka, mehanizam verifikacije ispravnog rada jezgre, podrška za blok šifru ARIA.
Glavne novine u jezgri 6.0:
- Sistem diska, ulaz/izlaz i datotečni sustavi
- U datotečni sustav XFS dodana je podrška za asinkrono međuspremno zapisivanje koristeći mehanizam io_uring. Testovi performansi provedeni uz pomoć alata fio (1 nit, veličina bloka 4KB, 600 sekundi, sekvencijalno zapisivanje) pokazuju povećanje broja operacija ulaza/izlaza u sekundi (IOPS) s 77k na 209k, brzine prijenosa podataka – s 314MB/s na 854MB/s, i smanjenje latencije s 9600ns na 120ns (80 puta).
- U datotečnom sustavu Btrfs implementirana je druga verzija protokola za naredbu „send“, dodajući podršku za dodatne metapodatke, slanje podataka većim blokovima (više od 64K) i prijenos ekstenta u komprimiranom obliku. Značajno je (do 3 puta) povećana performansa operacija izravnog čitanja zahvaljujući istovremenom čitanju do 256 sektora. Smanjeni su konflikti zaključavanja i ubrzana provjera metapodataka smanjenjem rezerviranih metapodataka za odgođene elemente.
- U datotečni sustav ext4 dodane su nove ioctl operacije EXT4_IOC_GETFSUUID i EXT4_IC_SETFSUUID za izdvajanje ili postavljanje UUID identifikatora pohranjenog u superbloku.
- U datotečnom sustavu F2FS predstavljen je način rada s niskom potrošnjom memorije koji optimizira rad na uređajima s malim kapacitetom RAM-a i smanjuje potrošnju memorije na račun smanjenja performansi.
- Dodana je podrška za autentifikaciju NVMe uređaja.
- U serveru U NFSv4 implementiran je limit na broj aktivnih klijenata, koji se postavlja kao 1024 dozvoljena klijenta na svaki gigabajt RAM-a u sustavu.
- U implementaciji CIFS klijenta poboljšane su performanse u načinu višekanalnog prijenosa.
- U sustav za praćenje događaja u FS fanotify dodan je nova oznaka FAN_MARK_IGNORE za ignoriranje specifičnih događaja.
- U FS Overlayfs, prilikom montiranja preko FS s mapiranjem identiteta korisnika, osigurana je ispravna podrška za POSIX-kompatibilne liste kontrole pristupa.
- Dodavan je blokovni upravljač ublk, koji prenosi specifičnu logiku na stranu pozadinskog procesa u prostoru korisnika i koristi sustav io_uring.
- Memorija i sistemske usluge
- U sustav DAMON (Data Access MONitor) dodane su nove mogućnosti koje omogućuju ne samo praćenje pristupa procesa radnoj memoriji iz prostora korisnika, već i utjecanje na upravljanje memorijom. Konkretno, predložen je novi modul „LRU_SORT“, koji osigurava reorganizaciju LRU (Least Recently Used) lista za povećanje prioriteta određenih stranica memorije.
- Omogućena je kreacija novih memorijskih regija koristeći mogućnosti sabirnice CXL (Compute Express Link), koja se koristi za uspostavljanje visok brze interakcije CPU-a s uređajima za pohranu. CXL omogućuje povezivanje novih memorijskih regija koje pružaju vanjski uređaji za pohranu i njihovo korištenje kao dodatne resurse fizičkog adresnog prostora za proširenje sistemske radne memorije (DDR) ili trajne memorije (PMEM).
- Riješeni su problemi s performansama sustava na procesorima AMD Zen, uzrokovani kodom dodanim prije 20 godina za zaobilaženje hardverskog problema u nekim čipsetima (dodavala se dodatna instrukcija WAIT, koja usporava procesor kako bi čipset mogao preći u stanje mirovanja). Promjena je dovela do smanjenja performansi pod opterećenjima u kojima se često izmjenjuju stanja mirovanja (idle) i aktivnosti (busy). Na primjer, nakon isključivanja zaobilaženja, prosječne vrijednosti testa tbench povećane su s 32191 MB/s na 33805 MB/s.
- Iz planera zadataka uklonjen je kod s heuristikom, koji omogućuje migraciju procesa na najmanje opterećene CPU-ove uzimajući u obzir predviđene dobitke u potrošnji energije. Programeri su zaključili da heuristika ne donosi potrebnu korist i da je jednostavnije ukloniti je te premještati procese bez dodatnih procjena svaki put kada takav premještaj potencijalno može dovesti do smanjenja potrošnje energije (na primjer, kada je ciljani CPU na razini s nižom potrošnjom energije). Isključivanje heuristike dovelo je do smanjenja potrošnje energije prilikom izvođenja intenzivnih zadataka, na primjer, u testu s dekodiranjem videa potrošnja energije smanjena je za 5,6%.
- Provedena je optimizacija raspodjele zadataka po jezgama CPU-a na velikim sustavima, što je omogućilo povećanje performansi pri nekim vrstama opterećenja.
- U sučelju za asinkrono ulaz/izlaz io_uring predložen je nova zastavica IORING_RECV_MULTISHOT, koja omogućuje korištenje moda 'multi-shot' sa sistemskim pozivom recv() za izvođenje više operacija čitanja s jednog mrežnog soketa odjednom. U io_uring je također implementirana podrška za mrežni prijenos bez međuspremničkog spremanja (zero-copy).
- Implementirana je mogućnost prebacivanja BPF programa, vezanih uz uprobe, u stanje mirovanja. U BPF je također dodan novi iterátor ksym za rad s tablicama simbola jezgre.
- Uklonjen je zastarjeli sučelje 'efivars' u sysfs, namijenjeno pristupu boot varijablama UEFI (za pristup EFI podacima sada se svugdje koristi virtualni FS efivarfs).
- U alatu perf implementirani su novi izvještaji za analizu sukoba blokada i vremena provedenog od strane procesora na izvođenju komponenti jezgre.
- Uklonjena je postavka CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3, koja je omogućavala kompilaciju jezgre u 'O3' mod optimizacije. Ističe se da se eksperimenti s modovima optimizacije mogu provoditi putem prosljeđivanja zastavica prilikom kompilacije ('make KCFLAGS=-O3'), a za dodavanje postavke u Kconfig potrebno je osigurati ponovljivo profiliranje performansi, koje pokazuje da primjena 'O3' rasporeda petlji donosi dobitak u odnosu na razinu optimizacije 'O2'.
- Dodana je debugfs sučelje za dobivanje informacija o radu pojedinih «memory shrinker»-a (procesa koji se pozivaju prilikom nedostatka memorije i obavljaju pakiranje struktura podataka jezgre radi smanjenja njihovog korištenja memorije).
- Za arhitekture OpenRISC i LoongArch implementirana je podrška za PCI sabirnicu.
- Za arhitekturu RISC-V implementirano je proširenje «Zicbom» za upravljanje uređajima s DMA, koji nisu usklađeni s predmemorijom (non-cache-coherent).
- Virtualizacija i sigurnost
- Dodana je mehanizam verifikacije RV (Runtime Verification) za provjeru ispravnosti rada na visoko pouzdanim sustavima, koji jamče odsutnost grešaka. Provjera se provodi tijekom izvođenja putem povezivanja obrađivača s točkama praćenja, uspoređujući stvarni tijek izvođenja s unaprijed definiranim referentnim determinističkim modelom automata koji određuje očekivano ponašanje sustava. Usporedba s modelom tijekom izvođenja smatra se lakšim i praktičnijim načinom potvrde ispravnosti izvođenja na kritično važnim sustavima, nadopunjujući klasične metode potvrde pouzdanosti. Među prednostima RV ističe se mogućnost osiguranja stroge verifikacije bez odvojene implementacije cijelog sustava na jeziku modeliranja, kao i fleksibilna reakcija na nepredviđene događaje.
- Integrirani su dijelovi jezgre za upravljanje enklavama temeljenima na tehnologiji Intel SGX2 (Software Guard eXtensions), koja omogućava aplikacijama izvođenje koda u izoliranim šifriranim područjima memorije, čiji je pristup ostatku sustava ograničen. Tehnologija Intel SGX2 podržava se u čipovima Intel Ice Lake i Gemini Lake, i razlikuje se od Intel SGX1 dodatnim instrukcijama za dinamičko upravljanje memorijom enklava.
- Za arhitekturu x86 implementirana je mogućnost prijenosa sjemena za generator pseudo slučajnih brojeva putem postavki programskog učitavanja.
- U LSM modulu SafeSetID dodana je mogućnost upravljanja promjenama koje se provode kroz poziv setgroups(). SafeSetID omogućava sistemskim servisima sigurnu upravljanje korisnicima bez podizanja privilegija (CAP_SETUID) i bez dobivanja ovlasti korisnika root.
- Dodana je podrška za blok šifru ARIA.
- U modulu za upravljanje sigurnošću temeljenom na BPF realizirana je mogućnost povezivanja obrađivača s pojedinim procesima i grupama procesa (cgroup).
- Dodana je funkcionalnost watchdog za identifikaciju zastoja gostujućih sustava putem praćenja aktivnosti vCPU-a.
- Mrežni subsistem
- U BPF pod sustav dodani su obrtnici za generiranje i provjeru SYN kolačića. Također je dodan skup funkcija (kfunc) za pristup i promjenu stanja veza.
- U bežični stog dodana je podrška za mehanizam MLO (Multi-Link Operation) definiranu u specifikaciji WiFi 7, koja omogućuje uređajima istovremeno primanje i slanje podataka koristeći različite frekvencijske opsege i kanale, primjerice, za uspostavljanje više komunikacijskih kanala između pristupne točke i korisničkog uređaja.
- Povećana je učinkovitost implementacije protokola TLS ugrađene u jezgru.
- Dodana je opcija naredbenog retka jezgre "hostname=", koja omogućuje postavljanje imena hosta u ranoj fazi pokretanja, prije nego što se pokrenu korisnički prostorni sastavci.
- Oprema
- U i915 (Intel) drajveru osigurana je podrška za diskretne grafičke karte Intel Arc (DG2/Alchemist) A750 i A770. Predložena je početna implementacija podrške za GPU Intel Ponte Vecchio (Xe-HPC) i Meteor Lake. Nastavljen je rad na podršci za platformu Intel Raptor Lake.
- U amdgpu drajveru nastavljen je rad na osiguravanju podrške za AMD platforme RDNA3 (RX 7000) i CDNA (Instinct).
- U Nouveau drajveru prepravljen je kod podrške za GPU NVIDIA nv50.
- Dodan je novi DRM drajver logicvc za LogiCVC ekrane.
- U v3d drajveru (za GPU Broadcom Video Core) implementirana je podrška za Raspberry Pi 4 platforme.
- U msm drajveru dodana je podrška za GPU Qualcomm Adreno 619.
- U Panfrost drajveru dodana je podrška za GPU ARM Mali Valhall.
- Dodana je početna podrška za procesore Qualcomm Snapdragon 8cx Gen3 korištene u Lenovo ThinkPad X13s prijenosnicima.
- Dodani su audio drajveri za AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake i Mediatek MT8186 platforme.
- Dodana je podrška za akceleratore sustava za strojno učenje Intel Habana Gaudi 2.
- Dodana je podrška za ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.
Istovremeno, Latinskoamerička Zaklada za slobodni softver razvila je potpuno slobodnu verziju jezgre 6.0 — Linux-libre 6.0-gnu, očišćenu od elemenata firmware-a i drajvera koji sadrže neće slobodne komponente ili delove koda čija je upotreba ograničena od strane proizvođača. U novom izdanju onemogućena je upotreba blobova u drajveru CS35L41 HD-audio i drajveru s UCSI interfejsom za mikrokontrolere STM32G0. Očistili su dts datoteke za čipove Qualcomm i MediaTek. Promenjeno je isključivanje blobova u drajveru MediaTek MT76. Ažuriran je kod za čišćenje blobova u drajverima i podsistemima AMDGPU, Adreno, Tegra VIC, Netronome NFP i Habanalabs Gaudi2. Prekinuto je čišćenje drajvera VXGE, koji je uklonjen iz jezgre.
Izvor: opennet.ru
