Uso de memória: grande diferença em `free -m` e htop, bem como cálculo da memória usada em htop em comparação com /proc/meminfo

Uso de memória: grande diferença em `free -m` e htop, bem como cálculo da memória usada em htop em comparação com /proc/meminfo

Estou ciente desta questãohttps://stackoverflow.com/questions/41224738/how-to-calculate-system-memory-usage-from-proc-meminfo-like-htop A resposta parece desatualizada em relação ao uso de memória e esta questão parece mais complexa.

htop definitivamente agora não calcula MemTotal - MemFreemais a memória total. Láhttps://access.redhat.com/solutions/406773Encontrei uma solução que poderia caber. De acordo com isso, seria calculado via, MemTotal - MemFree - Buffers - Cached - Slabmas isso leva a um uso de memória muito baixo em comparação com o htop.

O uso de memória no htop parece estar bastante relacionado, como free -mmostra na célulaMem: used

Mas se você criar um ramdisk, as coisas mudam bastante:

mkdir mnt
sudo mount -t tmpfs none mnt
cd mnt 
sudo dd if=/dev/urandom of=test bs=32M status=progress

Acima irá criar um disco RAM com 50% do tamanho da memória instalada e preencher este disco RAM.

htop agora mostra um pouco mais da metade da RAM física usada, no caso de teste 3,82 GB de 7,44 GB usados. No entanto, free -mainda mostra apenas 104 MB usados ​​em comparação com 102 MB antes de criar e preencher o disco RAM. Portanto, 104 MB usados ​​são definitivamente errados, porque metade da memória física do sistema não pode mais estar disponível, pois é usada pelo disco RAM.

O /proc/meminfotamanho do disco RAM parece estar incluído em Cached, portanto, para calcular a memória em cache usada, não deve ser subtraída.

Então, por que free -m relata um valor de memória livre tão errado? Por padrão, existem vários tmpfs em distribuições como Debian ou Ubuntu, o que significa que free -m dá uma impressão errada de memória livre.

O cálculo da memória do htop parece bastante razoável. Então, como o valor htop pode ser calculado /proc/meminfo?

informação relacionada