- předchozí článek - následující článek - obsah - úvodní stránka -

Linuxové noviny 05-06/2001

Testujeme paměť s Memtestem

David Häring, 2. června 2001

 
Čas od času je zapotřebí otestovat funkčnost paměti (rozumějme počítače, i když utilita na testování paměti admina by také určitě neškodila), ať už při podezření že něco není v pořádku anebo při zahoření nového PC. Výborným pomocníkem je utilita Memtest86. Jak už napovídá samotný název, je určena pro platformu x86. Jejím autorem je Chris Brady (ovšem některé části memtestu vychází ze zdrojových kódů linuxového jádra) a k nalezení je na serveru reality.sgi.com (http://reality.sgi.com/cbrady_denver/memtest86/).

Jak memtest pracuje

Memtest nelze spouštět z běžícího operačního systému - buď se zavádí přímo z diskety anebo z disku pomocí nějakého zavaděče (třeba LILO, v některých distribucích je memtest součástí LILa). Po zavedení se memtest spustí a v menu zvolíme typy testů, které chceme provést. Zvolené testy pak memtest provádí ve smyčce, dokud jej neukončíme.

Testování paměti probíhá tak, že se celá paměť zaplní určitým vzorem. Následně se od nejnižší adresy k nejvyšší postupně čte (kontroluje se, zda je tam skutečně to, co bylo zapsáno) a přepisuje jiným vzorem (binárním doplňkem původního vzoru). Totéž se opakuje od nejvyšší adresy k nejnižší. Tento algoritmus se nazývá "moving inversion". Druhý algoritmus, který memtest používá, funguje následovně: Počínaje výchozí pozicí (offsetem) 0 se na každou dvacátou pozici v celém rozsahu paměti zapíše určitý vzor. Následně na všechny ostatní pozice zapíše jiný vzor (opět binární doplněk původního vzoru) a tento krok několikrát opakuje. Poté znovu přečte a zkontroluje obsah každé dvacáté pozice. Celý algoritmus je pak opakován z výchozí pozice zvýšené o 1 (protože testujeme každou dvacátou pozici, je tedy potřeba ke kompletnímu otestování paměti algoritmus dvacekrát opakovat, pokaždé z výchozí pozice o 1 vyšší).

Konkrétně pak memtest nabízí výběr z 10 testů vycházejících z výše popsaných algoritmů. Liší se vzory, které zapisují, některé pracují se zapnutou nebo vypnutou cache procesoru apod. a také se liší dobou vykonávání.

Instalace

Sestává pouze z vytvoření bootovací diskety s memtestem a to buď s použitím již připraveného obrazu, který je součástí distribuce (soubor precomp.bin), anebo s použitím zdrojového kódu. V prvním případě postačí vložit prázdnou disketu do počítače a spustit make install-bin. Pokud chceme memtest používat pro kontrolu paměti častěji, můžeme soubor memtest.bin zkopírovat třeba do adresáře /boot, upravit konfiguraci zavaděče OS a můžeme memtest zavádět z disku. Pokud používáme LILO, do souboru /etc/lilo.conf vložíme na konec např. následující dva řádky:

image = /boot/memtest.bin 
label = memtest

Na výzvu LILO: při startu počítače pak zadáme "memtest" a memtest se spustí z pevného disku.

Diagnostika vadných modulů

Protože memtest nezná skutečné rozmístění SIMM/DIMM modulů na desce, nemůže přímo identifikovat, který z modulů je vadný. Pokud tedy memtest nalezne chybu, je potřeba test opakovat a postupně ubírat jednotlivé moduly nebo je postupně vyměňovat za jiné. Ne vždy ovšem můžeme libovolně ubírat či kombinovat paměťové moduly, např. proto, že u některých systémových desek se musí sloty obsazovat po dvojicích apod. V tomto případě si pomůžeme výměnou pořadí modulů - pokud se změní vadná adresa, pak je jeden z modulů, jejichž pořadí jsme zaměnili, vadný.

V této souvislosti se zmíníme i o záplatě linuxového jádra BadRAM, která umožňuje Linuxu pracovat i s částečně poškozenými paměťovými moduly. Tato záplata funguje tak, že vadná paměť je při bootu alokována jádrem a zůstává nepoužita.

Možné problémy

  • Pokud testujeme systém s ECC pamětí, nebude memtest kvůli samoopravnému mechanismu těchto paměťových modulů moci odhalit některé 1 bitové chyby.
  • Zdrojový kód memtestu může být nekompatibilní s některými hlavičkovými soubory soubory jádra, pokud nelze memtest sestavit, je možné použít předkompilovanou verzi, která je součástí distribuce (soubor precomp.bin)

Závěrem

Memtest86 je velice šikovná utilita pro důkladné otestování paměti a rozhodně se vyplatí mít ji po ruce. S pomocí jaderné záplaty BadRAM pak můžeme i částečně poškozené paměťové moduly jako náhradní řešení používat. *


- předchozí článek - následující článek - obsah - úvodní stránka -