A memória informada por free não se reconcilia com a memória física

2

Eu tenho um desktop de 64 bits, rodando 32bit do Debian - com memória de 2G.

user@box:~/$ head -n 1 /proc/meminfo MemTotal: 2030324 kB

Mas quando peço para relatar sobre a memória, vejo:

user@box:~$ free -g
             total       used       free     shared    buffers     cached
Mem:             1          1          0          0          0          1
-/+ buffers/cache:          0          1
Swap:            2          0          2

Estou confuso sobre o porquê do relatório livre apenas da memória 1G total quando a memória física é 2G. Alguém poderia explicar como reconciliar corretamente a saída do livre com a especificação da minha máquina?

    
por Joel 08.02.2010 / 10:43

1 resposta

5

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.

    
por 08.02.2010 / 12:13

Tags