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žnostmemmap
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žnostmemmap=...
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.
-
Stisknutím klávesy „c“ přejdete do konfiguračního dialogu
-
Poté „4“ pro „Režim hlášení chyb“
-
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:
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.