Por que o valor em / proc / meminfo não parece mapear exatamente para a RAM do sistema?

6

Os valores em / proc / meminfo para MemTotal não fazem sentido. Como um ser humano, olhando para ele, parece corresponder aproximadamente à RAM instalada, mas para usá-lo para exibir a RAM instalada a partir de um utilitário automatizado, ele parece ser inexato e inconsistente.

Para um sistema com 1G de RAM, esperaria que a linha MemTotal tivesse um valor de 1048576 - 1024 * 1024. Mas, em vez disso, estou vendo 1029392. Em outra caixa 4G, estou vendo 3870172, que não é um múltiplo de 1024, e não está nem perto de 1029392 * 4. Em uma caixa de 8G, recebo 8128204, que novamente parece não ter correlação com os outros valores, nem é um múltiplo de 1024.

Estou tentando usar essas informações para relatar a RAM em uma página da web de status. Minha solução é simplesmente "arredondá-la" para o múltiplo de 1G mais próximo, mas gostaria de entender por que esses valores parecem inconsistentes e não correspondem às minhas expectativas.

Alguém pode me informar do que estou sentindo falta aqui?

EDIT: Para expandir a resposta aceita abaixo ...

A referência pode ser encontrada aqui .

Também é interessante para mim a partir dessa página, o que explica a inconsistência, é este:

meminfo:

Provides information about distribution and utilization of memory. This varies by architecture and compile options. ...

    
por Eric Asberry 07.01.2011 / 21:26

1 resposta

13

De Documentation/filesystems/proc.txt :

MemTotal: Total usable ram (i.e. physical ram minus a few reserved
          bits and the kernel binary code)

Então lá vai você.

Adendo:

dmesg|grep Memory: fornecerá um pouco mais:

$ dmesg|grep Memory:
Memory: 3934184k/5177344k available (4434k kernel code, 1091560k absent, 151600k reserved, 7433k data, 920k init)

Adendo II:

Também vale a pena acrescentar que praticamente tudo em / proc tem pelo menos uma documentação superficial nesse arquivo, então é uma boa primeira parada sempre que você tiver uma pergunta parecida.

    
por 07.01.2011 / 21:36