De optimale pc: Linux crasht met Kingston-ssd

Daniel Dupré
2

Inhoudsopgave

    Inleiding

    Allereerst onze excuses: bij onze optimale pc hebben we een probleem met de ssd over het hoofd gezien, waardoor Linux soms blijft hangen. Dankzij een wijziging die we voor de kernel-code hebben ingebracht, is het probleem nu verdwenen.

    Als je Linux op een van onze bouwvoorstellen installeert, kan een probleem met de Kingston-ssd crashes veroorzaken. De fabrikant wist daar blijkbaar al maanden vanaf, maar heeft er niets aan gedaan. We hebben dit probleem kunnen verhelpen met een work-around. Die zorgt wel voor een hoger energieverbruik, ook op systemen die geen last hebben van de bug. Daar moet Kingston iets aan doen. Maar we lopen nu op de feiten vooruit.

    Ssd met problemen

    In veel van onze bouwvoorstellen van 2020 en 2021 gebruiken we een Kingston A2000 NVMe PCIe-ssd als systeemschijf. Die heeft bij onze tests vooraf nooit problemen gegeven – niet bij Windows en niet tijdens de vele tests voor de artikelen waarin we gecontroleerd hebben of de bouwvoorstellen geschikt waren voor Linux.

    Na de tweede tekst benaderde een lezer ons over stabiliteitsproblemen met de ssd: het installeren van een Linux-distributie werkte prima, maar na een paar uur crashte het systeem flink. Zo flink, dat het BIOS de Kingston-ssd niet herkende na het indrukken van de resetknop. Pas nadat de pc enkele seconden was uitgeschakeld, kreeg hij de pc weer aan de praat.

    Op internet stonden verschillende berichten van A2000-bezitters waarbij hetzelfde probleem was opgetreden. Volgens sommigen doet het probleem zich alleen voor bij de nieuwste ssd-firmware die sinds het voorjaar van 2020 wordt verspreid. Volgens een forumbericht is Kingston al minstens vanaf half september 2020 op de hoogte van het probleem. Anderen benadrukken dat de Kingston-ssd bij hen volledig probleemloos werkt. Het lijkt erop dat het probleem alleen optreedt bij sommige ssd’s uit de serie of alleen in bepaalde configuraties.

    Kingston-ssd a2000 nvme pcie

    Het lijkt erop dat de Kingston-ssd A2000 een zogenaamde ‘quirk’ heeft waardoor Linux kan crashen.

    In sommige berichten werd ook meteen een oplossing voorgesteld: het zou helpen om de ‘Autonomous Power State Transition’ (APST), de energiebesparende instelling voor NVMe-ssd’s, te beperken. Sommige bronnen adviseren om die volledig uit te schakelen, volgens anderen is het voldoende om alleen de diepste APST-modus te vermijden. Dat laatste doe je bij de A2000 met de kernel-parameter

    nvme_core.default_ps_max_latency_us=2500

    De Kingston-supportafdeling bevestigde dat ze op de hoogte waren van het probleem. Het advies luidde om APST uit te schakelen en er zou nog een firmware-update volgen.

    Wij hebben vervolgens contact opgenomen met Kingston en zijn tegelijk ook het probleem gaan onderzoeken. Na twee dagen bevestigde de fabrikant dat met een korte en vage verklaring en vermeldde terloops dat het probleem te wijten was aan de diepste APST-modus.

    Onderscheppen

    Het was bekend dat bij enkele NVMe-ssd-series van andere fabrikanten vergelijkbare problemen optreden. Bij die series vermijdt de kernel automatisch het gebruik van de diepste APST-modus. Dat verhoogt het stationaire energieverbruik wel minimaal, maar een stabiele en correcte werking komt voor Linux-ontwikkelaars op de eerste plaats.

    De kernel activeert die en andere uitzonderingen via een database, waarin naast de leverancier- en apparaat- ID’s, ook het type probleem (de ‘quirk’) van de ssd-serie is opgeslagen. Die database kan eenvoudig in de broncode worden uitgebreid zodat de kernel bij de Kingston-ssd automatisch het diepste APST-niveau vermijdt. Dat kan binnen een minuut en zonder enige programmeerkennis, want veel meer dan wat kopiëren en plakken is niet nodig.

    Om het probleem in het algemeen te verhelpen, zal de quirk-vermelding ook in de officiële kernel moeten worden opgenomen. Dat doel was veel moeilijker te bereiken, omdat je de aanpassing ook voor de Linux-ontwikkelaars interessant moet maken – maar voordat zo’n wijziging kan worden ingediend, moet worden nagegaan of die ook tot het gewenste resultaat leidt. Dat konden we niet doen, omdat wij het probleem met onze ssd’s niet konden reproduceren.

    Kingston-ssd; linux kernel

    We hebben de twee regels code (groen) aan de Linux-kernel toegevoegd om crashes met de A2000-ssd te voorkomen.

    We hebben de wijziging daarom van een zeer gedetailleerde patchbeschrijving voorzien alvorens we het geheel gemaild hebben naar de ontwikkelaars die verantwoordelijk zijn voor de NVMe-code. Na enkele dagen accepteerde een van hen de inzending zonder verdere vragen te stellen. Dat kwam vervolgens via een andere ontwikkelaar bij Torvalds terecht, die het in de zevende prerelease van Linux 5.11 integreerde. In de beschrijving van de patch hadden we ook een opmerking geplaats met de oproep om het te backporteren naar de vier laatste stabiele en lange termijn-kernels. Daarmee is het terechtgekomen in de Linux 5.11 kernel en in de kernelversies 4.14.221, 4.19.175, 5.4.97 en 5.10.15 terechtgekomen.

    Distribueren

    Bij Arch Linux en Fedora 32 en 33 kwam Linux 5.10.15 via de normale systeemupdate, bij openSUSE Tumbleweed volgde hij iets later. De huidige versie van Debian GNU/ Linux zou de verandering ondertussen ook binnen moeten hebben via de nieuwe 4.19-kernel.

    Ubuntu 20.04 LTS zou de workaround moeten ontvangen via de nieuwe 5.4-kernel. Het is onzeker of de workaround in Ubuntu 20.10 terecht zal komen: de kernel is gebaseerd op Linux 5.8, die de kernelontwikkelaars al lang niet meer onderhouden. Toekomstige versies van Ubuntu en de meeste andere nieuwe distributieversies zullen de workaround krijgen via kernel 5.11 en nieuwer.

    Uiteindelijk zal het probleem met de Kingston-ssd dan verdwijnen – ook bij wie het systeem maar sporadisch crashte door het APST-probleem, maar daar verder niet iets mee heeft gedaan of de oorzaak nooit konden achterhalen.

    We kunnen echter nog steeds niet met volledige zekerheid zeggen of de aanpassing ook echt werkt: bij ons is het probleem ook met een ongewijzigde kernel gedurende drie weken testen niet opgetreden. Daarbij hebben we bijna de klok rond getest – vaak met twee pc’s parallel en op gegeven moment ook met de getroffen ssd, waarvan de lezer zo vriendelijk was om hem ons toe te sturen. We hebben de testomgeving en -procedures tijdens de tests diverse malen aangepast, zonder enig resultaat.

    Een andere lezer heeft ons echter optimistisch gestemd. In zijn geval crashte Linux door de A2000-quirk weliswaar niet elke dag, maar wel regelmatig – en vaak zeer snel. Bij een kernel met onze patch trad het probleem in negen dagen tijd geen enkele keer op.

    Juiste oplossing

    Dat is (hopelijk) nog niet het einde van het verhaal, want de patch is slechts een workaround. Hij omzeilt een probleem, maar lost de daadwerkelijke oorzaak niet op. Een goede oplossing ziet er anders uit, omdat de patch het idle energieverbruik verhoogt – ook op systemen met Kingston-ssd’s uit dezelfde serie, die om wat voor reden dan ook het APST-probleem niet vertonen.

    Voor een goede oplossing is meer nodig en dat is een taak voor Kingston. Het feit dat het bedrijf een firmware- update in het vooruitzicht stelt, wijst er in elk geval op dat de oorzaak van het probleem bij de Kingston-ssd ligt. Aangezien het probleem voor zover wij weten niet bij Windows optreedt, kan echter niet volledig worden uitgesloten dat er iets mis is met de Linux-kernel – dat is eerder wel eens het geval geweest, maar in dit geval lijkt het niet zo te zijn.

    Linux is echter ook niet helderziend, dus zal het vooralsnog de laagste energiebesparende modus moeten vermijden, ook bij ssd’s met de nieuwste firmware. Om dat te veranderen, moet de kernel de firmwareversie controleren. Als die een oplossing biedt voor de bug, zou hij de diepste APST-modus weer kunnen activeren. Zo niet, dan moet hij die inactief laten, en idealiter gebruikers via log-output over het probleem op de hoogte brengen en laten weten of er nieuwe firmware is. Dat zou een complexere patch vereisen, waarbij Kingston zelf de regie in handen zou moeten nemen.

    (Deze tekst is verschenen in c’t 6/2021, p.112, met medewerking van Thorsten Leemhuis)

     

    Wil je op de hoogte blijven van het laatste IT-nieuws en de nieuwste online-artikelen? Meld je dan hier aan voor onze nieuwsbrief:

    Ontvang elke week het laatste IT-nieuws, de handigste tips en speciale aanbiedingen.

    Meer achtergrondartikelen lees je in c't 05/2024

    Meer over

    SSDZelfbouw

    Deel dit artikel

    Daniel Dupré
    Daniel DupréDaniel koestert een liefde voor het in elkaar zetten van zinnen en van computers, en heeft in c't een prachtige mogelijkheid gevonden om beide te combineren.

    Lees ook

    Verschil Windows 10 en 11: dit moet je weten over de twee versies

    Wat is het verschil tussen Windows 10 en Windows 11? In dit artikel geven we je een overzicht van enkele functionele verschillen tussen de menu's, hoe...

    Chat GPT gebruiken: dit kun je allemaal doen met de chatbot van OpenAI

    OpenAI heeft de ChatGPT-bot ontwikkeld als een taalmodel dat is getraind op een enorme hoeveelheid tekst op het internet. Je kunt ChatGPT gebruiken om...

    2 Praat mee
    avatar
      Abonneer  
    nieuwsteoudste
    Laat het mij weten wanneer er
    B100
    Lezer
    B100

    Erg interessant, bedankt voor het delen van deze informatie en de oplossing!

    Matthijs
    Lezer
    Matthijs

    Kennelijk heeft Kingston op 30 maart al een firmware update uitgebracht die dit probleem verhelpt: “Firmware Rev. S5Z42109 (03-30-2021) – Fixed an issue that might cause the drive to become unresponsive on Linux systems”. Bron: https://media.kingston.com/support/downloads/SA2000_S5Z42109_RN.pdf .

    Maarrrrrrr deze firmware is alleen te installeren onder… Windows! *facepalm*
    Ook al staat Kingston vermeld op LVFS als fabrikant die actief firmwares upload (voor anderen welliswaar), getuige https://fwupd.org/lvfs/search?value=kingston , toch is de firmware van de A2000 (voor zover ik heb kunnen vinden) niet te upgraden met de tool fwupdmgr, zelfs al *zou* de tool dit prima kunnen doen.

    Kortom – een flinke gemiste kans weer dit.