GNU/Linux >> Znalost Linux >  >> Linux

Může Linux vymazat paměť?

To je vlastně špatný nápad. Paměť nelze spolehlivě otestovat rychlým pohybem. To je důvod, proč software jako memtest86 používá k testování paměti více průchodů s různými bitovými vzory. Řešení:

  1. Otestujte paměť pomocí memtest86, nejlépe dlouhý test, nechte jej běžet přes noc, bude to trvat dlouho.

  2. Pokud je detekována špatná paměť, použijte memmap parametr jádra, který přinutí jádro nepoužívat tuto paměť:

   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

Kromě toho můžete použít paměť ECC, která opraví 1bitové chyby a automaticky detekuje 2bitové chyby ve vaší paměti (a pokud k nim dojde, budete dostávat zprávy protokolu o neopravitelných problémech s pamětí)


Příspěvek a odpověď špatně rozumí problému. Čištění paměti má zabránit tomu, aby se opravitelné jednobitové chyby změnily na neopravitelné dvojité chyby. Scrubber pouze veškerou fyzickou paměť (vynucuje k tomu chybějící mezipaměť) příležitostně. Pokud se vyskytnou nějaké jednotlivé bitové chyby, budou opraveny (a oprava musí přepsat správnou hodnotu pomocí porovnání a výměny), čímž se chyba vymaže.

V opačném případě, pokud dojde k druhé chybě ve slově, které již jednu chybu obsahuje, celé slovo bude neopravitelné a operační systém bude muset udělat něco drastického.

Čištění je důležité, protože bez něj se v paměti, která se čte, ale nezapisuje (jako kódové stránky), mohou časem hromadit chyby.


Odpověď zní ano a je to transparentní (za předpokladu, že máte ECC paměť pro detekci chyb a vaše jádro má verzi alespoň 2.6.30, aby i nadále fungovalo bezpečně).

V zásadě je vaše paměť kontrolována při každém čtení z procesoru a pravidelně vyčištěna*, aby se zkontrolovala konzistence s kódy pro opravu chyb (ECC). Pokud dojde k chybě, dostanete výjimku Machine Check Exception, která je poté zaprotokolována a zachycena mcelogem (http://www.mcelog.org/).

Pokud byla vaše chyba opravitelná, zvýší se počítadlo „děravého bloku“, což způsobí, že fyzický modul DIMM, který příliš často selhává, bude transparentně nahrazen jiným. Vaše paměťová stránka je tedy zkopírována do nového umístění, adresa vaší virtuální paměti je aktualizována tak, aby ukazovala na novou stránku, a stará stránka je OS označena jako nepoužitelná.

Tomu se v Linuxu říká „soft-offlining“ (a vyřazení paměťové stránky na Solaris, o jiných OS nevím).

Pokud však vaše chyba nebyla opravitelná, stane se to, čemu se říká „hard-offlining“, to znamená, že vaše paměťová stránka bude odstraněna z běžné správy paměti operačního systému a vaše aplikace bude zabita (Poznámka:nějakým zachytitelným signálem SIGBUS, který vám řekne, kde k chybě došlo, ale je to natolik vzácné, že se o to nestaráte a pokusíte se ji zachytit). Pokud je vaše paměťová stránka namapována ze souboru a vyčištěna, operační systém ji také může transparentně znovu načíst na jiném fyzickém místě namísto ukončení procesu.

Můžete si přečíst více na mcelog, existuje spousta konfiguračních možností, můžete získat další spouštěcí chování, možnosti a další vodítka o tom, co číst a jak se ujistit, že mcelog běží na vašem systému.

* Čištění neboli "hlídkové čištění" spočívá ve čtení paměti, její kontrole proti chybám ECC a přepisování opravenými paměťovými slovy, když je objevena chyba. Termín hlídkové čištění se používá jako opozice proti přepisování nesprávných dat o chybách čtení paměti, což se někdy nazývá "vyžadované čištění". Čištění je hardwarová procedura, kterou lze povolit, obvykle prostřednictvím systému BIOS.


Linux
  1. Linux – skutečné využití paměti?

  2. Linux Out-of-Memory Killer

  3. Jak mohu rezervovat blok paměti z jádra Linuxu?

  1. Využití paměti Linuxu

  2. Jak vymazat mezipaměť v Linuxu

  3. Linuxová neaktivní paměť

  1. Vydání Kali Linux 2018.1

  2. Jak mohu symbolicky propojit soubor v Linuxu?

  3. Je alokace paměti v linuxu neblokující?