CentOS 6.3 Detecção de RAM X86_64

2

Eu tenho uma máquina com 8GB ram (BIOS vê-lo, então minha placa-mãe e CPU suporta isso), e eu instalei o CentOS 6.3 nele. Quando ele inicia, ele só vê 3,1 GB.

uname says: 2.6.32-279.1.1.el6.x86_64 #1 SMP

BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000cf65f000 (usable)
BIOS-e820: 00000000cf65f000 - 00000000cf6e8000 (ACPI NVS)
BIOS-e820: 00000000cf6e8000 - 00000000cf6ec000 (usable)
BIOS-e820: 00000000cf6ec000 - 00000000cf6ff000 (ACPI data)
BIOS-e820: 00000000cf6ff000 - 00000000cf700000 (usable)

dmesg | grep -i memory diz:
initial memory mapped : 0 - 20000000
init_memory_mapping: 0000000000000000-00000000cf700000
Reserving 129MB of memory at 48MB for crashkernel (System RAM: 3319MB)
PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000
PM: Registered nosave memory: 00000000000e0000 - 0000000000100000
PM: Registered nosave memory: 00000000cf65f000 - 00000000cf6e8000
PM: Registered nosave memory: 00000000cf6ec000 - 00000000cf6ff000
Memory: 3184828k/3398656k available (5152k kernel code, 1016k absent, 212812k reserved, 7166k data, 1260k init)
please try 'cgroup_disable=memory' option if you don't want memory cgroups
Initializing cgroup subsys memory
Freeing initrd memory: 16136k freed
Non-volatile memory driver v1.3
agpgart-intel 0000:00:00.0: detected 8192K stolen memory
crash memory driver: version 1.1
Freeing unused kernel memory: 1260k freed
Freeing unused kernel memory: 972k freed
Freeing unused kernel memory: 1732k freed

Atualização: Memtest ver todos os 8GB, e dmidecode -t 17 | grep Size também.
Mas free -m ainda vê apenas 3,1 GB.

Pergunta: Como posso reparar / modificar o sistema, para ver todos os 8GB de RAM?

Obrigado antecipadamente!

    
por Peter 16.07.2012 / 14:56

4 respostas

3

Parece que você está executando um kernel de 64 bits. Você não precisa instalar um kernel PAE.

Originalmente tive uma resposta aqui explicando como instalar o kernel do PAE porque de início eu perdi o fato de que você tem um kernel de 64 bits.

A minha interpretação (muito limitada) do mapa de RAM física fornecido pela BIOS é que a sua BIOS está apenas a dizer ao seu SO cerca de 3480223744 bits endereçáveis, ou seja, cerca de 3,2 GB. Se você subtrair os bits reservados, ficamos com 3,1 GB.

Algumas pessoas relataram a leitura do seguinte em sua saída do dmesg:
WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 13040MB of RAM
Você poderia executar dmesg | grep -i memory e procurar uma mensagem de aviso semelhante?

    
por 16.07.2012 / 15:05
2

Entre na configuração do BIOS e ative a opção Remapeamento de memória.

    
por 16.07.2012 / 16:32
0

Eu achei que minha sugestão anterior [que foi convertida em um comentário] era bem clara, mas obviamente não.

Tente # 2: você pode ligar 64-bit para o CPU on-off com algumas CPUs e alguns BIOSs. A BIOS normalmente não se importa (verifique) o que a CPU está configurada quando reporta RAM durante o BOOT e assim mostrará o que está fisicamente lá. Mas o sistema operacional é diferente. O SO irá verificar se há uma CPU ativada de 64 bits. Se ele não vir um (porque a CPU de 64 bits está desativada no BIOS), você obterá um Mapa de Memória de 32 bits (4Gb-máx). Nessa situação, qualquer RAM física acima do limite de 32 bits de 4 Gb simplesmente não estará disponível porque o sistema operacional não pode resolvê-lo. (aka: não pode encontrá-lo.)

Um endereço de memória em um mapa de memória é como um número de telefone em um catálogo telefônico. Se a agenda telefônica estiver cheia e você tiver muito mais telefones do que números, todos esses telefones extras não terão números de telefone - portanto, você não poderá ligar para eles, mesmo que funcionem bem. (Essa é a mesma ideia que "não pode endereçar" significa "Não é possível endereçar basicamente significa" não é possível atribuir um número de ID para ".)

.

    
por 17.07.2012 / 07:53
0

É um tiro no escuro, mas veja os parâmetros de inicialização do kernel, que podem ser configurados para dizer ao kernel para reconhecer apenas uma quantidade de memória definida.

cat /proc/cmdline

Procure por configurações relacionadas à memória. mem= seria um vencedor bem claro, mas há outros. Confira o link

Veja também a configuração do gerenciador de inicialização. Ele pode especificar a mesma coisa, mas cobrir as possibilidades de virtualização (como se esse sistema fosse realmente um dom0 ou alguma outra dificuldade). No RHEL com o GRUB, tente: cat /boot/grub/grub.conf

    
por 21.10.2013 / 01:28

Tags