Este é um problema de arredondamento. Por exemplo, em uma das minhas máquinas:
devtest:~# free -m
total used free shared buffers cached
Mem: 7881 2780 5100 0 26 2417
-/+ buffers/cache: 336 7545
Swap: 7632 0 7632
devtest:~# free -g
total used free shared buffers cached
Mem: 7 2 4 0 0 2
-/+ buffers/cache: 0 7
Swap: 7 0 7
7.881 MiB é na verdade ~ 7.70 GiB, mas free -g
é arredondado para 7 em vez de 8. Da mesma forma, há ~ 4.98 GiB de memória livre, mas free -g
está arredondando isso para 4 não para 5.
A memória total reportada por free
não inclui memória que o kernel não pode acessar (no caso do servidor acima devido a limitações do chipset não permitindo que o último pedaço do 8Gb seja usado, em alguns casos o vídeo de uma máquina cartão pode reivindicar alguma RAM se não tiver o seu próprio) nem relatar o pequeno pedaço de RAM no qual o kernel é desempacotado na inicialização (assim em uma das VMs menores no host acima que tem 128M alocados, liberte apenas os relatórios 126,616 K, 123 M (onde na verdade é mais como 123,6 M) ou 0 G) - assim você nunca verá o mesmo valor que sua RAM total física em free -g
.
No seu caso free
está vendo 1.982.7 M ou 1.94 G, que é arredondado para 1.