Por que o MemTotal em / proc / meminfo é alterado?

3

Eu monitore o valor do arquivo /proc/meminfo , ou seja, o número MemTotal: . Ele muda se um módulo de ram se rompe, aproximadamente pelo tamanho do módulo de memória - isso é óbvio.

Eu conheço a definição para o campo da documentação do kernel:

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

O dmesg também lista os dados do kernel. Que outras ações específicas alteram o número MemTotal se omitir a falha de hardware do módulo de memória?

    
por Matej Kovac 07.02.2014 / 13:06

3 respostas

1

Eu não estava confortável em ter um bug no kernel ou em um módulo, então eu investiguei mais e descobri ... que MemTotal pode mudar regularmente, para baixo ou para cima. Não é uma constante e este valor é definitivamente modificado pelo código do kernel em muitos lugares, sob várias circunstâncias.

Por exemplo O virtio_balloon kmod pode diminuir MemTotal , bem como aumente novamente. Então, é claro, mm / memory_hotplug.c está exportando [add|remove]_memory , ambos são usados por muitos drivers também.

    
por 14.02.2014 / 08:12
3

Isso nunca deve mudar. Pode ser uma indicação de alguns locais defeituosos dentro da RAM. Você pode diagnosticar sua RAM usando Memtest86 + .

Além disso, a única outra maneira que esse número mudaria poderia ser se você estivesse analisando um guest de máquina virtual. Talvez o host em que o convidado da VM esteja sendo executado esteja ajustando a RAM alocada para o convidado.

Editar # 1

Eu descobri este post no fórum que discute o possível vazamento de memória pelos módulos do Kernel, o que poderia levar à alteração do MemTotal.

trecho de: Re: Como você determina a quantidade de memória do sistema ?

On 7/30/08, Bill McGonigle wrote:

On Jul 30, 2008, at 10:03, Thomas Charron wrote:

MemTotal can change. MemTotal doesn't show memory utilized by the kernel binaries themselves in memory, however there are situations where modules can leak memory which also removes from MemTotal. I don't recall the specifics of this happening, but I do know what Paul is talking about now. Well, that's only a bug if you define MemTotal as the physical memory present in a machine. If you view it as total memory available to the kernel, it's performing correctly, right?

  
     

Sim, e o 'bug' é quando esse número cai, isso significa   algumas coisas vazando, também conhecido como "kernel ruim". Pelo menos potencialmente "ruim"   (leia potencialmente bugs) módulos do kernel.

    
por 07.02.2014 / 15:15
0

MemTotal pode mudar. O MemTotal não mostra a memória utilizada pelos próprios binários do kernel na memória, no entanto há situações em que os módulos podem vazar memória que também remove do MemTotal. Não me lembro das especificidades disso, mas sei do que Paulo está falando agora. Bem, isso é apenas um bug se você definir MemTotal como a memória física presente em uma máquina. Se você o visualizar como memória total disponível para o kernel, ele está funcionando corretamente, certo?

    
por 14.02.2014 / 10:24