Jak zakázat správný sektor špatné RAM podle indikace chyby MemTest86 +?

MemTest86 + (verze obsažená v Ubuntu 13.04) říká

Failing address: 002f796c48 - 759.5 MB 

Co bych měl v parametru jádra memmap tuto oblast obejít?

Zkusil jsem spustit memtester 770MB a říká všechno je v pořádku, takže to nevypadá, že indikace MemTestu znamenají od začátku chybu v 759,5 MB.

Jak interpretovat tuto indikaci MemTest pro konfiguraci memmap?

Nemám peníze na nákup nové paměti RAM a chyba se zdá být jediná, takže doufám, že ji mohu jen přepsat.

Komentáře

  • FWIW, jádro označí určité stránky jako " rezervované ", pokud zjistí špatný segment ale je schopen se zotavit. Zobrazuje výstup " free -m " moc dvou pro součty? Zmíním to jako způsob, jak vysvětlit, proč může memtester nevidí špatnou RAM, ale memtest86 + může.
  • Nevypadá to ' jako moc dvou aktualit: i.stack.imgur.com/l86L1.png
  • V době, kdy je zjištěna chyba (pokud máte dokonce ECC RAM), je obvykle příliš pozdě. Také free -m nikdy nehlásí sudou mocninu dvou, protože bios i jádro si rezervují nějaký ram.
  • Sní se mi o koupi notebooku s ECC, ale nikdy nenaleznu žádné dostupné nabídky, vypadá to, že nemají ' neexistují.
  • Vypadá to, že jádro také printk ' s když najde špatnou stránku (řádek 264-265).

Odpovědět

memmap

Existuje tento výukový program s názvem: Bad Memory HowTo , který pojednává o deaktivaci paměti prostřednictvím jádra pomocí memmap do jádra. Podle howto máte dvě možnosti, pokud jde o memmap:

  • Po špatné paměti vše vypnout – (mem=###M option)
  • Vypněte pouze paměť kolem špatné paměti – (memmap=#M$###M option)

S první možností pokud memtest hlásí, že na 600M je špatná paměť, můžete RAM od tohoto bodu deaktivovat až do konce RAM pomocí:

 mem=595M 

Pokud existuje “ Pokud máte špatnou RAM na 802M a 807M, můžete 10M část RAM od 800M deaktivovat takto:

memmap=10M$800M 

POZNÁMKA: Toto vyřadí 10M za základní adresu 800M. Poté byste měli spustit memtest86+, abyste potvrdili, že tento argument je správně.

BadRAM

Pro Ubuntu je k dispozici opravný program s názvem BadRam. Zde je velmi dobře popsán v tomto příspěvku s názvem: BadRAM v komunitě Ubuntu web.

Po použití opravy na jádro pomocí podrobností z této stránky provedete úpravy v nastavení Grub2:

výňatek z tohoto webu pro Grub2

Konfigurační soubor GRUB2 v Natty má řádek pro konfiguraci výjimek špatného RAM jádra. Budu tedy předpokládat, že jde o upřednostňovaný způsob mapování části paměti, která zobrazuje chyby. Řádek, který jsem nastavil, byl

GRUB_BADRAM = „0x7DDF0000,0xffffc000“

Navrhovaným způsobem na každém webu, který jsem našel, bylo nastavit toto, aby bylo možné spustit memtest86 a nechat vám ukázat Nastavení BadRAM. memtest86 mi dal stránku věcí, které bych musel zadat. Viděl jsem, že všechny adresy byly v jednom 16K bloku, takže jsem jen chtěl zmapovat tento 16K blok z akce. Takto jsem vygeneroval správné zadání.

První parametr je snadný. To je základní adresa špatné paměti. V mém případě jsem viděl, že všechny špatné adresy byly větší než 0x7DDF0000 a menší než 0x7DDF4000. Začátek bloku 16 kB jsem tedy vzal jako svoji výchozí adresu.

Druhým parametrem je maska. Vložíte 1 s, kde požadovaný rozsah adres sdílí stejné hodnoty, a 0 s, pokud se bude lišit. To znamená, že musíte vybrat rozsah adres tak, aby se lišily pouze bity nižšího řádu. Při pohledu na moji adresu je první část masky snadná. Chcete začít s 0xffff. Pro další okusování vysvětlím pomocí bitových map. Chci se pohybovat od 0000 do 0011. Maska pro badram by tedy byla 1100 nebo hex c. Poslední 3 křupky musí být v masce všech 0 s, protože chceme mapovat celý rozsah. Takže dostaneme celkový výsledek 0xffffc000.

Po nastavení tohoto řádku v / etc / default / grub jsem spustil sudo update-grub a restartoval a moje špatná paměť se již nepoužívala. K mapování špatné paměti pomocí této metody nejsou nutné žádné opravy jádra.

Navazující opatření č. 1

Prohledávání stránky wikipedia pro memtest86 + uvádí následující:

výňatek z stránky wikipedie Memtest86

Počínaje Memtest86 2.3 a Memtest86 + 1.60, program může vypsat seznam chybných oblastí RAM ve formátu očekávaném patchem BadRAM pro jádro Linuxu; pomocí těchto informací může systém Linux spolehlivě používat modul RAM, i když má několik špatných bitů. Grub2 je schopen dodat stejné informace do neopraveného jádra, což eliminuje potřebu opravy BadRAM.

Také jsem narazil na tento Stránka Gentoo , která specifikovala memmap=... pomocí hexadecimální adresy, takže ji můžete určit takto:

memmap=5M$0x2f796c48 

5M je jen odhad, očividně byste jej mohli upravit nižší nebo vyšší podle toho, kolik RAM v této oblasti chcete / potřebujete vynechat.

Nakonec můžete také určit velikost v hexadecimálním formátu:

memmap=0x10000$0x2f796c48 

Ignoruje 64 kB začínající na adrese 0x2f796c48.

Reference

Komentáře

  • " 800M až 804M " má být " 800M až 810M " I předpokládejme …
  • Může to být, ale to, co jsem napsal, je také v pořádku, i když to ' s zahodilo více paměti než 4M mezi 800M a 810M.
  • 1. Vím o možnosti memmap, ale otázka je spíše o tom, jak interpretovat výstup memtest86 +. Uvedl jsem konkrétní příklad výstupu memtest86 + a zeptejte se o pomoc s konfigurací memmap odpovídajícím způsobem v tomto konkrétním případě. 2. Poté byste měli spustit memtest86 +, abyste potvrdili, že tento argument je správný. " – memtest86 + běží před jádrem OS, takže vážně pochybuji možnost memmap linuxového jádra to může ovlivnit.
  • @Ivan, 1. Myslel jsem, že je to zřejmé vzhledem k příkladům, které jsem zahrnul, ale vy ' d je třeba říci něco jako: memmap=5M$759M pro váš konkrétní případ, vzhledem k tomu, že memtest86 + selhává na 759,5 MB. 2. Myslel jsem, že byste měli předat možnost memmap=... také memtest86 +. To jsem nevyzkoušel / nepotvrdil, ale něco, co byste mohli dělat s memtest86 +.
  • Dobře, díky. Nebyl jsem si jistý, co to znamená " 002f796c48 – 759,5 MB " (po adrese 002f796c48 to může být 759,5 megapixelu nebo něco podobného) ) a nikdy jsem neměl podezření, že mohu předat parametry linuxového jádra MemTest86 + (myslel jsem si, že to s Linuxem nemá nic společného).

Odpovědět

Memtest86 + (použil jsem 4.20) může přímo vydávat badramový formát.

  1. Stisknutím klávesy „c“ přejdete do konfiguračního dialogu Memtest konfigurační dialog

  2. Poté „4“ pro „Režim hlášení chyb“

    dialog pro hlášení chybových hlášení v režimu

  3. Pak „3“ pro „BadRAM Patterns“

Výstup se změní ze seznamu jednotlivých neúspěchů testu na řadu řádků badram =, z nichž každá obsahuje ještě jeden nový chybný sektor. Vzhledem k tomu, že řádky se připojují a spojují sousední segmenty, můžete test spustit pouze bezhlavě přes noc a použít závěrečnou tištěnou čáru (i když pokud máte opravdu špatný stmívání, méně přesný formát „5 meg v tomto bodě“ bude pravděpodobně o něco kratší ).

Konečný výsledek:

Memtest86 + zobrazující výstup badramu

Komentáře

  • Teď, kdybych to ' nemusel ručně zkopírovat a místo toho předat GRUBu bez chyb při přepisování, bylo by to fantastické.
  • Co jsem udělal, je vyfotografovat to (telefon s fotoaparátem), načíst jej na GIMP, = > grayscale = > invert = > contrast / gamma, poté jej předejte tesseract ${IMG} stdout .. poté před vložením do / etc / default řádek ověřte a opravte / grub … Pravděpodobně to trvalo stejně dlouho, jako kdybyste to hned zadali rovnou ^ ^
  • Rozhodně zábavnější než to udělat fuj

odpověď

velmi špinavé a velmi pěkné řešení: spusťte memtester uživatelského prostoru, počkejte, až najde chybu. Nechte to například na 0xfce2ea31.

Potom spusťte znovu memtester, ale na této fyzické adrese, takže:

memtester -p 0xfce20000 64k 128 

Chcete-li být určitě je lepší, když obětujete více než stránku problematické adresy.Zde jsme obětovali 64kByte kolem vadné adresy.

Pokud vše proběhlo v pořádku, najde chybné místo v paměti, mnohem rychleji, znovu.

Poté pozastavte proces memtesteru pomocí ctrl / z.

Důsledek: Dokud nebude proces memtesteru pozastaven, nebude odebrán více prostředek, ale žádný jiný proces nebude mít přístup k vadné paměti . Protože jej přidělí memtester.

Zvláště užitečné na velkých vzdálených serverech. Pozastavený proces může zůstaňte, dokud nebude dodána nová RAM. Nebo možná až do příštích Vánoc, kdy prostoj nebude tak velkým problémem.

Komentáře

  • Místo tohoto triku můžete také použít chmem nástroj v util-linux, který řekne jádru, aby vypnulo určitý rozsah paměti offline (přesunutí dat jinam a následné opakované použití stránek) .
  • @TooTea Zkoušel jsem tento nástroj na více počítačích a nemohl jsem to udělat aktivovat jeden blok paměti.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *