O memtest86 + testa a memória que é usada para se executar?

62

Um dos cenários comuns de falha do servidor é uma DRAM incorreta, às vezes até mesmo quando a memória ECC é usada.

memtest86+ é uma das ferramentas mais úteis para diagnosticar problemas de DRAM. Como ele se carrega no início da memória, tenho me perguntado se memtest86+ verifica a parte da memória na qual memtest86+ está carregada.

A memória alocada para memtest86+ é tão pequena que não importa, ou é possível que memtest86+ possa perder um defeito na DRAM porque ela não pode testar os locais de memória em que está residindo?

    
por Robin 21.01.2016 / 08:45

2 respostas

78

Obviamente, o memtest86 + não pode testar a região da memória que atualmente contém o código executável do memtest86 + (mas se houver erros de memória naquela região, é muito provável que o próprio teste falhe). No entanto, memtest86 + é capaz de realocar seu próprio código para um endereço diferente em tempo de execução, e usando este truque é capaz de testar toda a memória que é permitido usar pelo firmware (BIOS) - mas não todos de uma vez. p>

Esta realocação de código é descrita em README.background dentro do arquivo de código-fonte memtest86 + (o arquivo está um pouco desatualizado - por exemplo, afirma que os endereços usados para o código memtest86 + são 0x2000 e 0x200000, mas o endereço baixo é definido em a fonte é na verdade 0x10000 e o endereço alto é 0x2000000 ou 0x300000 dependendo da quantidade de memória na máquina).

Mas mesmo com este truque de realocação, o memtest86 + não é capaz de testar toda a memória pelos seguintes motivos:

  • Normalmente, o firmware (BIOS) reserva algumas regiões de RAM para uso próprio (por exemplo, tabelas ACPI). Embora essas regiões de RAM possam ser acessadas pela CPU, gravar qualquer coisa nelas pode resultar em um comportamento imprevisível.

  • Parte da RAM é usada para o Modo de gerenciamento do sistema e nem é acessada pela CPU fora do código SMM privilegiado.

  • O intervalo de endereços RAM entre 640K e 1M está inacessível devido a peculiaridades do layout de memória do PC legado (parte dessa RAM pode ser usada como uma sombra para BIOS ROM e SMM, outras partes podem estar completamente inacessíveis) .

por 21.01.2016 / 12:59
5

Não, o memtest não pode testar sua própria memória. No entanto, é tão pequeno (apenas alguns KB) que dificilmente importa. EDITAR: esta afirmação está errada, pois, como indicado na resposta selecionada, o memtest pode realocar-se dinamicamente para testar a memória endereçável pelo usuário all .

-

Em teoria, o processador moderno pode, na inicialização, configurar parte de seu cache como memória programável, de dentro de programas muito pequenos (como memtest) pode ser executado sem tocar DRAM.

No entanto, é um recurso específico do modelo (que requer suporte ao BIOS) e eu não acho que o memtest esteja usando.

    
por 21.01.2016 / 11:02