TL; DR 1
Seu servidor está dentro de algum tipo de contêiner virtuozzo / openvz / virtualization-du-jour . Tentar entender o uso da memória está inclinado nos moinhos de vento.
TL; DR 2
Linux comeu sua RAM! Mas tudo bem, isso faz com todos.
A Longa História
Vamos dividir!
Na Mem:
seção, temos:
$n total
: a quantidade de RAM física em sua máquina
$n used
: quanta memória está sendo consumida pelo Linux, não apenas a soma dos processos.
$n free
: Quanta RAM não está sendo consumida pelo Linux. Isso não leva em consideração que a memória armazenada em cache e em buffer é essencialmente "livre".
$n buffers
: espaço no buffer é onde os blocos de E / S do disco que foram lidos ou aguardando uma gravação são armazenados. Um buffer é uma representação de RAM de um único bloco de disco.
Na Swap:
seção, temos:
$n total
: Auto-explicativo. Quantidade de espaço em disco disponível para troca de páginas.
$n used
: Auto-explicativo. Quanto espaço de troca de disco é usado.
$n free
: Herp Derp.
$n cache
: Intimamente relacionado aos buffers acima. Na verdade, faz parte do cache da página e não possui espaço no disco físico. Não se preocupe com os detalhes desta conversa.
A parte interessante vem quando você corre free -m
. Você verá três linhas e todos os números se correlacionarão com o topo. Vou dar meu próprio PC como exemplo:
total used free shared buffers cached
Mem: 8070 7747 323 0 253 5713
-/+ buffers/cache: 1780 6290
Swap: 5055 0 5055
A linha Mem mostra a RAM total em megabytes ( $n total
na parte superior), quanto é usado ( $n used
na parte superior), quanto é gratuito ( $n free
na parte superior), quanto é compartilhado (ignore isso) e agora vem a parte boa! As colunas buffers
e estão correlacionadas a, previsivelmente, e . Mas dê uma olhada na segunda linha que começa com isso . A matemática mostra que a quantidade usada é realmente (total) - ((buffers usados) - armazenada em cache). Livre é (total) - (theNewUsed).cached
free -m
$n buffers
$n cache
free -m
-/+ buffers/cache:
O que tudo isso significa? Isso significa que o Linux comeu sua RAM! A história resumida é que o kernel do Linux consome RAM, pois está disponível para uso em cache de disco. Não há nada que você possa fazer a menos que queira compilar um kernel personalizado. Dica profissional: não.
A RAM está realmente lá e livre para os processos usarem à vontade. É isso que significa a -/+ buffers/cache:
linha free -m
. No entanto, você está dentro de um contêiner de virtualização sem viseira, o que torna as coisas um pouco estranhas. Você simplesmente não pode fazer um balanço da sua memória com precisão de bytes neste momento. No entanto, você não está vendo nenhum comportamento terrivelmente incomum.
Mantenha a calma e continue. Além disso, obtenha um servidor físico (a menos que você goste de estatísticas de memória que se parecem com o Kreskin é o seu SysAdmin).