Hlavní navigace

Jak testuje Memtest

Petr Krčmář

Memtest86 je vynikající program pro testování paměťových modulů ve vašem počítači. Dokáže odhalit poškozené nebo nefunkční paměti a pomůže tak vyřešit časté záhadné problémy s vašim počítačem. V článku se společně podíváme, co všechno umí a jak to dělá.

K čemu to

Paměti jsou velmi citlivou součástí počítače a závisí na nich bezchybný běh systému. Pokud nejsou v pořádku, může se počítač chovat záhadně, systém může vykazovat nepříjemné chyby nebo znenadání havarovat. Mnoho dotazů ve fórech se týká problémů, které jasně zapříčinil špatný hardware.

Mělo by proto být dobrým zvykem každého uživatele počítače z druhé ruky, že nejlépe ještě před jeho zakoupením stáhne Memtest a nechá stroj „proklepnout”.

Co to tedy je

Memtest je samostatná aplikace s vlastním zavaděčem, která je distribuována jako bootovatelný obraz. Ke svému běhu nepotřebuje žádný operační systém ani speciální podporu dalšího software.

Jedná se o program, který se chová jako naprosto samostatný jednoúčelový operační systém. To přináší velmi zásadní výhodu – Memtest není nijak omezen a může si v paměti dělat, co se mu zlíbí. To je samozřejmě velmi důležité pro všechny testy, které provádí. Není rušen dalšími aplikacemi a především není omezován. Za normálních okolností by se totiž musel podřizovat pravidlům nadřazeného systému, která by mu zakazovala pracovat se všemi stránkami paměti.

Ačkoliv tedy nemá na první pohled Memtest s Linuxem nic společného, přece jen jsou úzce svázáni. Oba jsou k dispozici pod GNU GPL, ovšem Memtest zároveň používá některé části kódů přímo z kernelu. Velmi silně je ovšem modifikuje pro své potřeby.

Memtest86 nebo Memtest86+

Původním programem je Memtest86. Jeho vývoj ale šel velmi pomalu a v roce 2002 v podstatě ustal. Proto na počátku roku 2004 vznikl nový fork, který je na originálním Memtestu86 založen, ale snaží se udržet vývoj v pohybu a vytvářet nové a aktuální verze. Vyšel z původní verze 3.0, opravil mnoho chyb a začal vydávat vlastní program.

Původní autoři ovšem nechtěli být zahanbeni, a tak po založení nového projektu začali produkovat nové verze. I přesto je ale Memtest86+ mnohem pokročilejší, rychleji se vyvíjí a podporuje více platforem a hardware. Jeho nezanedbatelnou výhodou je, že běží na 64bitových strojích. Program ale budeme označovat obecně jako Memtest.

Jak na to

Chcete-li Memtest vyzkoušet, navštivte domovské stránky a stáhněte si obraz aktuální verze. Existuje několik způsobů jak program nastartovat. Tím nejjednodušším je jeho nahrání na disketu. Nesmíte ovšem Memtest nahrát na disketu jako běžný soubor, ale zapsat na ni přímo jeho obraz.

V Linuxu bude stačit zadat

# cat soubor > /dev/fd0

Pokud budete chtít obraz zapsat v DOSu, poslouží vám k tomu program rawrite.

Další možností je použití vašeho oblíbeného zavaděče. Pokud používáte Lilo, stačí soubor nahrát do adresáře /boot a pak do /etc/lilo.conf přidáte dva řádky:

image = /boot/memtest.bin
label = memtest

Po novém zapsání zavaděče příkazem lilo stačí rebootovat. Pokud jste použili disketu, zavedete Memtest z ní, jinak vyberte v zavaděči novou položku. Program se spustí a rovnou začne testovat.

Co to umí

Už jsem napsal, že Memtest dokáže otestovat vaše paměťové moduly. Používá k tomu řadu sofistikovaných metod, které dokáže vhodně kombinovat. Obsahuje tak sadu testů, které automaticky na počítači spouští.

Tyto testy jsou založeny na dvou algoritmech. První z nich se jmenuje moving inversion a druhý Modulo-X.

Moving inversion

Stěžejní algoritmus funguje následovně:

  1. Naplní paměť datovým vzorkem
  2. Začne od nejnižší adresy
  3. Zkontroluje, jestli se vzorek nezměnil
  4. Přepíše jej jeho binárním doplňkem
  5. Zvýší adresu

opakuje body 3 – 5

  1. Začne na nejvyšší adrese
  2. Zkontroluje, jestli se vzorek nezměnil
  3. Přepíše jej jeho binárním doplňkem
  4. Sníží adresu

opakuje body 2 – 4

Přestože se jedná o velmi spolehlivý algoritmus, má svá omezení. Dnešní paměťové čipy používají 4 až 16 bitovou sběrnici, takže není možno z nich přečíst právě jeden bit. Vždy vrací vícebitovou hodnotu. Proto není možno zaručit, že byly otestovány interakce všech sousedních buněk.

Proto je potřeba volit takové varianty vzorků, které zajistí vyzkoušení všech možných kombinací jedniček a nul ve všech sousedních buňkách.

Modulo-X

Dalším problémem jsou buffery a cache, které mohou snížit efektivitu předchozího algoritmu. Je sice možné vypnout cache, ale v novějších pamětech už není možno odstavit buffering. Proto vznikl algoritmus Modulo-X, který není cachováním nijak ovlivněn.

  1. Na každou dvacátou pozici je zapsán vzorek
  2. Na ostatní (0 – 19) je zapsán jeho doplněk
  3. Bod 2 se několikrát opakuje
  4. Zkontroluje dvacátou pozici zda se nezměnila
  5. Pozice se posune o 1

Celé testovací okno se tak pomalu posouvá po jedné pozici, ačkoliv se v každou chvíli pracuje s dvaceti samostatnými kusy paměti. Díky tomu ovšem můžeme vyprazdňovat cache a nakonec každého cyklu přečíst reálnou hodnotu z testované paměti.

Všechny testy

Ostatní testy jsou jen drobnými úpravami popsaných algoritmů. Zkouší se různá doba průběhu, zapnuté nebo vypnuté cache, změny zapisovaných vzorů a podobně. Jakmile testy proběhnou, opět se vše spustí od začátku. Chcete-li mít jistotu, měli byste nechat vše proběhnout několikrát dokola.

Závěrem

Memtest je velmi užitečným pomocníkem, kterého byste měli povolat do služby jako prvního ve chvíli, kdy se začnou objevovat podivné potíže s počítačem. Rovněž zabrání tomu, abyste v bazaru koupili zajíce v pytli.

Anketa

Používáte Memtest?

Našli jste v článku chybu?