Linux kernel 6.15

Amb la versió 6.15, el kernel Linux fa un pas endavant en rendiment, seguretat i compatibilitat. A continuació, repassem les millores més destacades.

S’ha optimitzat el codi d’AES-XTS, ja que contenia codi que queia en interrupcions innecessàries, permetent augmentar el rendiment en un 23%.

AES-CTR ara utilitza extensions x86 que permet execucions més ràpides de tasques complexes, guanyant fins a un 240% de rendiment extra.

Els càlculs CRC (checksums) ara són entre 4 i 29 vegades més ràpids gràcies a l’ús d’instruccions específiques de CPU.

IO_URING és una API d’entrada/sortida asíncrona que es va crear per optimitzar les interaccions d’aplicacions amb el kernel minimitzant els canvis de context.

Ara han afegit la característica zero-copy network receive, que permet rebre dades a través de la xarxa directament a espai d’usuari (abans rebia el contingut a memòria de kernel i després la copiava a l’espai d’usuari, enlentint molt més el procés).

En aquesta release del kernel, han mitigat l’exploit BHI (Branch History Injection).

Aquests atacs (com Spectre) manipulaven la predicció de la BPU (Branch Prediction Unit) perquè executés codi maliciós.

A la release 6.12 vam veure que VFS implementava la possibilitat que la mida de bloc fos més gran que la mida de pàgina. Ara els sistemes de fitxers XFS i BCacheFS ja ho suporten.

El desenvolupador d’aquest sistema de fitxers està treballant en mides de bloc dinàmiques segons cada disc.

A més, també s’ha afegit una funció de scrub que detecta i corregeix errors.

Per últim, Valve vol afegir suport per directoris case insensitive, útil per la compatibilitat amb jocs Windows a través de Wine (aquest canvi encara no està acceptat).

S’ha afegit suport per Zoned Storage. El que fa és dividir els discos en zones d’escriptura seqüencial, que millora el rendiment i la eficiència d’aquests.

Btrfs ha implementat compressió negativa (fins a -15) per poder reduir el consum de la CPU en equips limitats.

S’ha incrementat la mida del nom d’arxiu.

Aquest és un sistema de fitxers de només lectura, utilitzat entre altres per sistemes de desplegament de models. Ara suporta adreçament de 48 bits, augmentant el límit d’emmagatzematge fins a 1 exabyte.

Queda eliminat, ja que és un sistema de fitxers obsolet.

A processadors AMD tenim dues millores importants:

  • INVLDPGB: permet invalidar el TLB (Translation Lookaside Buffer) de manera més eficient i sense interrupcions entre CPUs.

  • Node driver: es substitueix el codi del “North bridge” per un driver modular.

El TLB (Translation Lookaside Buffer) és un búfer on el processador cacheja “traduccions” de memòria física a memòria virtual.

Intel per la seva part també té canvis importants:

  • Canvia la manera d’identificar la CPU en alguns casos, ara es farà via VMF (vendor model family).

  • Mitigació de vulnerabilitats: fins ara, als processadors amb diferents tipus de nuclis (E-Cores i P-Cores) es mitigaven les vulnerabilitats de la CPU a tots els nuclis. El problema era que, fer-ho a nuclis no afectats per la vulnerabilitat en qüestió, es perdia rendiment sense sentit. Ara això s’ha millorat i es duu a terme a cada nucli individualment.

  • Advanced Performance Extensions: es comença a treballar per afegir 16 registres més a la CPU, passant dels 16 actuals a 32).

  • TDX HLT fix: millores en el sistema de protecció TDX per màguines virtuals.

  • S’ha afegit un paràmetre de boot per testejar mitigacions en CPUs que no les necessitin (per testejar).

  • Quan carreguem un mòdul del kernel el podem carregar en una pàgina llarga executable de només lectura (ROX, Read-Only eXecutable). Amb això podem treure càrrega al TLB i guanyar rendiment.

  • S’ha netejat codi per arquitectures de 32 bits.

  • S’ha començat a treballar en un driver per Nvidia escrit en Rust. S’espera que sigui el substitut de l’actual Nouveau, i servirà per targetes gràfiques des de les RTX 2000 en endavant.

  • Intel ha incorporat Xe Shared Virtual Memory, permetent compartir memòria RAM amb la tarja gràfica.

  • A més, s’ha afegit una notificació a l’espai d’usuari quan la GPU quedi stuck, permetent intentar-ne la recuperació.

  • MSEAL()

    MSEAL() és una syscall que “segella” pàgines de memòria. En aquesta versió s’ha implementat que segelli també el memory mapping (que diu on està la pàgina, quins permisos tenim sobre ella,…).

    A més, ja es pot utiitzar per mapatges de sistema (fins ara només es podia utilitzar en processos d’usuari).

  • S’ha afegit una nova opció d’arrencada per configurar el nombre de fils que inicialitzen les Huge Pages.

  • A més, s’han dut a terme optimitzacions per mantenir les Huge Pages contigües a memòria.

  • Els requisits mínims per compilar el kernel han canviat:

    • GCC ≥ 8.1

    • LLVM ≥ 15.0

    • Python ≥ 3.9

  • S’ha afegit un nou subsistema per exposar interfícies de hardware (drivers) a l’espai d’usuari.

  • Turbostat ara suporta fins a 8192 nuclis.

  • Millores al mode tickless.

  • Nou suport per hardware.

I fins aquí el post d’avui. Si t’ha semblat útil pots deixar un comentari i compartir-lo. Ens veiem al següent!