
Eu tenho um servidor dedicado de 32 GB de RAM não ECC com CentOS.
Uma vez por dia, ele trava aleatoriamente sem nenhum erro em /var/log/kern.log, /var/log/messages, mysql, apache.
CPU/RAM/IO não são particularmente altos nem baixos.
Existe algum erro registrado pelo CentOS em algum lugar que possa revelar conclusivamente "agora é hora de pagar pelo ECC"?
Responder1
O que você gostaria que fosse registrado? O CentOS não pode saber que o conteúdo da memória não-ECC foi corrompido, porque não é cognoscível; só pode saber que o conteúdo da memória não faz sentido e entrar em pânico com base em qualquer autoinconsistência que encontrou. Essa inconsistência pode ter surgido de corrupção de RAM, mas também pode ter surgido de um bug do kernel ou de alguma outra causa.
A única maneira de saber definitivamente se a memória foi corrompida é usar uma memória que inclua explicitamente suporte para verificação de tal corrupção; a saber, memória ECC.
Editar: essa é uma pergunta completamente diferente daquela que você fez. Mas minha estratégia seria: executar memtest86+
no hardware, para ver se há algum erro repetível fácil de detectar e ativar o syslog
ging remoto no servidor (como quando o kernel entra em pânico, ele geralmente para de gravar no FS, mas ainda pode apertar uma mensagem de log da NIC), para ver o que será registrado no próximo pânico.
Responder2
A memória ECC tem duas vantagens:
- Está registrado, o que significa que existe um registro antes de outros componentes do chip. Isto supostamente remove a carga elétrica do controlador de memória. Isso se aplica a todos os RDIMMs, não apenas à RAM ECC.
- Ele pode detectar erros e, se não se recuperar deles, pelo menos relatar que eles aconteceram
Diante disso, é realmente muito difícil determinar se você teria se beneficiado da memória RAM ECC sem ter memória RAM ECC. Por definição, você não pode registrar a falha na detecção de um erro e certamente não tem dados sobre se o erro que pode ou não ter acontecido foi resultado de uma falha no controlador de memória.
Dito isto, se você executar o memtest, determinará algumas coisas. Se você não encontrar nenhum erro, você precisa de RAM ECC ou o problema está em outra coisa (portanto, se você descartar absolutamente todas as peças de hardware e software como a causa, você demonstrou a necessidade de RAM ECC). Se você encontrar erros consistentes, é provável que a RAM esteja ruim e precise apenas ser substituída. Se você encontrar erros inconsistentes, a CPU pode estar com defeito ou você pode precisar de RAM ECC. Se você descobrir que o memtest86 trava, o DIMM de ordem mais baixa está com defeito ou a CPU está com defeito ou você precisa de RAM ECC.
Independentemente disso, isso é muito difícil de mostrar definitivamente. A RAM ECC é mais útil em aplicações onde erros invisíveis em cálculos podem causar problemas extremos, ou em aplicações onde a grande quantidade de RAM combinada com outras condições torna os erros estatisticamente prováveis. No entanto, estes critérios em si são confusos e subjectivos, pelo que não existe realmente um critério objectivo para isto.
Responder3
Se em algum lugar, provavelmente seria logado
/var/log/mcelog
(é aqui que ocorrem eventos críticos de CPU em raças RHEL)