Linux kernel 6.18
Introducció
En aquest article repassem les principals novetats del Kernel Linux 6.18: millores en gestió de memòria, nous mecanismes de seguretat, suport per hardware i optimitzacions en filesystems i virtualització.
Sheaves
En aquesta versió del kernel s’ha implementat un nou sistema de sheaves per millorar l’assignació de memòria, però primer hem d’entendre una mica com funciona aquest procés.
Com funcionava fins ara? Slab, Slob i Slub
Quan el kernel necessita un objecte petit, no demana memòria a nivell de pàgina, sinó que utilitza un allocador d’objectes:
-
Slab - Disseny original, divideix una pàgina en objectes més petits i els recicla.
-
Slob - Com Slab però per sistemes embedded.
-
Slub - Implementació moderna, simple i escalable (i la que s’utilitza actualment).
Slub funciona molt bé però té un problema: la contenció. Quants molts nuclis intenten interactuar amb objectes del mateix tipus (mateixa slab cache), competeixen per un lock intern, i en entorns amb molts nuclis pot empitjorar el rendiment.
Amb els sheaves el que es fa és implementar una nova capa a aquesta gestió de memòria, permetent:
-
Preallocar memòria segons tipus d’objectes
-
Oferint un sheaf amb cert nombre d’objectes per CPU, evitant locks globals
-
Sheaves adicionals per gestionar pics d’ús
Avantatges
Amb aquesta implementació, es pot assignar memòria sense locks globals, pel que:
-
Accelera les assignacions
-
Redueix la latència
-
Millora l’escalabilitat
Inconvenients
Si la política d’assignació no és adequada, pot augmentar l’us de memòria, empitjorar el rendiment i augmentar la feina del kernel.
Seguretat: AMD SEV-SNP CipherText Hiding
SEV-SNP és la tecnologia d’AMD que permet xifrar la memòria de les màquines virtuals per protegir-les de l’hipervisor.
Aquesta memòria funciona xifrant blocs de 16 bytes, utilitzant una clau de la màquina virtual i un tweak basat en l’adreça física de memòria.
El problema amb això (només amb AMD) era que movent memòria dins l’hipervisor, es podia obtenir informació sobre el text xifrat.
Per solucionar-ho, l’hipervisor ja no pot llegir ciphertext.
KVM: Suport per CET
S’ha afegit suport a KVM per CET (Control-Flow Enforcement Technology). CET conté dues funcionalitats:
-
Shadow Stacks (SHSTK)
Fa una còpia de l’stack per verificar modificacions malicioses. Era suportat per Intel i AMD i ara també per KVM.
-
Indirect Branch Tracking (IBT)
Qualsevol salt indirecte apunti a una instrucció ENDBRANCH.
Aquestes implementacions ajuden a mitigar atacs.
Arquitectures i mitigacions
Intel
Retpoline
Una de les tècniques que utilitzen les CPUs actuals és la execució especulativa, amb el que la CPU intenta predir les següents instruccions d’un programa i, si no ha predit correctament el programa, descarta el resultat i torna enrere.
El problema és que a vegades la CPU ha de fer salts a adreces que poden ser forçats per algun atacant i podria arribar a executar codi maliciós, i encara que la CPU en descarti el resultat, pot quedar canvis a la caché.
La solució que s’ha implementat és retpoline (return trampoline), quan hi ha instruccions on la CPU ha d’especular, la CPU cau en un loop on quedarà atrapada en un lloc segur i no podran segrestar-la.
TDX suporta Kexec (Kernel EXECute)
KEXEC és un mecanisme que utilitza el kernel per carregar i bootejar un kernel nou des d’un kernel corrent. Fins ara tenia problemes amb TDX (encriptació de memòria d’Intel), i han afegit la possibilitat de carregar un kernel nou des d’un kernel amb TDX.
Fix de rendiment Xeon6 PCIe
S’ha millorat el rendiment del controlador PCIe dels processadors Xeon6.
AMD
Xilinx
Suport i optimitzacions per hardware Xilinx.
Bulldozer patch
Hi havia instruccions que donaven conflictes al compilar un kernel de manera nativa. Ara han quedat corregides.
Longarch
S’ha afegit suport per Longson Security Engine amb RNG, TPM2 i més funcionalitats de seguretat.
RISC-V
Suport per extensions com:
-
MIPS vendor extension
-
Zicbop
-
bfloat16
-
SBI FWFT
TLB i cpa_flush()
S’han implementat millores en el mecanisme d’invalidació del TLB (Translation Lookaside Buffer), reduint latència en canvis de mapping.
Attack Vector Controls
Suport per la mitigació VMSCAPE.
Criptografia
S’ha implementat SHA-256 2-way interleaved, que permet processar blocs SHA256 en paral·lel.
Virtualització
Secure AVIC per AMD
AVIC és una alternativa a x2APIC amb acceleració per hardware.
Ara Secure AVIC assigna la instància a la màquina virtual, reduint la necessitat d’emulació del hardware.
Secure TSC
Evita que l’hipervisor manipuli el Timestamp Counter, oferint més seguretat i estabilitat de temps.
Bhyve
Millora el número màxim de vCPUs suportades.
AMD EPYC Genoa KVM/QEMU
S’ha millorat la compatibilitat i s’han afegit correccions.
KVM RISC-V
S’ha afegit suport per:
-
SBI FWFT
-
Zicbop
-
bfloat16
VFIO
El subsistema VFIO estava en risc de ser eliminat, però s’han trobat mantenidors.
DRM
TYR: nou driver per GPUs Mali
S’han començat a realitzar proves amb un nou driver per GPUs ARM Mali. A més, aquest driver està escrit en Rust.
Sistemes de fitxers
BcacheFS eliminat
S’ha eliminat BCacheFS del kernel.
BTRFS
Es resol un problema de rendiment que tenia a veure amb cgroups i lectura intensiva.
Suport inicial per block size > page size
Encara està en un estat experimental però segueix progressant.
XFS
Després d’uns dos anys des que s’implementés, ara Online FSCK ve habilitat per defecte.
SQUASHFS
SquashFS és un sistema d’arxius comprimit read-only.
S’ha implementat una millora a sparse files: ara permet copiar fitxers amb grans regions de zeros de manera més eficient (fins a 150 cops més ràpid).
F2FS
Ara utilitza hash-only lookup per defecte, millorant la eficiència en les cerques.
exFAT
S’ha optimitzat la càrrega del bitmap d’assignació.
overlayFS
S’ha implementat suport per case-insensitive.
HFS
Segueix mantingut, amb petites correccions.
DM-PCACHE
Nova capa de cache al device mapper per proporcionar baixa latència i alt rendiment al utilitzar un dispositiu de bloc lent.
I fins aquí el post d’avui. Si t’ha semblat útil pots deixar un comentari i compartir-lo. Ens veiem al següent!




