Por padrão, free
mostra também a memória usada pelo cache e pelos buffers
Na saída free -m
, como já foi dito nos comentários, você precisa olhar para a linha
-/+ buffers/cache: 1106 2842
para ver exatamente a quantidade de memória usada pelos aplicativos, kernel e módulos. Nesse caso, você está usando 1106 MB, o que representa quase 28% da memória total. O resto é tomado pelos buffers e cache habituais que ajudam o kernel a acessar os arquivos mais rapidamente.
A saída ps
mostra a memória usada pelo processo
Na saída ps
, vejo que ainda há toda a área de trabalho gráfica em execução, com muitos componentes em execução. Eles levam cerca de 13% da memória.
E os módulos ...
O delta entre o cálculo ps
e o free
é constituído da memória do kernel e dos módulos carregados.
Como a coluna tamanho da saída lsmod
exibe apenas o tamanho do módulo no sistema de arquivos (portanto, o arquivo syse do arquivo .ko a partir do qual este módulo é carregado) não é confiável medir o memória usada por eles.
Uma abordagem mais confiável para medir a memória usada pelos módulos é usar os utilitários slabtop
(instalados a partir do pacote procps .
Veja também o conteúdo de /proc/meminfo
, ele fornece o uso total da memória Slab, a memória usada para alocar memória de forma eficiente aos objetos do kernel. (Veja Wikipedia para mais detalhes sobre Slab).
Em conclusão
O uso da memória é um domínio complexo, e você precisará de mais de uma ferramenta para ver em detalhes qual parte da memória é usada por quê. free
, ps
, slabtop
, /proc/meminfo
conteúdo, top
, vmstat
, htop
, ... todos eles podem trazer uma informação útil para construir a imagem completa em sua memória particular uso.