Nakon dva mjeseca razvoja, Linus Torvalds je predstavio izdanje jezgre Linux 6.13. Među najistaknutijim promjenama su: način „lenjog izbacivanja“ u raspoređivaču zadataka, podrška za atomsko zapisivanje u XFS i Ext4, mehanizam „multigrain timestamps“, adaptivni način uključivanja polling-a u mrežnoj podsustavu, mogućnost kompilacije s optimizacijama AutoFDO, podrška za mehanizam zaštite ARM65 Guarded Control Stack, izolacija virtualnih strojeva pomoću proširenja ARM CCA, odvojeni stekovi u BPF, uklanjanje ReiserFS-a, driver virtual-cpufreq, netlink API net-shaper, način montiranja tmpfs s obzirom na velika i mala slova, podrška za POSIX-ekstenzije u SMB3, driver AMD Cache Optimizer.
U novu verziju uključeno je 14172 ispravki od 2086 programera, veličina patcheva je 46 MB (promjene su obuhvatile 15375 datoteka, dodano je 598707 redaka koda, uklonjeno 406294 redaka). U prethodnom izdanju bilo je 14607 ispravki od 2167 programera, a veličina patcheva bila je 37 MB. Oko 52% svih promjena u 6.13 odnosi se na upravljačke drajvere, otprilike 13% promjena je vezano uz ažuriranje koda specifičnog za hardverske arhitekture, 11% se odnosi na mrežni stog, 4% na datotečne sustave, a 3% na unutarnje sustave jezgre.
Glavne novosti u jezgri 6.13:
- Sistem diska, ulaz/izlaz i datotečni sustavi
- Dodana je mehanizam „multigrain timestamps“, koji omogućava dobivanje informacija o vremenu izmjene ili pristupa datotekama s točnošću većom od milisekunde, no bez negativnog utjecaja na performanse. Povećanje točnosti oznaka dovodi do dodatnih troškova zbog povećane intenziteta zapisivanja metapodataka na disk, stoga se u predloženoj implementaciji točnije oznake kreiraju ne za sve datoteke, već samo za one za koje procesi zahtijevaju takve oznake pozivom getattr().
- Dodana je podrška za atomske operacije zapisivanja, pri čemu se zapis podataka koji premašuje veličinu sektora obavlja atomski na uređajima za pohranu koji pružaju takvu mogućnost. Trenutno je atomsko zapisivanje implementirano za XFS, Ext4 u načinu O_DIRECT (Direct I/O) i md RAID 0/1/10.
- Predložen je novi mehanizam za brojanje referenci za datoteke, koji osigurava povećanje performansi za 3-5% u radnim opterećenjima s više od 255 niti.
- Uklonjena je implementacija datotečnog sustava ReiserFS, koja je prošle godine proglašena zastarjelom.
- Dodana je sysctl-ova opcija „fs.dentry-negative“ za postavljanje VFS politike čišćenja „dentry“ unazad nakon brisanja povezanih datoteka. Za neke vrste opterećenja optimálnije je ostaviti takve zapise brisanih datoteka, dok za druge — brisati ih, stoga je u jezgru omogućena opcija izbora (zadano „dentry“ se automatski ne brišu).
- U sistemski poziv statmount() dodana je opcija STATMOUNT_OPT_ARRAY za vraćanje popisa opcija datotečnog sustava u obliku niza stringova koji završavaju nultim simbolom i ne koriste "\000". Dodana je podrška za vraćanje podtipa FS (fs_subtype, za prepoznavanje korištenja FUSE), opcija sigurnog montiranja i izvorni superblok (sb_source).
- U OverlayFS dodana je mogućnost navođenja slojeva preko datotečnih deskripcija, a ne imenom datotečnih putanja.
- U datotečni sustav tmpfs dodana je opcija montiranja „casefold“ za rad bez obzira na velika i mala slova i opcija „strict_encoding“ za blokiranje kreiranja datoteka s imenima koja sadrže neispravne UTF-8 simbole.
- Predložen je novi skup sistemskih poziva za upravljanje proširenim atributima datoteka: setxattrat(), getxattrat(), listxattrat() i removexattrat(). Za razliku od sistemskih poziva setxattr(), getxattr(), listxattr() i removexattr(), nove varijante zahtijevaju navođenje datotečnog deskriptora mape, u odnosu na koju se pretražuje datotečni put.
- U Btrfs dodana je ioctl-operacija BTRFS_IOC_SUBVOL_SYNC_WAIT, koja uključuje čekanje na završetak čišćenja podvolumen, što omogućuje izvršenje komande „btrfs subvolume sync“ neprivilegiranom korisniku bez pristupa ioctl SEARCH_TREE (korisno u aplikacijama za sigurnosno kopiranje koje čiste podvolumen). Dodana je ioctl-operacija ENCODED_READ za čitanje putem io_uring kodiranih podataka, na primjer, za čitanje izravno sa komprimiranih ekstencija bez dekompresije. Nastavljena je aktivnost na prelasku na korištenje folija stranica memorije (page folios). Smanjeno je pojavljivanje konkurentnih zaključavanja („lock contention“) prilikom pretraživanja ugrađenih povratnih referenci i prilikom prolaska kroz bafer ekstencija. Povećana je učinkovitost kompresije mape ekstencija.
- U datotečnom sustavu EROFS (Proširivi samo-za-čitanje datotečni sustav), namijenjenom za korištenje na particijama dostupnim u režimu samo-za-čitanje, implementirana je mogućnost korištenja opcija SEEK_HOLE i SEEK_DATA u sistemskom pozivu lseek().
- U F2FS dodana je podrška za odražavanje uređaja („device aliasing“), koja omogućava privremeno rezerviranje područja u F2FS za korištenje dijela blok uređaja u drugom FS-u. Nakon završetka vanjske operacije, rezervirano područje može se vratiti u F2FS. Na primjer, može se stvoriti FS naredbom „mkfs.f2fs -c /dev/vdc@vdc.file /dev/vdb“, nakon čega će sadržaj uređaja /dev/vdc biti rezerviran i odražen u datoteku vdc.file, a particija /dev/vdc može se koristiti za vlastite potrebe, primjerice, formatirati za drugi FS. Da biste vratili rezervirani sadržaj, dovoljno je izbrisati datoteku vdc.file.
- U XFS uključena je podrška za kvote za realtime uređaje. Dodana je podrška za direktorij s metapodacima (metadata directory), u kojem se nalaze svi inode-ovi s metapodacima.
- U mehanizmu FUSE uključena je mogućnost dinamičkog mijenjanja maksimalnog broja stranica (FUSE_MAX_MAX_PAGES), korištenjem „sysctl fs.fuse.max_pages_limit“. U radu su uključeni folianti stranica memorije (page folios).
- U SMB implementirana je podrška za POSIX proširenja za SMB3, potrebna za pohranu posebnih vrsta datoteka, kao što su fifo, datoteke uređaja i simboličke veze. Dodana je mogućnost montiranja particije s alternativnom lozinkom koja se primjenjuje prilikom rotacije lozinki. Dodana je nova opcija montiranja „cifs.upcall“ za određivanje prostora imena. Osigurano je prepoznavanje datoteka simboličnih i blok uređaja stvorenih u Windows NFS Serveru. Dodana je podrška za simboličke veze u stilu WSL (Windows Subsystem for Linux).
- Datotečni sustavi UBIFS, ADFS, BEFS, HFS, HFSPLUS, HPFS, JFS i ECRYPTFS prebačeni su na korištenje novog API-ja za montiranje particija.
- Datotečni sustavi ECRYPTFS, UFS i NILFS2 prebačeni su na korištenje folijanta stranica memorije (page folios).
- Memorija i sistemske usluge
- U planerovanju je implementiran model lenjog premeštanja zadataka (PREEMPT_LAZY, lazy preemption), koji odgovara modelu punog premeštanja („full preemption“) za realtime zadatke (RR/FIFO/DEADLINE), ali odlaže premeštanje običnih zadataka (SCHED_NORMAL) do granice takta. Odelayena premeštanja smanjuje slučajeve premeštanja držača zaključavanja, što omogućava približavanje performansi konfiguracijama koje koriste model dobrovoljnog premeštanja (voluntary preemption). Tako nova model omogućava očuvanje mogućnosti potpunog premeštanja u odnosu na realtime zadatke, ali minimizira pad performansi za obične zadatke. Pored toga, novi model pojednostavljuje logiku operacija premeštanja zadataka u jezgru, isključujući iz procesa planiranja selektore koji se nalaze u drugim komponentama jezgra (van planera zadataka).
- Prilikom kompajliranja s Clang kompajlerom omogućena su poboljšanja.
Izvor: opennet.ru
