GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kann Linux Speicher bereinigen?

Das ist eigentlich eine schlechte Idee. Der Speicher kann nicht schnell und zuverlässig getestet werden. Aus diesem Grund verwendet Software wie memtest86 mehrere Durchgänge mit unterschiedlichen Bitmustern, um den Speicher zu testen. Lösung:

  1. Speicher testen mit memtest86, am besten langer Test, über Nacht laufen lassen, dauert sehr lange.

  2. Wenn ein fehlerhafter Speicher erkannt wird, verwenden Sie memmap Kernel-Parameter, um den Kernel zu zwingen, diesen Speicher nicht zu verwenden:

   memmap=nn[KMG]$ss[KMG]
            [KNL,ACPI] Mark specific memory as reserved.
            Region of memory to be used, from ss to ss+nn.
            Example: Exclude memory from 0x18690000-0x1869ffff
                     memmap=64K$0x18690000
                     or
                     memmap=0x10000$0x18690000

Darüber hinaus können Sie ECC-Speicher verwenden, der 1-Bit-Fehler korrigiert und 2-Bit-Fehler in Ihrem Speicher automatisch erkennt (und Sie erhalten Protokollmeldungen vom Kernel über nicht korrigierbare Speicherprobleme, falls diese auftreten)


Der Beitrag und die Antwort missverstehen das Problem. Die Speicherbereinigung soll verhindern, dass korrigierbare Einzelbitfehler zu nicht korrigierbaren Doppelfehlern werden. Der Scrubber lediglich gelegentlich den gesamten physischen Speicher (wodurch Cache-Fehlversuche dazu erzwungen werden). Wenn einzelne Bitfehler vorhanden sind, werden sie korrigiert (und die Korrektur muss den korrekten Wert mit einem Vergleich und Austausch neu schreiben), wodurch der Fehler gelöscht wird.

Andernfalls, wenn ein zweiter Fehler in einem Wort auftritt, das bereits einen Fehler enthält, ist das gesamte Wort nicht korrigierbar und das Betriebssystem muss drastische Maßnahmen ergreifen.

Das Scrubbing ist wichtig, da sich sonst im Speicher, der gelesen, aber nicht geschrieben wird (wie Codepages), im Laufe der Zeit Fehler ansammeln können.


Die Antwort ist ja, und es wird transparent durchgeführt (vorausgesetzt, Sie haben ECC-Speicher, um Fehler zu erkennen, und Ihre Kernel-Version ist mindestens 2.6.30, um weiterhin sicher zu funktionieren).

Grundsätzlich wird Ihr Speicher bei jedem Lesevorgang vom Prozessor überprüft und regelmäßig* bereinigt, um die Übereinstimmung mit den Fehlerkorrekturcodes (ECC) zu überprüfen. Wenn ein Fehler aufgetreten ist, erhalten Sie eine Machine Check Exception, die dann protokolliert und von mcelog (http://www.mcelog.org/) abgerufen wird.

Wenn Ihr Fehler korrigierbar war, wird ein "Leaky Bucket"-Zähler erhöht, wodurch ein physisches DIMM, das zu oft ausfällt, transparent durch ein anderes ersetzt wird. Somit wird Ihre Speicherseite an einen neuen Ort kopiert, Ihre virtuelle Speicheradresse wird aktualisiert, um auf die neue Seite zu zeigen, und die alte Seite wird vom Betriebssystem als nicht mehr zu verwenden markiert.

Dies wird unter Linux als "Soft-Offlining" bezeichnet (und unter Solaris das Zurückziehen von Speicherseiten, ich weiß nichts über andere Betriebssysteme).

Wenn Ihr Fehler jedoch nicht korrigierbar war, passiert das, was als "Hard-Offlining" bezeichnet wird, das heißt, Ihre Speicherseite wird aus der normalen Speicherverwaltung des Betriebssystems entfernt und Ihre Anwendung wird beendet (NB:durch ein abfangbares SIGBUS-Signal, das Ihnen sagt, wo Der Fehler ist aufgetreten, aber es ist selten genug, dass man sich nicht darum kümmert und versucht, ihn abzufangen).>

Sie können mehr über Mcelog lesen, es gibt viele Konfigurationsoptionen, Sie können andere auszulösende Verhaltensweisen, Optionen und andere Hinweise erhalten, was Sie lesen und wie Sie sicherstellen können, dass Mcelog auf Ihrem System ausgeführt wird.

* Scrubbing oder "Patrol Scrubbing" besteht darin, den Speicher zu lesen, ihn mit ECC auf Fehler zu prüfen und mit den korrigierten Speicherwörtern zu überschreiben, wenn ein Fehler entdeckt wird. Der Begriff Patrouillen-Scrubbing wird im Gegensatz zum Überschreiben falscher Daten bei Fehlern bei Speicherlesevorgängen verwendet, was manchmal als "Demand Scrubbing" bezeichnet wird. Scrubbing ist ein Hardwareverfahren, das normalerweise über das BIOS aktiviert werden kann.


Linux
  1. Linux-Speichernutzung

  2. Wie kann ich die Speicherbandbreite beobachten?

  3. Inaktiver Linux-Speicher

  4. Den Speicher eines Linux-Prozesses in eine Datei ausgeben

  5. Wie werde ich über ECC-Fehler in Linux benachrichtigt?

13 Möglichkeiten, wie Sie Linux helfen können

So löschen Sie den Auslagerungsspeicher unter Linux

kostenlose Befehlsbeispiele in Linux

Können Windows-Container unter Linux gehostet werden?

Linux-Speichersegmentierung

Wie kann ich einen Speicherblock aus dem Linux-Kernel reservieren?