Esta questão é abordada aqui em grandes detalhes.
Como você mede o uso de memória de um aplicativo ou processo no Linux?
No artigo do blog Noções básicas sobre o uso da memória no Linux , ps
não é uma ferramenta precisa a ser usada para esse objetivo.
Por que
ps
está "errado"Dependendo de como você olha para ele,
ps
não está relatando o uso real da memória dos processos. O que realmente está fazendo é mostrar quanta memória real cada processo consumiria se fosse o único processo em execução . Obviamente, uma máquina Linux típica possui várias dezenas de processos em execução a qualquer momento, o que significa que os números VSZ e RSS relatados porps
estão quase definitivamente errados .
ps
, nem mostra isso - mostra números de memória virtual e residente, onde virtual é a quantidade máxima de memória que o processo poderia teoricamente usá-lo, pois era o único processo (nunca), usado em todas as páginas alocadas (nunca acontece) e não mapeou ou remove o mapeamento de nenhuma página (improvável). Enquanto residente mostra quanta memória virtual está mapeada para física no momento. Normalmente, virt > usage > res
porém, em um sistema de 64 bits virt ~= res*10
, é uma gama muito ampla.