Tijdens Linux Plumbers Conference 2026, gehouden van 5 tot en met 7 oktober, lieten eerste experimenten met auto-vectorisatie van de RISC-V-kernel uiteenlopende resultaten zien. De winst hing af van de werklast, de bewerking en het hardwaredoel: LZ4-compressie boekte op ASC-X 15,1% winst, maar liep op K3 7,5% terug. De conferentiepagina omschrijft het werk als verkennend; de slides geven de uitsplitsing per test.

Resultaten verschillen per werklast en hardwaredoel

Auto-vectorisatie laat een compiler geschikte code omzetten in vectorinstructies. De prestaties hieronder zijn percentages ten opzichte van mtune; ze zijn afkomstig uit de experimenten in de conferentieslides. De afkortingen ASC-X, ASC-S en K3 zijn de hardwaredoelen zoals die daarin staan.

Werklast en bewerkingHardwaredoelResultaat ten opzichte van mtuneMeetcontext
LZ4 (zram), comprimerenASC-X+15,1%Compressie
LZ4 (zram), decomprimerenASC-X+1,0%Decompressie
LZ4 (zram), comprimerenK3-7,5%Compressie
LZ4 (zram), decomprimerenK3+9,4%Decompressie
Btrfs (fsmeta), aanmakenASC-X+5,2%Metadata aanmaken
Btrfs (fsmeta), verwijderenASC-X+8,4%Metadata verwijderen
Btrfs (fsmeta), aanmakenK3+6,9%Metadata aanmaken
Btrfs (fsmeta), verwijderenK3+3,7%Metadata verwijderen
XFS (fsmeta)ASC-X+2,5% en 5,0%Twee resultaten; de bewerkingen zijn niet afzonderlijk benoemd
XFS (fsmeta)K3Niet significantXFS-metadatatest
NginxASC-S+0,9% tot +2,2%Servergroottes van 80 B tot 32 KB
NginxK3+0,3% tot +1,9%Servergroottes van 80 B tot 32 KB

De uitersten bij LZ4 laten zien waarom één piekcijfer niet volstaat: compressie en decompressie zijn verschillende tests, en hetzelfde type werk kan per doel anders uitpakken. Ook bij Btrfs verschilt de uitkomst tussen aanmaken en verwijderen. Voor K3 noemt de XFS-test geen significant resultaat. De slides rapporteren deze waarden als winst ten opzichte van mtune.

Dat verschil is ook zichtbaar in het totaal: over de systeembenchmarks op K3 rapporteert de presentatie een geometrisch gemiddelde van +0,1%. Daar staan negatieve uitschieters tegenover, waaronder -7,5% voor LZ4-compressie en -2,51% en -4,06% voor respectievelijk de proces- en threadtests van hackbench. Een afzonderlijke slide behandelt een niet-portabele build die sterker op de doelprocessor is afgestemd. Die rapporteert voor K3 een geometrisch gemiddelde van +4,98% over 24 systeembenchmarks en +34,8% voor zram-LZ4. Dat zijn andere vergelijkingsvoorwaarden dan de resultaten in de tabel.

Userspace-instellingen regelen het kernelgebruik niet

De Linux-instellingen voor de RISC-V Vector-extensie gelden voor gebruikersprogramma’s. PR_RISCV_V_SET_CONTROL en PR_RISCV_V_GET_CONTROL regelen de Vector-toegang van een userspace-thread; /proc/sys/abi/riscv_v_default_allow bepaalt de standaard voor nieuwe userspace-processen. De Linux-documentatie beschrijft deze interfaces als userspace-regelingen.

De kernelproef vraagt om afzonderlijk beheer van de vectorstatus. In de slides staan de functies kernel_vector_begin() en kernel_vector_end() voor het afbakenen van vectorwerk en het opslaan en herstellen van die status. Dat is een ander mechanisme dan de prctl()- en sysctl-instellingen voor gebruikersprocessen. In het getoonde voorbeeld zijn hard-IRQ- en NMI-contexten uitgesloten.

Contextbeheer en afstemming op een processor

Vectorlengte-onafhankelijkheid — code kunnen laten werken met verschillende vectorlengtes — maakt het beheer van de vectorstatus een van de aandachtspunten. Het opslaan van de registers v0–v31 neemt volgens de slides 512 B in beslag bij VLEN 128 en 4 KiB bij VLEN 1024. Die cijfers gaan over de registerstatus die wordt opgeslagen; ze beschrijven niet het totale geheugengebruik van de kernel.

De presentatie noemt GCC 16.1 en -mtune=tt-ascalon-d8 in voorbeelden van auto-vectoriseerbare kernelcode. Dat is een concreet compiler- en afstemmingsvoorbeeld, geen instelling die voor alle benchmarkresultaten is vastgesteld. De LPC-beschrijving noemt zowel het beheer van vectorcontexten als het onderhoud van de auto-vectoriseerde code als uitdagingen.