Top, que é a figura na coluna %MEM
, está contando a quantidade de RSS
de memória (Tamanho do Segmento Residente, basicamente páginas fisicamente na memória que possuem dados reais sobre elas) como uma porcentagem da memória física total em sua máquina ou VPS.
Por outro lado, free está contando apenas isso, a quantidade de páginas de memória física que não têm dados nelas, e não foram atribuídas a buffers, cache ou kernel. Em um sistema operacional semelhante ao Unix, o sistema operacional tenta manter esse número o mais baixo possível usando páginas livres para o cache de disco. A única vez que você provavelmente terá um alto valor de memória livre é logo após a inicialização de sua máquina ou se você encerrar um programa que estava consumindo uma grande quantidade de memória física.
Este uso de memória é normal? A resposta curta é sim. É comum que os programas Unix aloquem (ou seja, solicitam ao SO) significativamente mais memória do que eles usariam. Se você olhar para a coluna VSS
, para os processos listados, o total é superior a 463mb. Isso é porque
- Grande parte da memória contabilizada em cada processo será fisicamente mapeada para a mesma biblioteca, digamos
glibc
- Em geral, o sistema operacional compromete a memória com o aplicativo, com base no fato de que a maioria dos aplicativos nunca coleta o que eles pediram.
Descobrir o uso da memória do processo é mais uma arte do que uma IMHO científica, veja as discussões no link . Meu conselho é ficar de olho no iostat -xm
e garantir que sua máquina não esteja trocando muito.