Como colocar na lista negra um setor RAM incorreto de acordo com a indicação de erro do MemTest86 +?

25

MemTest86 + (a versão incluída no Ubuntu 13.04) diz

Failing address: 002f796c48 -    759.5 MB

O que devo especificar no parâmetro memmap kernel para ignorar essa área?

Eu tentei rodar memtester 770MB e ele diz que tudo está OK, então não parece que as indicações do MemTest significam um erro no 759.5th MB desde o início.

Como interpretar essa indicação de MemTest para configurar memmap ?

Eu não tenho dinheiro para comprar novas RAM agora e o erro parece ser único, então espero que eu possa substituí-lo.

    
por Ivan 08.05.2013 / 03:26

2 respostas

24

memmap

Há este tutorial intitulado: Como a memória ruim, que discute a desativação da memória por meio do kernel usando o argumento memmap para o kernel. De acordo com o howto você tem 2 opções quando se trata de memmap :

  • Desativar tudo após a má memória - (mem=###M option)
  • Desativar apenas a memória em torno da memória incorreta - (memmap=#M$###M option)

Com a primeira opção, se o memtest relatar que há memória ruim em 600M, você poderá desabilitar a RAM desse ponto até o final da RAM com isto:

 mem=595M

Se houver RAM ruim no 802M e 807M, você pode desabilitar uma seção de 10M de RAM começando em 800M desta forma:

memmap=10M$800M

OBSERVAÇÃO: Isso colocará a lista negra em 10M após o endereço base de 800M. Você deve executar memtest86+ posteriormente para confirmar se esse argumento está correto.

BadRAM

Existe um patch disponível para o Ubuntu chamado BadRam. Está muito bem aqui neste post intitulado: BadRAM no site da comunidade Ubuntu.

Depois de aplicar o patch ao kernel usando os detalhes da página, você faz modificações na configuração do Grub2:

trecho desse site para o Grub2

The GRUB2 config file in Natty has a line for configuring kernel bad ram exclusions. So, I will assume that is the preferred way of mapping out a section of memory that is showing errors. The line I set was

GRUB_BADRAM="0x7DDF0000,0xffffc000"

The suggested way on every web site I could find was to set this was to run memtest86 and let it show you the BadRAM settings. memtest86 gave me a page of stuff I would have had to enter. I could see that all the addresses were in one 16K block, so I just wanted to map that 16K block out of action. Here is how I generated the correct entry.

The first parameter is easy. That is the base address of the bad memory. In my case, I could see that all the bad addresses were greater than 0x7DDF0000 and less than 0x7DDF4000. So, I took the beginning of the 16K block as my starting address.

The second parameter is a mask. You put 1s where the address range you want shares the same values and 0s where it will vary. This means you need to pick your address range such that only the low order bits vary. Looking at my address, the first part of the mask is easy. You want to start with 0xffff. For the next nibble, I will explain with bit maps. I want to range from 0000 to 0011. So, the mask for badram would be 1100 or a hex c. The last 3 nibbles need to be all 0s in the mask, since we want the entire range mapped out. So, we get a total result of 0xffffc000.

After setting this line in /etc/default/grub, I ran sudo update-grub and rebooted and my bad memory was no longer being used. No kernel patches are needed to map out bad memory using this method.

Acompanhamento # 1

Olhando pela página da Wikipedia para o memtest86 +, ele diz o seguinte:

trecho da página de wikipedia do Memtest86

Starting from Memtest86 2.3 and Memtest86+ 1.60, the program can output a list of bad RAM regions in the format expected by the BadRAM patch for the Linux kernel; using this information, a Linux system can reliably use a RAM module even if it has a few bad bits. Grub2 is able to supply this same information to an unpatched kernel, negating the need for the BadRAM patch.

Também me deparei com esta página do Gentoo que especificou o memmap=... usando um endereço hexadecimal, para que você possa especificá-lo assim:

memmap=5M$0x2f796c48

O 5M é apenas um palpite, obviamente, você poderia ajustá-lo para baixo ou para cima, dependendo da quantidade de RAM em torno da região que você deseja / precisa omitir.

Por fim, você também pode especificar o tamanho em hexadecimal:

memmap=0x10000$0x2f796c48

Ignora 64 KB começando no endereço 0x2f796c48.

Referências

por 17.05.2013 / 14:30
12

Memtest86 + (usei 4.20) pode gerar um formato de badram diretamente.

  1. Pressione 'c' para acessar o diálogo de configuração

  2. Emseguida,"4" para "Modo de relatório de erros"

  3. Emseguida,"3" para "Padrões BadRAM"

A saída mudará de uma lista de falhas de teste individuais para uma série de badram = linhas, cada uma contendo mais um novo setor defeituoso. Como as linhas acrescentam e unem segmentos adjacentes, você pode executar o teste sem cabeça durante a noite e usar a linha final impressa (embora, se você tiver um dimm realmente ruim, o formato menos preciso de "5 megas ao redor deste ponto" será um pouco mais curto ).

Resultado final:

    
por 15.08.2013 / 01:09