Hogyan lehet feketelistára tenni a hibás RAM-szektort a MemTest86 + hibajelzés szerint?

A MemTest86 + (az Ubuntu 13.04 verziója) mondja

Failing address: 002f796c48 - 759.5 MB 

Mit tegyek adja meg a memmap kernel paraméterben, hogy megkerülje ezt a területet?

Megpróbáltam futtatni a memtester 770MB fájlt, és mindent elmond rendben van, így nem úgy néz ki, hogy a MemTest jelzései a kezdetektől fogva hibát jelentenek a 759.5. MB-ban.

Hogyan értelmezzük ezt a MemTest jelzést a memmap?

Nincs pénzem új RAM-ot vásárolni, és a hiba egyetlennek tűnik, ezért remélem, hogy csak felül tudom írni.

Megjegyzések

  • FWIW, a kern bizonyos oldalakat ” fenntartottként jelöli meg “, ha rossz szegmenst észlel de képes helyreállni. A ” free -m ” kimenete kettő hatványát mutatja az összesítéshez? annak magyarázata, hogy a memtester miért tud nem látja a rossz RAM-ot, de a memtest86 + képes.
  • Nem úgy néz ki, mint két tényleges tényező: i.stack.imgur.com/l86L1.png
  • Mire hiba észlelhető (ha még van ecc ram is), általában már késő. Szintén a free -m soha nem jelent kettő egyenletes erejét, mivel a bios és a kern is fenntart egy kis ramot.
  • Álmodom arról, hogy vásárolok egy ECC laptopot, de soha nem találtam elérhető ajánlatot, úgy tűnik, hogy nem ‘ nem létezik.
  • Úgy tűnik, hogy a kern is printk ‘ s amikor rossz oldalt talál (264–265. sor).

Válasz

memmap

Van egy ilyen útmutató: Bad Memory HowTo , amely a memória letiltását tárgyalja a kernelen a memmap argumentum a kernelhez. A hogyan szerint 2 lehetősége van, amikor memmap:

  • A rossz memória után kapcsoljon ki mindent – (mem=###M option)
  • Kapcsolja ki csak a memóriát a rossz memória körül – (memmap=#M$###M option)

Az első opcióval ha a memtest jelentése szerint 600M-nél rossz memória van, akkor ezzel a ponttól a RAM végéig letilthatja a RAM-ot:

 mem=595M 

Ha van ” s rossz RAM 802M és 807M mellett, letilthatja a 10M RAM szakaszot 800M kezdettel, így:

memmap=10M$800M 

MEGJEGYZÉS: Ez feketelistára teszi a 10M-et a 800M-es alapcím után. Utána futtatnia kell a memtest86+ -t, hogy megerősítse, hogy ez az argumentum helyes.

BadRAM

Van egy javítás az Ubuntu számára, BadRam néven. Nagyon jól lefedi itt, ebben a bejegyzésben: BadRAM az Ubuntu közösségben webhely.

Miután kijavította a javítást a kernelre az adott oldal adatainak felhasználásával, módosítja a Grub2 beállításait:

részlet a Grub2 webhelyéről

A Natty-ban található GRUB2 konfigurációs fájl egy sort tartalmaz a kernel bad ram kizárásainak konfigurálására. Tehát feltételezem, hogy ez a memóriarész hibaképes feltérképezésének előnyös módja. Az általam beállított sor a következő volt:

GRUB_BADRAM = “0x7DDF0000,0xffffc000”

Minden általam megtalált webhelyen javasolt módszer az volt, hogy beállítottam ezt: a memtest86 futtatását, és azt, hogy megmutassa a BadRAM beállítások. A memtest86 adott nekem egy oldalnyi cuccot, amelyeket be kellett volna adnom. Láttam, hogy az összes cím egy 16K-os blokkban található, ezért csak azt a 16K-os blokkot akartam működésképtelenül feltérképezni. Így állítottam elő a helyes bejegyzést.

Az első paraméter egyszerű. Ez a rossz memória alapcíme. Az én esetemben láttam, hogy az összes rossz cím nagyobb volt, mint 0x7DDF0000, és kevesebb, mint 0x7DDF4000. Tehát a 16K blokk elejét vettem kezdő címnek.

A második paraméter egy maszk. Azokat az 1-eket írja be, ahol a kívánt címtartomány ugyanazokat az értékeket osztja meg, a 0-kat pedig ott, ahol változni fog. Ez azt jelenti, hogy úgy kell megválasztania a címtartományt, hogy csak az alacsony sorrendű bitek változhassanak. A címemet nézve a maszk első része könnyű. A 0xffff-vel akarsz kezdeni. A következő rágcsálásra bit térképekkel magyarázom. 0000 és 0011 között szeretnék lenni. Tehát a badram maszkja 1100 vagy hex c lenne. Az utolsó 3 rágásnak mind a 0-nak kell lennie a maszkban, mivel azt akarjuk, hogy a teljes tartomány feltérképezve legyen. Tehát a 0xffffc000 összesített eredményt kapjuk.

Miután beállítottam ezt a sort az / etc / default / grub fájlba, lefuttattam a sudo update-grub fájlt, és újraindítottam, és a rossz memóriámat már nem használtam. A rossz memória feltérképezéséhez ezzel a módszerrel nincs szükség kernelparancsokra.

1. számú követés

A wikipédia oldalán a memtest86 + keresése után a következőket állítja:

kivonat a Memtest86 wikipédia oldalról

A Memtest86 2.3-tól kezdődően és a Memtest86 + 1.60, a program kiadhatja a rossz RAM régiók listáját a BadRAM javítás által a Linux kernel számára elvárt formátumban; Ezen információk felhasználásával a Linux rendszer megbízhatóan használhat RAM modult, még akkor is, ha van néhány rossz bitje. A Grub2 ugyanazt az információt képes eljuttatni egy ki nem javított kernelhez, elutasítva a BadRAM javítás szükségességét.

Szintén találkoztam ezzel a Gentoo oldal , amely megadta a memmap=... -et hexadecimális címmel, így a következőképpen adhatta meg:

memmap=5M$0x2f796c48 

Az 5M csak találgatás, nyilvánvalóan alacsonyabbra vagy magasabbra állíthatná, attól függően, hogy az adott régió környékén mennyi RAM-ot szeretne kihagyni.

Végül megadhatja a méretet hexán is:

memmap=0x10000$0x2f796c48 

Figyelmen kívül hagyja a 64KB-osokat a 0x2f796c48 címmel kezdődően.

Hivatkozások

Megjegyzések

  • ” 800M – 804M ” állítólag ” 800M – 810M ” I feltételezem …
  • Lehet, de amit írtam, az is rendben van, annak ellenére, hogy ‘ több memóriát dob el, mint a 4M-es 800M és 810M között.
  • 1. Tudok a memmap opcióról, de a kérdés inkább a memtest86 + kimenet értelmezésére vonatkozik. Hoztam egy konkrét példát a memtest86 + kimenetre és a segítség a memmap ennek megfelelő konfigurálásához ebben az esetben. 2. Utána futtatnia kell a memtest86 + fájlt, hogy megbizonyosodhassunk arról, hogy ez az érv helytálló. a memmap Linux kern opció hatással lehet rá.
  • @Ivan, 1. Úgy gondoltam, hogy az általam felvett példák alapján nyilvánvaló, de te ‘ d valami olyasmit kell mondani, hogy: memmap=5M$759M az Ön esetére, mivel az adott memtest86 + 759,5 MB-nál meghibásodik. 2. Arra gondoltam, hogy a memmap=... opciót át kell adnia a memtest86 + -nak is. Ezt nem teszteltem / nem erősítettem meg, de valami olyat tehet, amit megtehet a memtest86 + alkalmazással.
  • Ok, köszönöm. Nem voltam biztos benne, hogy mit jelent a ” 002f796c48 – 759,5 MB ” (lehet, hogy 759,5 mega lehet a 002f796c48 cím vagy valami hasonló ), és még soha nem sejtettem, hogy átadhatom a Linux kernelparamétereit a MemTest86 + -nak (azt gondoltam, hogy ez semmi köze a Linuxhoz).

Válasz

A Memtest86 + (a 4.20-at használtam) közvetlenül képes kiadni egy badram formátumot.

  1. Nyomja meg a “c” gombot a konfigurációs párbeszédablak eléréséhez memtest konfigurációs párbeszédpanel

  2. Ezután “4” a “Hibajelentési mód”

    memtest hibajelentés mód párbeszédpanel

  3. Ezután “3” a “BadRAM mintákhoz”

A kimenet az egyes teszthibák listájáról badram = sorok sorozatára változik, amelyek mindegyike tartalmaz még egy új rossz szektort. Mivel a vonalak a szomszédos szegmensekhez fűződnek és egyesülnek, egyszerűen csak egy éjszakán át futtathatja a tesztet, és használhatja az utolsó nyomtatott sort (bár ha nagyon rossz a dimm, akkor a kevésbé pontos “5 mega ezen a ponton” formátum valószínűleg kissé rövidebb ).

Végeredmény:

Memtest86 + badram kimenet megjelenítése

Megjegyzések

  • Most, hogyha nem lett volna ‘, akkor ezt nem kellett kézzel átmásolnom, hanem átírási hibák nélkül átadni a GRUB-nak, ez fantasztikus lenne.
  • Amit csináltam, lefényképeztem róla (kamerás telefon), betöltöttem a GIMP-be, = > szürkeárnyalatos = > invert = > kontraszt / gamma, majd átadja a következőnek: tesseract ${IMG} stdout .. majd ellenőrizte és javította a sort, mielőtt beszúrta az / etc / default könyvtárba / grub … Valószínűleg ugyanannyi időbe telt, mint azonnali manuális beírása ^^
  • Határozottan szórakoztatóbb, mint manuálisan megtenni ugh

Válasz

Nagyon piszkos és nagyon jó megoldás: futtasson egy felhasználói memória tesztelőt, várjon, amíg meg nem jelenik hibát talál. Engedje meg például a 0xfce2ea31 címen.

Ezután futtassa újra a memtester-t, de azon a fizikai címen, így:

memtester -p 0xfce20000 64k 128 

jobb, ha többet áldozol, mint a problémás cím oldalát.Itt 64 kByte-ot áldoztunk a hibás cím körül.

Ha minden rendben van, akkor sokkal gyorsabban megint megtalálja a hibás memóriahelyet.

Ezután függessze fel a memtester folyamatot egy ctrl / z használatával.

Következmény: amíg a memtester folyamatát nem függesztik fel, addig nem vesz el többet erőforrás, de egyetlen más folyamat sem fogja elérni a hibás memóriát . Mivel a memtester kiosztja.

Különösen hasznos nagy, távoli szervereken. A felfüggesztett folyamat maradjon, amíg az új RAM-ot nem szállítják le. Vagy talán a következő karácsonyig, amikor a leállás nem lesz akkora probléma.

Hozzászólások

  • E trükk helyett a util-linux chmem eszközével is megadhatja a kernelnek, hogy egy adott memóriatartományt offline állapotba helyezzen (az adatokat máshová helyezi, majd soha nem használja újra az oldalakat) .
  • @TooTea Ezt az eszközt több gépen is kipróbáltam, és nem tudott d egyetlen memóriablokk aktiválása.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük