Linux kernel 6.14 ja és aquí
Introducció
Linux Kernel 6.14 ja és aquí, i arriba amb millores en gaming, optimitzacions de rendiment i més suport per a arquitectures modernes. Aquesta versió inclou una nova funcionalitat de sincronització per jocs, optimitzacions en la gestió de memòria i una presència creixent de Rust en el nucli.
En aquest article, repassem les principals novetats d’aquesta versió.
Gaming
S’ha afegit NTSync en aquesta versió del kernel. Aquesta funcionalitat millora la compatibilitat dels mecanismes de sincronització utilitzats en Windows, que eren limitants molt importants.
Amb aquesta nova implementació, el kernel té un sistema natiu de sincronització, sense necessitat d’emular-lo com fins ara, eliminant una capa entre el kernel i el joc i millorant notablement el rendiment en jocs.
Windows utilitza primitives de sincronització (mutexs) per gestionar fils. En versions anteriors, Wine gestionava aquests mutexs en espai d’usuari, cosa que afegia latència.
Amb la nova funcionalitat NTSync, el nucli de Linux implementa directament aquestes primitives, eliminant part de la sobrecàrrega causada per Wine. Aquesta implementació millora notablement el rendiment en jocs, sobretot en els que utilitzen molt la sincronització.
Optimització del TLB
Quan la CPU necessita memòria, ha de consultar la taula de paginació, que és on la memòria física està mapejada a memòria virtual (la que veuen els processos). Aquesta taula està emmagatzemada en memòria i pot enlentir processos, pel que els fabricants de CPU van implementar el Translation Lookaside Buffer.
El Translation Lookaside Buffer és un espai dins la memòria del processador on es cacheja la última traducció de memòria. Aquest búfer s’ha de “reiniciar” (flush) en cada canvi entre processos, ja que cada procès té el seu espai d’adreces.
Paral·lelament, un desenvolupador va trobar que una funció que intercanviava processos en execució utilitzava molt de temps en la CPU. Aquest intercanvi de processos utilitza una funció que fa un “clear” de mm_cpumask (diu en quins processadors es pot executar un procès específic), però aquest clear requeria una operació addicional de l’scheduler, afegint latència.
A la nova versió de kernel, s’ha programat que el flush del TLB i el clear de mm_cpumask es realitzin alhora, optimitzant l’intercanvi de processos i fent Linux més eficient.
Rust
Rust cada vegada té més presència dins el kernel, sobretot en drivers. Tot i que la majoria d’integracions en Rust encara depenen de bindings per interactuar amb el codi en C, ja hi ha components completament en Rust.
A més, recentment hem tingut una controvèrsia amb la implementació d’aquest llenguatge dins el kernel, ja que un desenvolupador es va oposar a que el seu codi interactués amb codi en Rust. Linus va respondre’l deixant-li ben clar que Rust és part del futur del kernel (veure el correu).
FSNotify i sistemes de fitxers
Ara la funció FSNotify inclou FS_PRE_ACCESS. Aquesta nova implementació permet que quan s’accedeix a un arxiu, es pot interceptar un accés a l’arxiu i permet modificar les dades abans que l’usuari les vegi.
I tenim algunes millores en sistemes de fitxers:
-
BTRFS
S’ha implementat l’algoritme de lectura round-robin, oferint més rendiment.
-
XFS
Ara suporta reverse mapping i reflinking per compartir blocs entre arxius.
-
NFS
Millores en el protocol localio i optimitzacions en atributs delegats.
-
FUSE
Integració amb IO_URING, donant més eficiència.
-
Altres millores per F2FS, OCFS2, SquashFS, CIFS i AFS.
Arquitectures
AMD
-
Millora del Secure Encrypted Virtualization (SEV), amb Secure TSC i Segmented RMP, que millora la protecció de memòria en màquines virtuals.
-
Millor gestió energètica per processadors Ryzen i EPYC, reduint el consum energètic sense perdre rendiment.
-
Driver per AMD XDNA Ryzen AI NPU6.
Intel
-
ACPI CPPC millorat per optimitzar la gestió d’energia i P-states.
-
Millores en TDX per més confidencialitat en entorns virtualitzats.
PowerPC
- Suport per Lazy preemption.
Millores generals al nucli
Core
-
El pid_max ara va lligat als PID namespaces (útil per contenidors).
-
Millores a madvise(), evitant que entrades de la taula de pàgines ocupin tota la memòria.
-
Els cgroups ara poden gestionar la VRAM, oferint més possibilitats a contenidors que utilitzin aplicacions gràfiques.
Altres millores
-
Nou DRM Boot Logger, mostrant més detalls.
-
Millora en temps de suspend/resume.
-
Els moduls de kernel permeten ser signats amb SHA512 (fins ara utilitzaven SHA1).
-
Perf ara suporta fins a 4096 nuclis (abans 2048).
I fins aquí el post d’avui. Si t’ha semblat útil pots deixar un comentari i compartir-lo. Ens veiem al següent!