Um dos cenários comuns de falha do servidor é a DRAM ruim, às vezes até 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, eu me pergunto se memtest86+
verifica a parte da memória que memtest86+
está carregada.
A memória é alocada para memtest86+
tão pequena que não importa, ou é possível que ocorra memtest86+
um defeito na DRAM porque ela não pode testar os locais de memória em que reside?
Respostas:
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 nessa região, é muito provável que o teste em si seja travado). No entanto, o memtest86 + é capaz de realocar seu próprio código para um endereço diferente em tempo de execução e, usando esse truque, é possível testar toda a memória que é permitida pelo firmware (BIOS) - mas não de uma só vez.
Essa realocação de código é descrita em README.background dentro do arquivo de código-fonte do memtest86 + (o arquivo está um pouco desatualizado - por exemplo, ele afirma que os endereços usados para o código do memtest86 + são 0x2000 e 0x200000, mas o endereço baixo, conforme definido na origem, é na verdade, 0x10000, e o endereço alto é 0x2000000 ou 0x300000, dependendo da quantidade de memória na máquina).
Mas mesmo com esse truque de realocação, o memtest86 + não pode testar toda a memória pelos seguintes motivos:
Normalmente, o firmware (BIOS) reserva algumas regiões de RAM para seu próprio uso (por exemplo, tabelas ACPI). Embora essas regiões de RAM possam ser acessadas pela CPU, escrever qualquer coisa nelas pode resultar em comportamento imprevisível.
Alguma parte da RAM é usada para o Modo de Gerenciamento do Sistema e nem é acessível a partir da CPU fora do código SMM privilegiado.
O intervalo de endereços de RAM entre 640K e 1M é inacessível devido a peculiaridades do layout de memória do PC herdado (parte dessa RAM pode ser usada como sombra para a ROM do BIOS e para o SMM, outras partes podem ser completamente inacessíveis).
fonte
Não, o memtest não pode testar sua própria memória. No entanto, é tão pequeno (apenas alguns KB) que dificilmente importa. EDIT: esta afirmação está errada, pois, como indicado na resposta selecionada, o memtest pode se realocar dinamicamente para testar toda a memória endereçável do usuário.
-
Em teoria, o processador moderno pode, no momento da inicialização, configurar parte de seu cache como memória programável, a partir de programas muito pequenos (como memtest) podem ser executados sem tocar na DRAM.
No entanto, é um recurso específico do modelo (que requer suporte do BIOS) e não acho que o memtest esteja usando-o.
fonte
memtest
está testando o cache da CPU também. Portanto, sememtest
ele fosse carregado nesse cache, essa parte do cache não poderia ser testada, o que é mais problemático, porque é muito menor que a memória?