Pärast kahe kuu arendust esitles Linus Torvalds Linuxi tuuma versiooni 6.13. Kõige tähelepanuväärsemate muudatuste hulka kuuluvad: laiskade väljastamist võimaldav graafikurežiim, atomaarne kirjutamise tugi XFS-is ja Ext4-s, mehhanism „multigrain timestamps“, kohandatav polling-režiim võrgu alamsüsteemis, AutoFDO optimeerimisega koostamisvõimalus, ARM65 Guarded Control Stack kaitsemehhanismi tugi, virtuaalmasinate isoleerimine ARM CCA laienduse abil, eraldi virnad BPF-is, ReiserFS-i eemaldamine, virtual-cpufreq draiver, netlink API net-shaper, tmpfs-i montaažirežiim, mis arvestab järkleksioone, ja POSIX laienduste tugi SMB3-s, AMD Cache Optimizer draiver.
Uues versioonis on tehtud 14172 parandust 2086 arendajalt, patši suurus on 46 MB (muudatused puudutavad 15375 faili, lisatud on 598707 koodirida, kustutatud 406294 rida). Eelmises väljaandes oli 14607 parandust 2167 arendajalt, patši suurus oli 37 MB. Umbes 52% kõigist 6.13 esitatud muudatustest on seotud seadmedraiveritega, umbes 13% muudatustest puudutab riistvaraarhitektuuridele spetsiifilise koodi uuendamist, 11% on seotud võrgu alamsüsteemiga, 4% -ga failisüsteemidest ja 3% tuuma sisemiste alamsüsteemidega.
Peamised uuendused versioonis 6.13:
- Disski alamsüsteem, sisend/väljund ja failisüsteemid
- Lisatud multigrain timestamps mehhanism, mis võimaldab saada teavet failide muutmise või juurdepääsu aja kohta täpsusega, mis ületab millisekundi, kuid ilma, et see negatiivselt mõjutaks jõudlust. Täpsuse suurenemine tõi kaasa lisakulud, kuna metaandmete kirjutamise intensiivsus kettale suureneb, seega loodud uuenduses luuakse täpsemaid ajatempleid mitte kõigi failide jaoks, vaid ainult nende jaoks, mille puhul protsessid selliseid ajatempleid küsivad läbi getattr() kutsumise.
- Lisatud toetust aatomilistele kirjutamisoperatsioonidele, mille käigus andmete kirjutamine, mille suurus ületab sektori suuruse, toimub aatomiliselt salvestusseadmetel, mis pakuvad sellist võimalust. Praegu on aatomiline kirjutamine rakendatud XFS, Ext4 O_DIRECT (Direct I/O) režiimis ja md RAID 0/1/10 jaoks.
- Pakutud on uus failide viitade arvestuse mehhanism, mis tagab jõudluse kasvu 3-5% rohkem kui 255 lõime sisaldavates töökoormustes.
- Eemaldatud ReiserFS failisüsteemi rakendus, mis kuulutati eelmisel aastal vananenuks.
- Lisatud on sysctl parameeter „fs.dentry-negative“, et seada VFS-sse „dentry“ kirje eemaldamise poliitika (kaustade elementide sisemine esitus) pärast nende seonduvate failide kustutamist. Mõnede koormuste jaoks on optimaalne jätta sellised kustutatud failide kirjed alles, teiste puhul aga kustutada, seetõttu on kernelis võimalus valida (vaikimisi „dentry“ ei eemaldata automaatselt).
- Süsteemi kutsesse statmount() on lisatud lipp STATMOUNT_OPT_ARRAY, et tagastada failisüsteemi valikute loend stringide massiivis, mis lõpeb null-sümboliga ja ei kasuta „\000“ põgenemist. On lisatud toetus tagastada FS alamtüüp (fs_subtype, FUSE kasutamise määramiseks), ohutute monteerimisvalikute ja algsete superblookkide (sb_source) tagastamine.
- OverlayFS-is on võimaldatud määrata kihid läbi failikirjeldajate, mitte failiteede nimede kaudu.
- Failisüsteemi tmpfs on lisatud monteerimisvalik „casefold“, et töötada sümbolite suuruse üle arvestamata, ja valik „strict_encoding“, et blokeerida failide loomine, mille nimedes on ebaõigeid UTF-8 sümboleid.
- Esitletud on uus süsteemi kõnede komplekt failide laiendatud atribuutide haldamiseks: setxattrat(), getxattrat(), listxattrat() ja removexattrat(). Erinevalt süsteemi kõnedest setxattr(), getxattr(), listxattr() ja removexattr() nõuavad uued variandid kausta failideskirjeldaja määramist, mille suhtes failiteed otsitakse.
- Btrfs-sse on lisatud ioctl-operatsioon BTRFS_IOC_SUBVOL_SYNC_WAIT, mis hõlmab alajaotuste puhastamise lõpuni ootamist, võimaldades «btrfs subvolume sync» käsku teostada privileegideta kasutajal, kellel ei ole juurdepääsu ioctl SEARCH_TREE-le (kasulik varundamise rakendustes, mis puhastavad alajaotusi). Lisatud on ioctl-operatsioon ENCODED_READ, et lugeda io_uring'i kaudu kodeeritud andmeid, näiteks otse kokkusurutud ulatusi lugedes ilma dekompressioonita. Jätkatakse üleminekut mälulehtede (page folios) kasutamisele. Vähendatud konkurentide lukustuste (lock contention) esinemist sisseehitatud tagasiviidete otsimisel ja ulatuste puhverdes seiklemisel. Suurendatud on ulatuste kaardi kokkusurumise efektiivsust.
- EROFS (Extendable Read-Only File System) failisüsteemis, mis on mõeldud ainult kirjutamiseks ligipääsetavates osades, on rakendatud lseek() süsteemi kõne jaoks võimalus kasutada valikuid SEEK_HOLE ja SEEK_DATA.
- F2FS-is on lisatud seadmete peegeldamise toetamine („device aliasing“), mis võimaldab ajutiselt reserveerida ala F2FS-is, et kasutada osa blokeeringust teises failisüsteemis. Pärast välist toimingut saadakse reserveeritud ala tagasi F2FS-i. Näiteks saab luua failisüsteemi käsu abil „mkfs.f2fs -c /dev/vdc@vdc.file /dev/vdb“, pärast mida on seadme /dev/vdc sisu reserveeritud ja peegeldatud faili vdc.file ning jaotust /dev/vdc saab kasutada oma vajadusteks, näiteks vormindada teiseks failisüsteemiks. Reserveeritud sisu tagastamiseks piisab vdc.file faili kustutamisest.
- XFS-is on toetatud kvoteid reaalajas seadmete jaoks. Lisatud on metandmete kaust (metadata directory), kuhu paigutatakse kõik metandmed sisaldavad inode'id.
- FUSE-mehanismis on sisse lülitatud võimalus dünaamiliselt muuta maksimaalset lehtede arvu (FUSE_MAX_MAX_PAGES), kasutades "sysctl fs.fuse.max_pages_limit". Töös kasutatakse mälulehtede foliante (page folios).
- SMB-s on rakendatud POSIX-laiende tugi SMB3-le, mis on vajalik spetsiaalsete failitüüpide, nagu fifo, seadme failid ja sümboolsed lingid, salvestamiseks. Lisatud on võimalus mountida jagu alternatiivse parooliga, mida kasutatakse paroolide vahetamisel. Lisatud on uus mountimise valik "cifs.upcall" nimede ruumi määratlemiseks. Tagatud on sümboolsete ja plokkseadme failide tuvastamine, mis on loodud Windows NFS Serveris. Lisatud on tugi WSL-i (Windows Subsystem for Linux) stiilis sümboolsetele linkidele.
- Failisüsteemid UBIFS, ADFS, BEFS, HFS, HFSPLUS, HPFS, JFS ja ECRYPTFS on üle viidud uue partitsioonide mountimise API kasutusele.
- Failisüsteemid ja ECRYPTFS, UFS ja NILFS2 on üle viidud mälulehtede foliante (page folios) kasutusele.
- Mälu ja süsteemiteenused
- Planeerijas on rakendatud laisa esialgse eemaldamise mudel (PREEMPT_LAZY), mis vastab täieliku eemaldamise mudelile („full preemption”) reaalajaülesannete (RR/FIFO/DEADLINE) jaoks, kuid viibib tavaliste ülesannete (SCHED_NORMAL) eemaldamisega tikunurga piirini. See viivitus vähendab lukustuse hoidjate eemaldamise juhtumeid, mis võimaldab jõudlust läheneda vabatahtliku eemaldamise (voluntary preemption) mudelitele. Seega võimaldab uus mudel säilitada täieliku eemaldamise võimalused reaalajaülesannete suhtes, kuid vähendab tavaliste ülesannete jõudluse langust miinimumini. Lisaks lihtsustab uus mudel ülesannete eemaldamise operatsioonide loogikat tuumas, välistades käitlejad, mis asuvad tuuma teistes komponentides (kaugemal ülesannete planeerijast).
- Clangi kompilaatori koostamisel on võimalik kasutada optimeerimisi
Allikas: opennet.ru
