Observe available, não free
O Linux utiliza a memória que de outra forma ficaria sem uso como cache do disco, pelo que é normal haver pouca memória livre num servidor saudável. A coluna available é a estimativa do kernel de quanta memória pode ser disponibilizada para novo trabalho sem recorrer a swap. É esse o número a acompanhar. O cálculo exato de used depende da versão da ferramenta, por isso não o compare entre sistemas diferentes.
free -h
grep -E 'MemAvailable|Shmem:|SReclaimable' /proc/meminfoO que pode e não pode ser libertado da cache
A cache de páginas pode normalmente ser libertada quando as aplicações precisam de memória. A memória partilhada e o tmpfs (Shmem) também aparecem na cache, mas não podem simplesmente ser descartados, porque contêm dados que não têm cópia no disco. Uma cache grande com pouca memória available significa, por isso, muitas vezes um tmpfs ou um segmento de memória partilhada de grande dimensão.
df -h -t tmpfs
sudo slabtop -o | head -15Swap em utilização não é automaticamente um problema
Um servidor pode manter páginas raramente utilizadas em swap durante semanas sem consequências negativas. O problema é a movimentação contínua. Observe as colunas si e so do vmstat: valores que se mantêm acima de zero significam que o sistema está a mover ativamente páginas entre RAM e swap, o que é um sinal de falta real de memória.
swapon --show
vmstat 1 5Descubra o que utiliza a memória
Ordene os processos por memória residente. O RSS contabiliza em cada processo as páginas que este partilha com outros processos, pelo que os valores de vários processos não podem ser simplesmente somados. Ferramentas com PSS, como o smem, dão uma soma mais representativa, se estiverem instaladas.
ps -eo pid,user,rss,comm --sort=-rss | head -15Reconheça uma falta real de memória
Os sinais são pouca memória disponível, movimentação constante entre RAM e swap e processos terminados pelo mecanismo out-of-memory killer. Verifique o registo do kernel. Não execute drop_caches para melhorar o aspeto dos números: apenas obriga o servidor a ler novamente do disco e não resolve nada.
sudo journalctl -k --no-pager | grep -iE 'out of memory|oom-kill'Memória no CH-J Server Manager
O System Monitor lê estes valores através de SSH. No Linux, define used como MemTotal − MemFree − Buffers − Cached − SReclaimable e available como a estimativa do kernel. A memória partilhada faz parte de Cached e não pode ser libertada, e as categorias da barra não se sobrepõem. Como a fórmula difere da de algumas versões do free, os números podem não coincidir exatamente. Também mostra swap com o histórico de utilização. A ZFS ARC não é tratada separadamente, pelo que, em servidores com ZFS, conta como memória utilizada.