Kernel-Log
Linux 4.15: AMD Vega-support & RISC-V-ondersteuning
De nieuwe kernel doet een poging om een oplossing te vinden voor een bekend probleem met de energiebesparingsfuncties die de accuduur van veel Linux-notebooks verkort. De ondersteuning voor de nieuwe grafische chips van AMD is flink uitgebreid. Ook bij de resources en ondersteuning voor VR-brillen is er het een en ander veranderd.
Normaal gaan er negen tot tien weken ontwikkeltijd overheen, maar deze keer duurde het maar liefst elf weken voordat eind januari de nieuwe Linux 4.15-kernel verscheen. Dat kwam niet doordat de Linux-community het lekker rustig aan deed tijdens de feestdagen, maar door de veiligheidsgaten Meltdown en Spectre. Daar zijn we uitgebreid op ingegaan in c't 3/2018, maar hier nog even een samenvatting:
In versie 4.15 is de Page Table Isolation (PTI) als tegenmaatregel voor Meltdown geïntroduceerd. Helaas werkt die techniek alleen op 64-bit x86-systemen en kan hij onder bepaalde omstandigheden de prestaties verminderen. Ondersteuning voor 32-bit systemen komt er overigens wel al aan. Maatregelen tegen de eerste van beide Spectre-varianten zullen in versie 4.16 genomen worden. De ontwikkelaars hebben daarvoor inmiddels een nieuwe macro gemaakt die het speculatieve uitvoeren van plekken met potentieel kwetsbare code moet voorkomen. Het zoeken naar dergelijke plekken in echter nog aan de gang.
Linux probeert zich tegen de tweede variant te beschermen via Retpoline (Return Trampoline), dat maar een bescheiden prestatie-overhead heeft. Deze bescherming werkt echter pas grondig wanneer je de kernel en software met compilers vertaalt die Retpoline ondersteunen. Via bestanden in /sys/devices/system/cpu/ vulnerabilities/ kun je nakijken voor welke van de drie veiligheidsgaten de gebruikte processor gevoelig is en hoe de kernel het systeem probeert te beschermen.
Dat is nog niet het einde van het verhaal. De kernel-ontwikkelaars voeren nog verhitte gesprekken over de tegenmaatregelen. Het is bijvoorbeeld nog steeds onduidelijk of Retpoline voldoende bescherming biedt voor de nieuwste generatie cpu's van Intel. Sommige ontwikkelaars dringen er daarom op aan om voor Skylake-processors en hun opvolgers maatregelen toe te passen die gebaseerd zijn op de beschermingsfuncties van Intels nieuwste microcode. Ook is er nog nieuwe microcode nodig om veilig te kunnen virtualiseren.
Energiebesparingsprobleem
Een kleine wijziging in de ATA-drivers in versie 4.15 zou de accuduur van miljoenen moderne Linux-notebooks aanzienlijk kunnen verbeteren. Het geldt dan voor de meeste pc's en notebooks die in de afgelopen zes à zeven jaar verkocht zijn en met een Intel-processor en een SATA-schijf. Bij die apparaten laten de Linux-kernel en de meeste distributies het AHCI Link Power Management (ALPM) ongemoeid, omdat de energiebesparingsfunctie volgens enkele Linux-gebruikers gegevensverlies veroorzaakt of het systeem kan laten crashen.
Een nieuwe modus in Linux 4.15 moet dat verhelpen door de ALPM-parameters in de AHCI-controller precies zo in te stellen als de Windows-driver voor Intel Rapid Storage Technology (IRST) dat doet. Het is ontwikkeld door Fedora en moet standaard worden ingericht in de komende Fedora 28. Als die veldtest succesvol verloopt, is de kans groot dat andere distributies volgen. ALPM bespaart vaak rond een watt wanneer het systeem idle draait, wat de accuduur van zuinige notebooks al gauw met een half of heel uur kan verlengen.
AMD aan de finish
Voor het eerst ondersteunen de opensource Linux-drivers van AMD nu alle actuele grafische processors. De laatste bouwsteen daarvoor was een serie wijzigingen in Linux 4.15 die in eerste instantie DAL (Display Abstraction Layer) heette en inmiddels DC (Display Core) is geworden.
Dankzij DC biedt Linux een goed werkende ondersteuning van grafisch kaarten van Radeon met Vega-gpu's, die in juli 2017 geïntroduceerd zijn. Hetzelfde geldt
voor de Raven-gpu die in Ryzen-processors zit. Samen met de OpenGL-driver van Mesa 17.3 leveren die grafische chips prima 3Dprestaties, die niet onderdoen voor de propriëtaire drivers van AMD.
Daar houdt het nog niet mee op: voor enkele oudere Radeon-kaarten kun je dankzij DC nu enkele technieken voor het aansturen van monitors gebruiken die nog onbenut bleven, zoals HDMI 2.0 en DisplayPort (DP) 1.4. Dat is belangrijk voor het gebruik van 4K- en 5K-schermen. Bovendien zorgt de driver ervoor dat de audio-output via HDMI en DP bij meer grafische kaarten ondersteunt wordt. Om die functies bij Radeon-kaarten uit de 500-serie en de directe voorganger te gebruiken, moet je echter wel de kernel met de parameter amdgpu.dc=1 starten. Een schoonheidsfoutje dat hopelijk binnenkort verholpen wordt.
Support voor VR-brillen
De nieuwe 'DRM_Object Lease Infrastructure' belooft een betere ondersteuning voor head-mounted displays. Displayservers kunnen de controle van bepaalde functies van de grafische hardware daarmee aan VR-software overhandigen. Die kan resources dan vrij gebruiken, wat conflicten voorkomt met de software die de interface op het scherm tovert. Daardoor is die aanpak een omweg voor X-servers die bij het aansturen van VR-brillen toch al meer in de weg zitten dan behulpzaam zijn.
Overigens hebben enkele Valve-ontwikkelaars meegewerkt aan de amdgpudriver om VR-brillen te optimaliseren voor het gebruik met Radeon-gpu's. Dat gaat via een prioriteitenschema, waarbij voor de VR-software belangrijke berekeningen een hogere prioriteit krijgen toegewezen. Dit moet hick-ups in de weergave en andere onaangename schermproblemen verminderen. De kernel heeft nu ook een schermdriver voor het Raspberry Pi 7-inch touchscreenpaneel. De graphicsdriver van Intel ondersteunt Core i 8000-processors nu ook zonder dat je de kernel met de parameter i915.alpha_support=1 hoeft te starten.
Bestandssystemen
Uitgebreide wijzigingen aan de XFS-code beloven de prestaties te verbeteren van bestandssystemen die het populaire metadataformaat XFS gebruiken. De ontwikkelaars hebben bovendien code ingebouwd voor het 'online scrub and repair', dat in de toekomst een actief (dus zonder umount) XFS-bestandssysteem kan testen en repareren. Dat is echter nog verre van gereed en zal alleen kunnen werken met het nog onvoltooide metadataformaat waar al sinds 4.8 aan wordt ontwikkeld.
Het ext4-bestandssysteem ondersteunt nu ook online-resizing, waarmee je het formaat tijdens runtime kunt wijzigen bij bestandssystemen die de bij Linux 3.2 geïntroduceerde Big Allocation Blocks (bigalloc) gebruiken. Het sinds Linux 4.1 geïntegreerde clustersupport in het MDsubsysteem geldt inmiddels niet meer als experimenteel.
De infrastructuur voor het instellen van het resourceverbruik waar al jaren aan wordt gewerkt, begint eindelijk vorm te krijgen. In Linux 4.15 zit nu een Cgroup v2-controller die de cpu-tijd limiteert voor processen die aan een Control Group (Cgroup) zijn toegewezen. Dat was de laatste van de controllers die veel door virtuele machines en containers worden gebruikt en waar de Cgroup-interface uit de tweede generatie nog niet over beschikte.
Open processorarchitectuur
Linux ondersteunt nu de RISC-V processorarchitectuur. De ondersteuning voor de open ISA (Instruction Set Architecture), waar veel bedrijven zich achter hebben geschaard, haalt vooralsnog echter nog niet zo heel veel uit omdat de vereiste drivers pas in versie 4.16 beschikbaar zullen zijn.
De K10temp-driver voor het monitoren van hardware kan nu ook de processortemperatuur van Ryzen en andere AMDprocessors met Zen-architectuur uitlezen. De audiodrivers van de kernel kunnen nu de audiohardware gebruiken van Ryzen-cpu's met een grafische kern. De kernelontwikkelaars hebben bovendien de ondersteuning van Intel wifichips uit de 9000-serie verbeterd. Daarbij gaat het om 802.11ac-chips die je steeds vaker ziet in de nieuwste notebookmodellen met een Core i 8000-cpu.
Statement tegen propriëtaire drivers
In de kerneldocumentatie staat een verklaring waarin ontwikkelaars van de Linux-kernel zich duidelijk uitspreken tegen propriëtaire Linux-drivers. Kernelmodules en drivers die closedsourcecode bevatten zijn volgens hen schadelijk en ongewenst. Uit eerdere ervaringen zou blijken dat ze nadelig zijn voor gebruikers, bedrijven en het Linux-ecosysteem. Bedrijven die closedsourcemodules verspreiden, zouden hun klanten ertoe dwingen om de essentiële voordelen van Linux op te geven of zich gedwongen zien om naar andere aanbieders om te kijken. De tekst eindigt met een beroep op hardwarefabrikanten om Linux-gebruikers met opensource kernelcode te ondersteunen.
Rond de 175 ontwikkelaars hebben die verklaring ondertekend. De verklaring rouleerde al sinds 2008, maar was min of meer in de vergetelheid geraakt. Onder de personen die de verklaring ondertekend hebben, bevinden zich enkele centrale Linux-ontwikkelaars zoals Jens Axboe, Arnd Bergmann, Mauro Carvalho Chehab, Thomas Gleixner, Takashi Iwai, Greg Kroah-Hartman, Ingo Molnar, Andrew Morton en Theodore Tso. Linus Torvalds zit er echter niet tussen. (ddu)