De nieuwe Linux-kernel (6.13) introduceert fijnmazige timestamps en verbeterde virtualisatiebeveiliging voor ARM64.
Op de hoogte blijven van al het Linux-nieuws?
Schrijf je in voor de gratis nieuwsbrief:
Lancering op schema met belangrijke patches
Precies op schema verscheen in januari de nieuwe Linux-kernel 6.13, na zeven release-kandidaten. Opmerkelijk was de toevoeging van kritieke patches, die ook worden doorgevoerd in eerdere kernelversies.
Wijzigingen in de scheduler: van vier naar drie multitasking-modi
Een belangrijk aandachtspunt van Linux-kernel 6.13 is opnieuw de verfijning van de scheduler. De multitasking-modi worden herzien en teruggebracht van vier naar drie. In de PowerPC-sector betekent dit het einde van een tijdperk.
Elke moderne kernel van een besturingssysteem, zoals Linux, maakt gebruik van “preëmptief multitasking”. Preëmptief betekent “voorrang gevend” of “onderbrekend” (Engels: preemptive). Om de illusie van parallel draaiende programma’s te creëren, krijgen processen (of threads) tijdslots toegewezen waarin ze worden uitgevoerd op de processor of een kern ervan. Zodra zo’n tijdslot verstreken is, slaat de kernel de status van het huidige proces op, laadt de status van een ander proces in en start dat met de beschikbare rekenkracht. Dit proces wordt contextswitching genoemd.
Overzicht van de bestaande preëmptiemodi
Tot nu toe bood de Linux-kernel vier verschillende preëmptiemodi. De eenvoudigste was PREEMPT_NONE, waarbij een proces pas plaatsmaakt voor een ander wanneer zijn tijdslot volledig is verlopen. PREEMPT_VOLUNTARY maakt het mogelijk om een proces op verschillende vooraf gedefinieerde punten in de kernel te onderbreken, zelfs als de tijd nog niet op is.
Een stap verder gaat PREEMPT_FULL, waarbij een proces op elk moment kan worden onderbroken, behalve op kritieke punten waar de kernel dit expliciet verbiedt. Dit is bijvoorbeeld het geval wanneer een proces of thread een spinlock vasthoudt. Een spinlock is een mechanisme dat voorkomt dat meerdere processen tegelijk toegang krijgen tot gedeelde bronnen. Slechts één proces kan de spinlock tegelijk vasthouden, terwijl de anderen moeten wachten tot deze wordt vrijgegeven.
Ten slotte introduceert PREEMPT_RT, vooral bedoeld voor real-time toepassingen, nog strengere eisen aan de proceswisseling. Met deze modus is het zelfs mogelijk een proces te onderbreken terwijl het een spinlock vasthoudt.
Van PREEMPT_NONE tot PREEMPT_RT neemt de responsiviteit van het systeem geleidelijk toe. Dit betekent dat het sneller reageert op gebeurtenissen zoals toetsaanslagen, muisbewegingen of hardware-interrupts. Dit gaat echter ten koste van een stabiele uitvoering van processen: hoe vaker een proces onderbroken wordt, hoe meer fragmentatie en overhead er ontstaat. Vooral rekenintensieve taken presteren beter als ze langere tijd ongestoord kunnen draaien.
Daarom bestaat er geen universele preëmptiemodus die voor alle workloads optimaal is. Afhankelijk van de taak en de benodigde systeemtijd en bronnen, is de ene of de andere modus geschikter. De meeste distributies leveren de kernel standaard met de PREEMPT_DYNAMIC-modus, waarmee het mogelijk is om bij het opstarten tussen de modi te schakelen, met uitzondering van PREEMPT_RT. De standaardmodus is hierbij PREEMPT_VOLUNTARY.
Wie wil weten welke preëmptiemodus momenteel actief is, kan dit uitlezen via het bestand /sys/kernel/debug/sched/preempt. Een eenvoudig cat-commando geeft de modus weer. Als PREEMPT_DYNAMIC actief is, levert dit een output zoals “none (voluntary) full”, waarbij de huidige modus tussen haakjes wordt gemarkeerd. Bij het opstarten kan de modus worden ingesteld via de kernel-opdrachtregel, bijvoorbeeld met preempt=full voor PREEMPT_FULL.
Afhankelijk van de gekozen preëmptiemodus zijn er veel punten in de kernel waar een contextswitch kan plaatsvinden, zelfs voordat een tijdslot volledig is verlopen. De kernel moet dan telkens beslissen of een proces moet worden onderbroken, wat extra overhead genereert en inefficiëntie kan veroorzaken.
Op de hoogte blijven van al het Linux-nieuws?
Schrijf je in voor de gratis nieuwsbrief:
Nieuwe preëmptiemodus: Lazy Preempt (PREEMPT_LAZY)
Met Linux 6.13 komt er een nieuwe modus bij: Lazy Preempt (PREEMPT_LAZY). Deze stelt contextwissels uit als een onderbreking niet direct noodzakelijk is. In plaats van onmiddellijk te schakelen, wordt gewacht op een gunstig moment, zoals het einde van een kritisch codeblok of de overgang van user space naar kernel space. Alleen bij urgente situaties wordt het proces direct onderbroken.
Deze nieuwe modus is een combinatie van PREEMPT_NONE en PREEMPT_VOLUNTARY, en vervangt beide. PREEMPT_FULL en PREEMPT_RT blijven behouden.
Belangrijke patch voor de EEVDF-scheduler
Op het gebied van de scheduler werd op het laatste moment een kritieke patch doorgevoerd voor de EEVDF-scheduler. Een bug in de Entity Replacement-functionaliteit zorgde onder bepaalde omstandigheden voor vertragingen in de taakplanning.
Linus Torvalds nam deze patch zondagavond nog op in de nieuwe kernel, vlak voor de definitieve release. Deze zal ook worden teruggevoerd naar eerdere kernelversies.
Fijnmazige timestamps voor betere precisie
Timestamps zijn cruciaal voor bepaalde toepassingen, zoals synchronisatie en versiebeheer. Een voorbeeld is NFSv3, dat timestamps gebruikt om te bepalen of een cache nog geldig is. Bij te grove timestamps kan een client per ongeluk met een verouderde versie van een bestand werken, wat kan leiden tot inconsistenties.
Omgekeerd kunnen zeer fijne timestamps een probleem vormen, omdat ze veel vaker moeten worden bijgewerkt. Wanneer een bestand bijvoorbeeld per seconde wordt geregistreerd, worden metadata slechts eenmaal per seconde gewijzigd. Maar bij milliseconde-precisie zou de kernel theoretisch duizend updates per seconde moeten verwerken.
Atomair schrijven voor XFS, Ext4 Direct I/O en Soft-RAID
Linux 6.13 introduceert een slimme aanpak: de standaard timestamps in milliseconden blijven behouden, maar fijnere timestamps worden alleen gebruikt wanneer een toepassing hier expliciet om vraagt. Zo blijft de balans behouden tussen prestatie en precisie.
Daarnaast ondersteunt Linux 6.13 atomair schrijven voor XFS, Ext4 Direct I/O en bepaalde Soft-RAID-modi. Dit is essentieel bij het schrijven van gegevens die groter zijn dan de hardwarematige sectorgrootte van een opslagmedium. Bij een atomair schrijfproces worden alle sectoren in één keer geschreven, of helemaal niet.
Beveiligde virtuele machines (VM’s) voor ARM64
Voor ARM64 introduceert Linux nu ondersteuning voor beveiligde virtuele machines (VM’s) met behulp van de ARM Confidential Compute Architecture (CCA). Dit zorgt ervoor dat het geheugen van een VM verborgen blijft voor de hypervisor.
Daarnaast ondersteunt de nieuwe kernel Guarded Control Stack in user space, de ARM-versie van de Shadow Stack-technologie.
Afscheid van verouderde architecturen
Om de kernel te ontdoen van verouderde functies, worden sommige oudere architecturen geschrapt. Dit keer treft het de PowerPC 970FX, ook bekend als de PowerPC G5 uit oudere Apple Macs. Mac-gebruikers hoeven zich echter geen zorgen te maken: G5-Macs blijven ondersteund.
Wel verliezen de Maple-evaluatieborden met 970FX en IBM’s JS20/JS21 PowerPC Blades hun Linux-ondersteuning. Ook de YDL Powerstations, bekend van het vroegere Yellow Dog Linux, hebben op de lange termijn geen toekomst meer binnen Linux.
Toch is er nog een sprankje hoop: volgens de commit-berichten kunnen deze wijzigingen worden teruggedraaid als er voldoende protest komt vanuit de gebruikersgemeenschap.
Conclusie: Linux 6.13 brengt balans tussen efficiëntie en prestaties
De Lazy Preempt-modus belooft meer efficiëntie en een betere balans tussen reactietijd en procesonderbrekingen. De kritieke patch voor de scheduler wordt ook opgenomen in oudere kernelversies, waaronder de 6.12 LTS-kernel waarop verschillende distributies vertrouwen. Vanwege de haastige implementatie zal de echte test het praktijkgebruik zijn.
De fijnmazige timestamps en atomaire schrijfoperaties waren al langer gewenst en worden nu eindelijk doorgevoerd in Linux 6.13.
Linux 6.13 brengt niet alleen bugfixes en stuurprogramma-updates, maar is een solide vooruitgang. Hopelijk brengen de last-minute patches geen onvoorziene problemen met zich mee.
De nieuwe kernel is beschikbaar op kernel.org, samen met een uitgebreide changelog met alle wijzigingen.
Op de hoogte blijven van al het Linux-nieuws?
Schrijf je in voor de gratis nieuwsbrief: