Lansarea kernel-ului Linux 6.13

După două luni de dezvoltare, Linus Torvalds a prezentat lansarea kernel-ului Linux 6.13. Printre cele mai notabile schimbări se numără: modul de expulzare leneș în planificatorul de sarcini, suport pentru scrierea atomică în XFS și Ext4, mecanismul „multigrain timestamps”, modul adaptiv de activare a polling-ului în subsistemul de rețea, posibilitatea de construire cu optimizări AutoFDO, suport pentru mecanismul de protecție ARM65 Guarded Control Stack, izolarea mașinilor virtuale prin extinderea ARM CCA, stive separate în BPF, eliminarea ReiserFS, driverul virtual-cpufreq, API-ul netlink net-shaper, modul de montare tmpfs cu considerare a registrului simbolurilor, suport pentru extensiile POSIX în SMB3, driverul AMD Cache Optimizer.

În noua versiune au fost acceptate 14172 de corecturi de la 2086 de dezvoltatori, dimensiunea patch-ului fiind de 46 MB (modificările au vizat 15375 de fișiere, adăugând 598707 linii de cod, eliminând 406294 linii). În ultima publicație au fost 14607 corecturi de la 2167 de dezvoltatori, iar dimensiunea patch-ului a fost de 37 MB. Aproximativ 52% din toate modificările prezentate în 6.13 sunt legate de driverele de dispozitive, aproximativ 13% din modificări au legătură cu actualizarea codului specific arhitecturilor hardware, 11% sunt legate de stiva de rețea, 4% de sistemele de fișiere și 3% de subsistemele interne ale kernel-ului.

Principalele noutăți în kernel-ul 6.13:

  • Subsistemul de disc, I/O și sistemele de fișiere
    • A fost adăugat mecanismul „multigrain timestamps”, care permite obținerea de informații despre timpul de modificare sau acces la fișiere cu o precizie mai mare de o milisecundă, fără a afecta negativ performanța. Creșterea preciziei etichetelor duce la costuri suplimentare din cauza intensificării scrierii de metadate pe disc, prin urmare, în implementarea propusă, etichetele mai precise sunt create nu pentru toate fișierele, ci doar pentru cele pentru care procesele solicită astfel de etichete prin apelul getattr().
    • A fost adăugat suport pentru operațiuni atomice de scriere, în care scrierea datelor, a căror dimensiune depășește dimensiunea sectorului, se realizează atomic pe dispozitive de stocare care oferă această posibilitate. În prezent, scrierea atomică este implementată pentru XFS, Ext4 în modul O_DIRECT (Direct I/O) și md RAID 0/1/10.
    • A fost propus un nou mecanism de numărare a referințelor pentru fișiere, asigurând un câștig de performanță de 3-5% în sarcini de lucru cu mai mult de 255 de fire.
    • Implementarea sistemului de fișiere ReiserFS a fost eliminată, care a fost declarată învechită anul trecut.
    • A fost adăugat parametrul sysctl „fs.dentry-negative” pentru a seta în VFS politica de curățare a înregistrărilor „dentry” (reprezentarea internă a elementelor de director) după ștergerea fișierelor asociate. Pentru anumite tipuri de sarcini, este mai optim să se păstreze astfel de înregistrări despre fișierele șterse, iar pentru altele - să se elimine, de aceea nucleul oferă posibilitatea de alegere (implicit, „dentry” nu sunt șterse automat).
    • În apelul de sistem statmount() a fost adăugat un flag STATMOUNT_OPT_ARRAY pentru a returna lista opțiunilor sistemului de fișiere sub formă de tablou de șiruri, care se termină cu caracterul nul și nu utilizează escapare „\000”. A fost adăugat suportul pentru returnarea subtipului FS (fs_subtype, pentru a determina utilizarea FUSE), opțiuni de montare în siguranță și superblocul sursă (sb_source).
    • În OverlayFS a fost adăugată posibilitatea specificării straturilor prin descriptorii de fișiere, nu prin numele căilor de fișiere.
    • În sistemul de fișiere tmpfs a fost adăugată opțiunea de montare „casefold” pentru a funcționa fără a ține cont de registrul caracterelor și opțiunea „strict_encoding” pentru a bloca crearea fișierelor cu nume ce conțin caractere incorecte UTF-8.
    • A fost propus un nou set de apeluri de sistem pentru gestionarea atributelor extinse ale fișierelor: setxattrat(), getxattrat(), listxattrat() și removexattrat(). Spre deosebire de apelurile de sistem setxattr(), getxattr(), listxattr() și removexattr(), noile variante necesită specificarea descriptorului de fișiere al directorului, în raport cu care se efectuează căutarea căii fișierului.
    • În Btrfs a fost adăugată operația ioctl BTRFS_IOC_SUBVOL_SYNC_WAIT, care include așteptarea finalizării curățării subvolumele, permițând executarea comenzii „btrfs subvolume sync” de către un utilizator fără privilegii, care nu are acces la ioctl SEARCH_TREE (util pentru aplicațiile de backup care curăță subvolumele). A fost adăugată operația ioctl ENCODED_READ pentru citirea prin io_uring a datelor codificate, de exemplu, pentru a citi direct extentii comprimate fără decompresie. A fost continuată munca pentru trecerea la utilizarea foliilor de pagină în memorie (page folios). A fost redusă apariția blocajelor concurente („lock contention”) în timpul căutării referințelor încorporate și în timpul parcurgerii bufferelor de extenti. A fost crescută eficiența comprimării hărții de extenti.
    • În sistemul de fișiere EROFS (Extendable Read-Only File System), destinat utilizării pe partiții accesibile în modul doar pentru citire, a fost implementată opțiunea de a utiliza în apelul de sistem lseek() opțiunile SEEK_HOLE și SEEK_DATA.
    • În F2FS a fost adăugată suportul pentru aliasarea dispozitivelor, permițând rezervarea temporară a unei zone în F2FS pentru utilizarea unei părți a dispozitivului de bloc într-un alt FS. După finalizarea operației externe, zona rezervată poate fi restituită în F2FS. De exemplu, se poate crea un FS prin comanda „mkfs.f2fs -c /dev/vdc@vdc.file /dev/vdb”, după care conținutul dispozitivului /dev/vdc va fi rezervat și reflectat în fișierul vdc.file, iar particiția /dev/vdc poate fi utilizată pentru propriile nevoi, cum ar fi formatarea sa pentru un alt FS. Pentru a returna conținutul rezervat, este suficient să ștergeți fișierul vdc.file.
    • În XFS a fost inclus suportul pentru cotele dispozitivelor realtime. A fost adăugat suportul pentru directorul de metadate, în care sunt plasate toate inode-urile cu metadate.
    • În mecanismul FUSE a fost inclusă posibilitatea de a schimba dinamic numărul maxim de pagini (FUSE_MAX_MAX_PAGES), folosind „sysctl fs.fuse.max_pages_limit”. În funcționare sunt implicate foliantele de pagină de memorie.
    • În SMB a fost implementat suportul pentru extensiile POSIX pentru SMB3, necesare pentru stocarea unor tipuri speciale de fișiere, cum ar fi fifo, fișierele de dispozitiv și linkurile simbolice. A fost adăugată posibilitatea de a monta o partiție cu o parolă alternativă, utilizată la rotirea parolelor. A fost adăugată o nouă opțiune de montare „cifs.upcall” pentru definirea spațiului de nume. A fost asigurată recunoașterea fișierelor de dispozitive simbolice și block, create în Windows NFS Server. A fost adăugat suportul pentru linkurile simbolice în stil WSL (Windows Subsystem for Linux).
    • Sistemele de fișiere UBIFS, ADFS, BEFS, HFS, HFSPLUS, HPFS, JFS și ECRYPTFS au fost migrate la utilizarea noului API pentru montarea partițiilor.
    • Sistemele de fișiere ECRYPTFS, UFS și NILFS2 au fost migrate la utilizarea foliantelor de pagină de memorie.
  • Memorie și servicii de sistem
    • În planificator a fost implementat un model de preemție leneșă (PREEMPT_LAZY), care corespunde modelului de preemție completă („full preemption”) pentru sarcinile în timp real (RR/FIFO/DEADLINE), dar amână preemția sarcinilor obișnuite (SCHED_NORMAL) până la limita tic-tac-ului. Această întârziere duce la reducerea cazurilor de preemție a deținătorilor de blocaje, ceea ce permite apropierea performanței de configurațiile care utilizează modelul de preemție voluntară (voluntary preemption). Astfel, noul model permite menținerea capacităților de preemție completă în raport cu sarcinile în timp real, dar minimizează scăderea performanței pentru sarcinile obișnuite. În plus, noul model simplifică logica operațiunilor de preemție a sarcinilor în nucleu, datorită excluderii din procesul de planificare a handler-elor care se află în alte componente ale nucleului (în afara planificatorului de sarcini).
    • La compilarea cu compilatorul Clang a fost oferită posibilitatea utilizării optimizărilor.

      Sursa: opennet.ro
Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster