Defekten RAM unter Linux beheben
In diesem Artikel dreht sich alles um die Frage ob man defekten RAM unter Linux beheben kann. Ich habe die letzten Tage viel über das Thema recherchiert und fasse die Ergebnisse zusammen in der Hoffnung jemanden bei einem ähnlichen Problem so Zeit zu sparen.
Defekten RAM unter Linux beheben
Warum gibt es den Bedarf defekten RAM unter Linux zu beheben, beziehungsweise wie erkennt man überhaupt ob der Hauptspeicher des Rechners defekt ist? Im letzten Artikel habe ich meinen neuen Zweitrechner mit Linux vorgestellt. Dort habe ich einen mehrere Jahre alten recht günstigen Low-End Laptop mit einer neuen SSD und einem schlanken Lubuntu Betriebssystem wieder fit gemacht. Der Rechner hat nur 4GB und diese sind fest mit dem Board verlötet, d.h. man kann diesen nicht so einfach durch einen neuen Speicher ersetzen. Das wird in weiterer Folge noch relevant.
Das Problem
Trotz der schwachen Hardware hat der Rechner einen relativ guten Full HD Monitor, eine recht gute Tastatur, er ist sehr leicht und braucht nur wenig Energie. Aus diesem Grund sitze ich gerne davor, gerade beim Programmieren kleinerer Projekte. Ich verwende ihn auch gerne um Filme mit dem VLC Player zu schauen, dabei beobachte ich aber laufend Abstürze. Das Bild friert ein, nur noch ein Neustart hilft. Auch bei Inaktivität und dem anlaufenden Bildschirmschoner bleibt dieser einfach eingefroren. Systemlogs zeigen keine sinnvollen Fehler, das ganze System bleibt stehen. Mein Verdacht: kaputte Bereiche im Hauptspeicher. Zufällige Abstürzt in beliebigen Programmen sind fast immer ein Indiz für defekten RAM. Sowohl Bildschirmschoner als auch der VLC Player laufen an, wenn parallel andere Programme laufen, die Auslastung vom Hauptspeicher war immer über 70%. D.h. eventuell ist an einigen der hinteren Speicheradressen ein Problem, welches erst bei größerer Auslastung auftritt.
Erkennen
Wie erkennt man nun defekten RAM? Mit einem laufenden System quasi gar nicht. Ich habe bereits in einem früheren Artikel beschrieben wie man defekten RAM erkennen kann. Am besten mit einem Memtest Programm, dass man vor dem Start vom Betriebssystem ausführt (mit einem bootfähigen Medium). In meinem Fall fand der Test selbst nach 8 Stunden Laufzeit kein Problem – zum Glück – denn fest verlöteten Hauptspeicher hätte ich nicht tauschen können. Während des Tests habe ich schon mal Pläne für den Fall der Fälle gemacht.
Defekten RAM nicht benutzen
Die Lösung klingt recht simpel. Gibt es im Hauptspeicher Adressbereiche die kaputt sind, also bei denen der Test korrupte Daten feststellt, dann kann man diese einfach als kaputt markieren und nutzt diese danach vom Betriebssystem nicht. Weißt du wie?
Bezugnehmend auf diesen Post auf StackOverflow kann man mit dem Kernel Argument memmap Bereiche im Hauptspeicher von der Benutzung durch das Betriebssystem deaktivieren. Entweder deaktiviert man ab einer bestimmten Adresse alles (wenn der Fehler beispielsweise recht weit am Ende des Speichers auftritt), dann reicht
mem=3800M
dann würde alles nach ca. 3,7 GB deaktiviert. Liegt das Problem weiter vorne wäre diese Möglichkeit unpraktisch, weshalb man auch spezifizieren kann wie viel Speicher ab einer bestimmten Adresse deaktiviert werden soll. Das geht dann mit:
memmap=10M$3800M
es würde also ein 10 MB großer Bereich nicht nutzbar gesetzt.
Update:
nach einer weiteren Recherche stellt sich heraus, dass dieses Kernel Argument nun max_addr=nn heißt. D.h. statt mem ist nun max_addr zu verwenden. Nähere Infos dazu unter diesem Link.
Lösung
Als Leser fragst du dich nun bestimmt: was war nun die Lösung des Problems? Tatsächlich habe ich noch keine. Wenn ich weder Bildschirmschoner noch VLC Player benutze, dann kommt es nie zu dem Problem. Wäre es nur der VLC Player, dann würde ich vermuten der Prozessor wird einfach zu heiß und dieser bricht einfach seine Berechnungen ab und geht in eine Art Idle Zustand.Um das zu verifizieren habe ich mir das Programm sensors installiert, dieses Zeigt die aktuelle Temperatur der Prozessoren an:
Der Bildschirmschoner benötigt keine große Leistung, weshalb das Problem damit dem widerspricht. Eventuell ist es auch ein Problem eines Treibers mit dem Linux Kernel, aber dann würde ich mir eine Art von Log erwarten. So oder so, aktuell läuft der Rechner und ich habe beispielsweise diesen Artikel darauf geschrieben.
Fazit
Nachdem ich sehr leistungsfähige Systeme (Server, PC und Laptop) für die Arbeit besitze macht es Spaß auf einer Low-End Hardware so viel wie möglich herauszuholen. Anstatt das Gerät beim ersten Problem weg zu werfen nehme ich mir die Zeit und versuche jegliches Problem zu lösen. In diesem Laptop, den man vermutlich nicht mal mehr um 30€ verkaufen könnte, steckt viel Zeit und Energie und er ist mir mittlerweile recht ans Herz gewachsen. Ich nehme ihn lieber mit für unterwegs als andere Geräte.