Como o erro de memória de um único bit afeta o Linux?

4

Estou reconstruindo um sistema AMD Athlon 5000 de três anos que possui uma placa-mãe "ASRock NF7G-FullHD" com 4 slots de memória, rotulados como "DDR2 800", com capacidade total de RAM de 8GB. Além de 550W PS e disco de 500GB eu comprei um "par combinado" de 2 ea. 2GB DIMM s que, infelizmente, possuem erros de bit único persistentes em vários locais (veja a figura).

Qual seria o efeito da execução do Linux neste sistema com essa memória? Ou seja, , qual é a probabilidade de instabilidade, erro não detectado ou baixo desempenho? Haverá falhas do sistema operacional, segfaults, falhas de aplicativos diversos ou o que? Existe uma maneira de mapear ou desabilitar os pedaços ruins de RAM?

Note que os 4 slots de memória são rotulados como DDRII_1,2,3,4; 1 e 2 são amarelos, 3 e 4 são laranja. A foto acima do Memtest86 foi tirada quando os slots foram preenchidos (novo, antigo, novo, antigo). Os erros também ocorrem em endereços semelhantes com a ordem de preenchimento (antiga, antiga, nova, nova), com a mesma taxa de acesso à memória (cerca de 2,9 GB / s) que na imagem. Preenchido (antigo, antigo, -, -) ou (antigo, -, antigo, -) ou (novo, -, novo, -) nenhum erro ocorreu em poucas horas de teste, mas (novo, novo, -, -) por algum motivo, não entrou nem entrou no BIOS e o botão reset pareceu não ter efeito e não havia sinal de vídeo. Com 3 slots preenchidos, por exemplo. (new1, old, new0, -) ocorreu um erro (localizado no primeiro GB de RAM) em 1,5 horas de teste; com (old, old, new0, -), sem erros em 2 horas de teste. Um problema de desempenho com configurações de 6 GB é a taxa de acesso à memória de apenas 1,7 GB / s.

Resumo da pergunta: Qual seria o efeito de executar o Linux neste sistema com memória sujeita a alguns erros de bit único? Existe alguma correção além de substituir a RAM?

    
por James Waldby - jwpat7 19.11.2011 / 21:04

4 respostas

8
  1. A taxa de acesso à memória é menor com apenas 3 chips, já que a memória de dois canais deve sempre ser instalada em pares.

  2. Erros de bit único podem fazer com que praticamente tudo aconteça. Qual a probabilidade de isso depender de quão ruim sua memória passou, mas não é uma boa ideia aproveitar essas chances. Instabilidade do sistema é o que você deve esperar. Você também pode armazenar um arquivo crítico do sistema (ou qualquer outro arquivo que seja importante para você) nesta parte da memória, modificá-lo e sobrescrever o arquivo original. Portanto, um erro de bit único pode atrapalhar todo o sistema operacional.

  3. Provavelmente, apenas um dos cartões de memória está com defeito (provavelmente novo1). A memória do PYG vem com uma garantia vitalícia, então você pode tentar obter uma garantia. Eu ouvi coisas muito ruins sobre a memória e atendimento ao cliente do PYG, mas não tenho certeza.

por 19.11.2011 / 21:43
5

Como afirmado, um erro de memória de um único bit pode fazer com que quase qualquer coisa dê errado, ou você pode nunca perceber.

Eu tinha um cartão de memória ruim antes e o ponto ruim na RAM significava que o Windows às vezes funcionava, mas se corrompia regularmente. Você nunca pode prever o que será alocado em qualquer ponto de RAM em um sistema (devido à maneira como os SOs alocam memória) e enquanto você pode ter sorte e só ter que quebrar algum programa sem importância ou corromper um gráfico, há uma boa chance de que ele vai fazer muito pior e você está arriscando seus dados usando um stick ruim de RAM.

O Linux tem suporte para BadMem que, se bem me lembro, pode significar que você pode "mapear" o bloco ruim de memória . Eu não consegui descobrir se ele suporta o kernel mais recente para ver se é de alguma utilidade para você.

Meu conselho é o seguinte: no curto prazo, prepare-se para a perda de dados e instabilidade geral do sistema, a longo prazo, você deve descobrir qual pau está com defeito e substituí-lo.

    
por 19.11.2011 / 22:04
2

Para poder executar programas, um computador busca instruções sobre o que fazer da memória. (os programas são carregados na memória). As instruções são apenas seqüências numéricas e é a linguagem dos computadores.

Vamos construir uma linguagem simples onde 1 = cópia 3 = de, 4 = para

1 (cópia), 50,3 (de), 100,4 (a), 200;

Assim, a seqüência numérica 1,50,3,100,4,200 pode, para o computador, copiar 50 bytes de dados da memória 100 para o local de memória 200. Isso é o mesmo que mover 50 meias de uma gaveta para outra.

Agora, se a memória estiver com defeito e houver um único erro de bit, um número pode, por exemplo, mudar de 1 para 129. Portanto, supondo que qualquer número na sequência acima possa ser alterado, você poderá obter muitos erros interessantes. Se 50 for alterado para 35 ou 188, ou seja o que for, é muito fácil entender que a quantidade de dados a serem copiados será incorreta e possivelmente poderá sobrescrever outros dados (que podem ser instruções) na memória. se 1 for alterado para 5, o computador pode nem mesmo entender que é necessário copiar qualquer coisa. Então, como demonstrado, um erro de bit único pode levar não apenas a uma única falha, mas possivelmente a outros erros causados pelo primeiro erro também.

O Linux (ou qualquer outro sistema operativo) é basicamente o mesmo que o resto dos programas que são executados no seu computador: uma sequência de números que informa ao computador o que fazer. Se esta sequência ficar corrompida, os programas não farão com que o computador faça o que foi planejado e, portanto, você poderá ter todos os tipos de problemas.

Lembre-se também de que música, vídeo ou imagens também são apenas uma seqüência de números, então o mesmo princípio também é aplicado. Vale a pena acrescentar que, dependendo do seu arquivo, uma corrupção pode não ser perceptível (por exemplo, um pixel ruim em uma imagem), mas isso não significa que o arquivo está ok. Pode até haver um erro de digitação no texto que você lê em uma página da Web se esse caractere específico estiver armazenado em um local de memória ruim.

Existem chips ram projetados para recuperar erros de bit único e que podem detectar erros de dois bits (ECC ram).

Espero que isso explique por que qualquer sistema operacional não funcionará se a memória que contém seus dados e / ou instruções estiver corrompida. Sua maneira mais segura de resolver isso é substituir o carneiro quebrado. Enquanto isso, você pode querer mapear a área de memória ruim usando o parâmetro do kernel memmap (o seguinte é copiado de uma resposta que recebi em outra pergunta).

 memmap=nn[KMG]$ss[KMG]
            [KNL,ACPI] Mark specific memory as reserved.
            Region of memory to be used, from ss to ss+nn.
            Example: Exclude memory from 0x18690000-0x1869ffff
                     memmap=64K$0x18690000
                     or
                     memmap=0x10000$0x18690000
    
por 11.01.2012 / 22:12
2

Eu tive esse mesmo problema, mas achei as respostas disponíveis confusas e incompletas, então montei um guia passo-a-passo, assumindo o mínimo de conhecimento possível.

  1. Execute o Memtest86 + na saída “Badram” (de preferência de um meio externo inicializável). Quando o Memtest86 + for iniciado, digite:
  2. “c” (“configuração”), então
  3. “4” (“Modo Relatório de Erros”), então
  4. “3” (“Bad RAM Patterns”), então
  5. “0” (“Continuar”).
  6. Copie a saída que segue as linhas que começam com "badram=".
  7. Abra um terminal (linha de comando).
  8. Altere para o diretório em que o arquivo "grub" está localizado. Por exemplo, "cd / etc / default".
  9. Com privilégios de "root", use um editor de texto para abrir o arquivo "grub" (se você não estiver logado como "root", use "sudo". Será solicitada a senha "root".): “Sudo nano grub” (Este exemplo muda o usuário para “root” e abre o arquivo “grub” com o editor de texto “nano”).
  10. Encontre a seção que descreve o memtest.
  11. Descomente a última linha (exclua o caractere especial no início da linha, como “#”, “& gt ;,” ou “!”). Isso o torna ativo (por exemplo, “# GRUB_BADRAM =” torna-se “GRUB_BADRAM =”.).
  12. Substitua os endereços de exemplo (seguindo “GRUB_BADRAM =”) pela saída “badram =” que você copiou do Memtest86 + (por exemplo, “0x98f548a0,0xfffffffc”).
  13. Salve (ou "escreva") suas alterações.
  14. No terminal (linha de comando), atualize o arquivo “grub.cfg”, digitando “sudo update-grub”.
  15. Reinicialize.
por 22.11.2014 / 19:33