Identificando módulos de memória RAM com o Memtest86+

Ademir | 09:13 | 0 comentários

Identificação de memórias RAM com o programa memtest86+

Memtest86+ é um programa usado para identificar erros na memória RAM. Os erros de memória são muito comuns e, em alguns casos, difíceis de serem diagnosticados. Os erros, em muitas vezes, são confundidos com problemas do sistema operacional ou da placa mãe.

A eletricidade estática é a principal responsável pela maioria dos problemas com os módulos de memória. As descargas geralmente não destroem os filamentos dos circuitos, mas causam o aparecimento de falhas microscópicas, que vão aumentando com o decorrer do tempo até romper e inutilizar o componente. Este processo pode demorar meses ou até anos, mas de qualquer forma reduz sua vida útil. 

A placa-mãe também pode ser responsável por vários erros, pois ela é a responsável de transportar os dados da memória até o processador. Se a placa-mãe corromper os dados pelo caminho ocorrerá travamentos e outros sintomas semelhantes aos causados por um módulo de memória com defeito.

Seja qual for a causa a melhor forma de identificar o problema é executar um teste completo sempre que montar um PC ou instalar um novo módulo de memória.


Existem vários programas desse tipo, um dos melhores é o Memtest86+, disponível no  endereço: http://www.memtest86.com.

O Memtest86+ é baseado no Memtest86 original escrito por Chris Brady, Memtest86+ é suportado por alguns sócios do time x86-secret . Memtest86+ é  lançado sob a condição da Licença Pública GNU (GPL), nenhuma restrição para uso privado ou comercial.

A grande vantagem do Memtest86+ sobre outros programas de testes de memória é que além de pequeno, gratuito e de código aberto, ele é quase automático. Basta gravar um CD ou disquete e dar boot para que o teste seja iniciado automaticamente. Ele fica num loop infinito, repetindo os testes e indicando os erros que encontrar até que seja interrompido.

Existem duas opções de download, o mais prático é baixar uma imagem ISO, que pode ser usada para fazer um CD bootável. O arquivo tem apenas 64 kb compactado e 1.6 MB depois de descompactado. No site você vai encontrar também os programas para gerar o disquete de boot no Windows e Linux. 

É necessário dar boot diretamente no Memtest86+ para que ele possa testar realmente toda a memória do sistema. 

O Memtest86+ possui opções para configuração, ao pressionar a tecla C surge a tela com as opções:
Identificação de memórias RAM com o programa memtest86+
Menu de configurações do Memtest86+
1 - Test selection - Permite cancelar o teste atual ou pular para outro;
2 - Address range - Especifica a quantidade de memória RAM para teste;
3 - Memory sizing - Caso a quantidade total de memória não seja reconhecida pelo BIOS, existe a opção para ignorar os parâmetros do BIOS.
4 - Error Report mode - Mostra os erros, caso existam, em forma de resumo e em que teste ocorreram;
5 - Show DMI memory info - Configura o modo que os erros serão reportados;
6 - ECC mode - Ativa o modo ECC para o teste;
7 - Restart - Recomeça o teste;
8 - Redraw screen - Atualiza a tela;
9 - Adv. options - Depende do chipset para ser habilitado;
0 - Continue - Continua o teste e finaliza as configurações.

O Memtest86+ possui um total de 9 testes. Os 5 primeiros são relativamente rápidos, mas os 4 testes finais são mais rigorosos, capazes de encontrar erros não detectados pelos testes iniciais, mas em compensação são muito demorados. Os 8 testes são executados automaticamente, mas o nono precisa ser ativado manualmente. 

Se, por acaso, a tabela inicial do Memtest86+ informar incorretamente a quantidade de memória, acesse a opção "3" (memory sizing) e a opção "3" (probe). Isso fará com que o Memtest86+ detecte a memória, desprezando as informações do BIOS. Na tela principal, pressione a tecla 5 para ter um sumário com todos os erros encontrados em cada teste:

Identificação de memórias RAM com o programa memtest86+
Memtest86+ em execução
O tempo necessário varia de acordo com o desempenho e principalmente com a quantidade de memória instalada. Dobrar a quantidade de memória dobra o tempo do teste. Usar um processador mais rápido tem pouca influência, pois o gargalo é a velocidade de acesso à memória, não o processamento.

O Memtest86+ já vem pré-instalado em muitas distribuições, aparecendo como uma opção de boot no menu de boot. Você pode utilizar também o CD de uma versão recente do Knoppix ou do Kurumin, utilizando a opção "memtest" na tela de boot.

Tipos de testes:

Teste 0 (Address test, walking ones, no cache): Testa o acesso a todos os endereços da memória, semelhante com que o BIOS faz na contagem de memória durante o boot. Este é o teste mais rápido e serve basicamente para checar a quantidade de memória disponível.

Teste 1 (Address test, own address): Este teste é semelhante ao 0, mas adota uma estratégia diferente, checando endereços e não apenas realizando uma contagem rápida. Isso permite detectar problemas de endereçamento no módulo. Outra diferença é que este teste é feito sem utilizar os caches do processador, para evitar que ele mascare defeitos nos módulos.

Teste 2 (Moving inversions, ones&zeros): Escreve bits 1 e depois bits 0 em todos os endereços da memória. Este algoritmo também utiliza os caches L1 e L2 do processador. É um teste rápido que identifica os erros mais grosseiros, onde algumas células do módulo estão realmente queimadas.

Teste 3 (Moving inversions, 8 bit pat): Neste teste escreve sequências de dados de 8 bits, repetindo o teste 20 vezes com sequências diferentes.

Teste 4 (Moving inversions, random pattern): Este teste é similar ao teste número 3, mas usa uma seqüência randômica de acessos, que é repetida um total de 60 vezes. Parece um grande exagero, já que este teste é destinado a identificar os mesmos erros que o teste 3, mas é justamente essa "insistência" e uso de diversas sequências diferentes de operações que torna o memtest86+ tão confiável na detecção de erros, capaz de detectar erros raros ou transitórios, que não aparecem em outros testes.

Teste 5 (Block move, 64 moves): Move dados de um endereço para outro da memória, são movidos blocos de 4 megabits de cada vez. Este teste é repetido 64 vezes.

Teste 6 (Moving inversions, 32 bit pat): Os dados gravados em cada bit de memória são lidos e movidos para o endereço adjacente. A operação é repetida 32 vezes, para testar todas as combinações possíveis.


Este teste detecta um tipo de erro muito comum que é a "contaminação" de endereços. Isso ocorre quando, por um defeito de fabricação, o isolamento elétrico entre duas ou mais células de memória fica muito fino, permitindo que os elétrons saltem de um para o outro. Isso faz com que ao gravar um dos bits o outro também seja gravado com o mesmo valor. Esse tipo de problema pode ser bastante intermitente, acontecendo apenas quando o segundo bit estiver com um valor zero, ou apenas esporadicamente.

Teste 7 (Random number sequence): São escritas sequências de números randômicos, preenchendo todos os endereços da memória. Os números são conferidos em pequenos blocos e o teste é repetido diversas vezes.


Teste 8 (Modulo 20, ones&zeros): Este teste é basicamente uma repetição do teste 7, mas utiliza um algoritmo diferente, chamado "Modulo-X", que elimina a possibilidade de qualquer defeito ter passado despercebido pelos testes anteriores por ter sido mascarado pelos caches L1 e L2 ou mesmo pelos registradores do processador.
Note que tanto o teste 7 quanto o 8 são bastante demorados e servem apenas para detectar erros extremamente raros, eliminando qualquer dúvida sobre a saúde dos módulos. 

Teste 9 (Bit fade test, 90 min, 2 patterns): Permite detectar erros raros relacionados com os circuitos de refresh, ou soft-erros causados por fatores diversos, que alterem os dados armazenados.


No teste, todos os endereços são preenchidos usando uma seqüência de valores pre-definidos. O programa aguarda 90 minutos e verifica os dados gravados, anteriormente. Esses dados são produzidos usando sequências matemáticas, de forma que o programa só precisa repetir as mesmas operações na hora de verificar, sem precisar guardar uma cópia de tudo que gravou em algum lugar.

Em seguida, a mesma seqüência é gravada novamente, mas desta vez com os dígitos invertidos (o que era 1 vira 0 e o que era 0 vira 1). O programa aguarda mais 90 minutos e checa novamente.
Este teste demora mais de três horas, por isso não é executado automaticamente junto com os outros 8. 
Para executá-lo, pressione "C", depois "1" (Test Selection) e em seguida "3" (Select Test). Na opção "Test Number [1-9]" pressione "9" e em seguida "0" (Continue).

Ao detectar um erro, a primeira providência é trocar o módulo de memória defeituoso e refazer o teste. Em alguns casos o problema pode não ser no módulo, mas sim na placa-mãe. Em outros casos mais raros pode ser que tanto o módulo quanto a placa estejam bons, e o problema seja apenas algum tipo de incompatibilidade entre eles. 


Neste caso experimente baixar a freqüência de operação da memória, ou do FSB para testar o módulo em frequências mais baixas que as nominais. Muitas vezes um módulo danificado por estática ou por variações nas tensões fornecidas pela fonte pode deixar de funcionar estavelmente na freqüência máxima, mas continuar suportando frequências mais baixas.
Outra dica é limpar cuidadosamente o módulo, removendo a poeira acumulada e limpando os contatos.

Na imagem abaixo temos um módulo de 4095 MB danificado por estática. Veja que foram identificados diversos endereços defeituosos. A lista mostra apenas os primeiros erros, mas pressionando a tecla "C" e depois "4" (error summary), é possível ver o número total. Nesse caso, o módulo tinha 2036 endereços defeituosos. Além de identificar os erros, o Memtest+ mostra a partir de qual MB do módulo eles começam. Pela imagem, podemos notar que eles começam a partir do 2048.4° MB:

Identificação de memórias RAM com o programa memtest86+
Memtest86+ reportando erros.

No caso de módulos em que os erros aparecem logo nos primeiros endereços, não existe o que fazer, pois eles farão com que o sistema trave logo no início do boot. Módulos onde os defeitos se concentram no final(como esse do exemplo) ainda podem ser usados para testes, pois o sistema acessa sempre a memória a partir do começo, deixando os últimos endereços do módulo por último. Enquanto você estiver rodando aplicativos leves e o sistema não acessar os endereços defeituosos do módulo, tudo funciona normalmente.
No Linux é possível configurar o sistema para utilizar apenas o começo do módulo, ignorando os endereços a partir de onde começam os erros. Isso é feito alterando a opção "mem=384M" (onde o "384" é a quantidade de memória que deve ser usada) para o Kernel na tela de boot.

Isso varia um pouco entre as distribuições do Linux. No Knoppix deve digitar "knoppix mem=384M" na tela de boot, no Kurumin digite  "kurumin mem=384M". No Ubuntu é preciso pressionar a tecla "F6" e em seguida adicionar o "mem=384M" .
No caso do Windows XP, é possível usar a opção "/maxmem=". Adicione a linha no arquivo "boot.ini", especificando a quantidade de memória que deve ser utilizada (em MB), como em "/maxmem=384". Esta alteração pode ser feita também através do msconfig, através da aba "Boot.ini > Opções Avançadas".

Depois de concluído o boot, você pode confirmar usando o comando "free", que reporta o uso de memória. Você verá que independentemente da capacidade real do módulo, o sistema usa a memória apenas até o MB especificado na opção. Essa dica permite aproveitar a parte "boa" do módulo em algum micro usado para aplicações leves, ao invés de ter que jogá-lo fora.
Não se esqueça de identificar os módulos defeituosos (ou o micro onde eles forem instalados), indicando a partir de qual MB foram identificados endereços defeituosos. Assim você evita de ter de executar o teste novamente cada vez que precisar reinstalar o sistema, ou instalar os módulos em outro micro.

Para baixar o memtest86 acesse o site www.memtest86.com/

Categoria: Programas

Compartilhe este artigo :

0 comentários

^ Ir para o topo