Existem algumas razões para o comportamento que você está vendo. Primeiro:
-
ps aux% é baseado no residente:
%mem %MEM ratio of the process's resident set size to the physical memory on the machine, expressed as a percentage. (alias pmem).
O relatório de -
free inclui coisas diferentes de Memória ativa (residente /% MEM de ps) ao exibir valores
A essência disso é que, quando você olha de graça, está vendo o VSZ e outras alocações sendo adicionadas ao exibir o total. Quando você olha para o% em ps, você está vendo apenas uma peça do quebra-cabeça.
Para verificar isso, você pode analisar duas coisas: executar primeiro:
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
www 18442 0.0 0.0 519156 65460 ? Sl Sep08 1:47 httpd
Você deve ver que o VSZ será consideravelmente maior que o RSS e, se você fizer os cálculos, provavelmente renderia um% muito maior, se incluído.
Em segundo lugar, você pode verificar a quantidade real de memória em uso olhando diretamente para / proc / meminfo:
# cat /proc/meminfo
MemTotal: 99197880 kB
MemFree: 72697684 kB
Buffers: 13813488 kB
Cached: 4841820 kB
SwapCached: 196 kB
Active: 4662952 kB
...
Você notará que a coluna 'usada' do livre é mais do que apenas Ativo (aproximadamente RSS do ps).
A verdadeira explicação de por que isso é realmente é coberto em uma coleção de vários livros que são realmente uma ótima leitura se você está tentando adormecer, mas você pode obter algum conhecimento básico de alguns artigos:
Meminfo: link
ps / virtual e VSZ explicados: link