De nieuwste versie van de Linux-kernel is uit. De release van Linux 6.14 mag dan iets later zijn dan gepland, maar weet die vertraging moeiteloos goed te maken met een reeks waardevolle verbeteringen.
Altijd op de hoogte zijn van alle ontwikkelingen omtrent Linux?
Schrijf je in voor onze gratis nieuwsbrief:
Vertraging door een vergeten klik
Linux-kernel 6.14 verscheen maandagavond (Nederlandse tijd), één dag later dan gebruikelijk. Hoewel er op het laatste moment nog wat patches waren die kortstondig voor problemen in het buildproces zorgden, zat de echte oorzaak van de vertraging in een menselijke fout: Linus Torvalds vergat simpelweg de release vrij te geven. Dat gaf hij zelf zonder omhaal toe in zijn aankondiging. Onder de motorkap introduceert deze nieuwe kernelversie een reeks vernieuwingen, vooral gericht op prestatieverbeteringen.
Betere synchronisatie via ntsync
Wanneer meerdere threads gelijktijdig een gedeelde resource willen aanpassen, is coördinatie essentieel. In Linux gebeurt dat onder andere via mutexen: een mechanisme dat zorgt dat slechts één thread tegelijk toegang krijgt tot een bepaalde resource. De andere threads wachten netjes tot ze aan de beurt zijn.
Linux gebruikt hiervoor de efficiënte Futex-methode (Fast Userspace Mutex), waarbij de synchronisatie grotendeels in userspace gebeurt en de kernel pas inspringt wanneer dat nodig is (bijvoorbeeld om threads te laten slapen of te wekken).
Binnen Linux werkt dit systeem uitstekend. Maar zodra je Windows-apps draait via Wine, ontstaan er problemen. Windows gebruikt een eigen lock-mechanisme dat niet altijd 1-op-1 te vertalen is naar Futex. Vooral complexe locks zoals het tegelijk aanvragen van meerdere resources of het gebruik van Windows-typische Events (soort condities met een waar/onwaar-status) zorgen voor hoofdbrekens. Hierbij is er sprake van twee soorten Events:
- Auto-reset-events schakelen zichzelf uit zodra één thread erop reageert.
- Handmatige events blijven actief tot ze expliciet worden teruggezet.
Dit gedrag is lastig te vangen met standaard Futex-mechanismen. Om dit op te lossen heeft ontwikkelaar Elizabeth Figura een reeks patches geschreven. Die introduceert een nieuwe driver: /dev/ntsync. Deze virtualiseert de Windows-synchronisatieobjecten die zich niet eenvoudig via Futex laten afhandelen. De documentatie is te vinden op docs.kernel.org.
Snellere Windows-apps en games via Wine
De hele inspanning heeft een concreet doel. Windows-programma’s die op Wine zijn gebaseerd, kunnen momenteel enorm vertraagd worden. Als een automatisch reset-gebeurtenis bijvoorbeeld afhankelijk is van de gelijktijdige aanvraag van meerdere bronnen, kan het lastig worden.
In Windows kunnen meerdere bronnen die tegelijkertijd worden aangevraagd in één keer en dus atomisch worden geblokkeerd. De samenstelling van de bronnen kan tijdens de uitvoering variëren. Een Futex kan dit niet adequaat weergeven. In plaats daarvan ontvangt een wachtende thread individuele bronnen van de groep zodra deze vrijkomen. Als niet alle bronnen beschikbaar zijn, gaat het apparaat terug in de wachtstand. Wanneer de volgende resource uit de bundel vrijkomt, betekent dit niet per se dat deze naar dezelfde thread gaat. Afhankelijk van de implementatie kunnen de gevolgen variëren van haperende applicaties tot het vastlopen van de Windows-app.
De nieuwe aanpak moet dit voorkomen en belooft een snelheidswinst. Dit zal vooral voordelen opleveren voor grafisch intensieve apps en dan met name Windows-games. Omdat niet alle Windows-applicaties evenveel last hebben van dit speciale type synchronisatie, is de prognose voor een snelheidsverhoging breed. De verwachting is dat de framerates voor games met 50 tot 150 procent zullen toenemen.
Altijd op de hoogte zijn van alle ontwikkelingen omtrent Linux?
Schrijf je in voor onze gratis nieuwsbrief:
Uncached Buffered I/O
Tot nu toe waren er twee hoofdtypen bestands-I/O in Linux. Gebufferd of direct. Standaard wordt gebruikgemaakt van gebufferde I/O, waarbij gegevens via de paginacache worden gelezen en geschreven. Het voordeel is dat je er snel bij kunt als je iets herhaaldelijk leest. De gegevens worden opgeslagen in de paginacache en hoeven niet opnieuw uit de massaopslag te worden opgehaald, wat kostbaar is. Gebufferde I/O bereikt dit voordeel door het probleem van alle caches aan te pakken.
Het is mogelijk dat de pagina-cache inconsistent is, wat betekent dat deze niet meer overeenkomt met de inhoud op het opslagmedium. Dit is het geval wanneer andere delen van het systeem dezelfde gegevens wijzigen, maar de cache omzeilen. De goede oude Direct Memory Access (DMA) en Direct I/O zijn bekende voorbeelden van systemen die in de weg kunnen zitten van gebufferde I/O.
Directe I/O omzeilt de paginacache volledig en heeft altijd rechtstreeks toegang tot de massaopslag. De gegevens via Direct I/O weerspiegelen altijd de actuele status op het opslagmedium. Het nadeel is dat de toegang tot de gegevens soms trager is. Dit geldt vooral voor meervoudige kleine toegangen, aangezien er vooraf geen gegevens worden gelezen of gepusht over een blokformaat. Buffered I/O kan daarentegen gegevens schrijven en lezen met de optimale blokgrootte. De cache maakt het mogelijk.
Lazy Preempt nu ook op PowerPC
Met zijn voorganger Linux 6.13 werd “Lazy Preempt” geïntroduceerd . Bij preëmptieve multitasking kunnen contextwisselingen worden uitgesteld om onnodige onderbreking van processen of threads te voorkomen. Op deze manier kunnen de verwerkingsstappen indien mogelijk in één keer worden voltooid. Deze “lazy preempt” was in Linux 6.13 alleen beschikbaar op machines met x86/x86_64 en RISC-V CPU’s. Nu gaat de nieuwkomer in de kernel over naar de volgende architectuur. Sinds Linux 6.14 is “Lazy Preempt” ook beschikbaar voor PowerPC-systemen.
GPU-resources beter verdeeld over cgroups
Bij zware GPU-taken wil je niet dat een proces halverwege wordt afgebroken. Linux 6.14 voorkomt dat nu beter door GPU-resources én door drivers toegewezen CPU-geheugen apart per cgroup te behandelen. Dat betekent: parallel draaiende processen kunnen hun resources beheren zonder elkaar in de weg te zitten — cruciaal voor stabiliteit bij zware workloads.
Nieuwe leesstrategieën voor btrfs RAID1
Het btrfs-bestandssysteem introduceert drie nieuwe strategieën voor leesverdeling in RAID1 (mirroring). Met ‘Rotatie’ blijven alle apparaten op de spiegel actief. Dit is de standaardinstelling. Met ‘Latency’ worden foutgevoelige en instabiele bloklagen op een intelligente manier aangepakt. Tot slot maakt “devid” handmatige besturing mogelijk. Afhankelijk van het toepassingsscenario kan de juiste strategie helpen om leestoegang beter te verdelen over de apparaten in RAID1.
Slimmer en efficiënter met opslag
Ook XFS wordt uitgebreid. Met reverse mapping kun je nu opslagblokken koppelen aan de bestanden die ze gebruiken — een stap richting betere foutdetectie en herstel. Nieuw is ook reflink, waarmee bestanden blokken kunnen delen. Dit voorkomt dubbele opslag en bespaart schijfruimte.
Linux herkent nu ook de Copilot-toets
Microsoft introduceerde onlangs een nieuwe toets op pc-toetsenborden: de Copilot-knop, bedoeld om snel de AI-assistent op te roepen. Linux negeerde deze toets tot nu toe, maar herkent hem sinds kernel 6.14 wél — al is er nog geen standaardactie aan gekoppeld.
Compact maar innovatief
Met ruim 11.000 changesets blijft Linux 6.14 relatief bescheiden in omvang — alleen sommige 4.x-versies waren kleiner. Maar ondanks het beperkte aantal wijzigingen levert deze release wél veel kwaliteit.
De prestatieverbeteringen bij Windows-apps via Wine zijn indrukwekkend, vooral voor gamers. De introductie van Uncached Buffered I/O sluit een lang bestaande kloof in bestands-I/O af. En met verbeteringen voor synchronisatie, cgroups, bestandssystemen en meer, is Linux 6.14 opnieuw een stap vooruit.
De nieuwe kernel is zoals altijd beschikbaar via kernel.org. Een overzicht van alle wijzigingen staat in een changelog, en een gestructureerd overzicht van de verschillen met versie 6.13 is terug te vinden in het officiële Git-repository.
Altijd op de hoogte zijn van alle ontwikkelingen omtrent Linux?
Schrijf je in voor onze gratis nieuwsbrief: