Memória não usada mais, mas ainda alocada

3

Eu tenho algo meio estranho acontecendo com a memória.

Eu tenho servidores Ubuntu 14.04 com Zimbra 8.6 com kernel (para este) 3.13.0-37-generic. Mas eu já vi o problema com outros kernels.

A memória e a troca estão cheias:

$ free
             total       used       free     shared    buffers     cached
Mem:       6112624    5991208     121416         88       4752      79224
-/+ buffers/cache:    5907232     205392
Swap:      3905532    3624768     280764

Eu pensei que Zimbra estava comendo toda a minha memória, mas, estranhamente, não parece:

# ps -A --sort -rss -o comm,pmem | head -n 11
COMMAND         %MEM
java            10.6
clamd            4.7
mysqld           3.0
java             2.0
slapd            1.2
/opt/zimbra/ama  1.1
/opt/zimbra/ama  1.0
/opt/zimbra/ama  1.0
/opt/zimbra/ama  1.0
/opt/zimbra/ama  0.9

Todo o meu processo ocupa metade da memória. Meus buffers e cache não levam quase nada.

Quando eu paro o Zimbra, ainda há 3.5Gb:

# ps -A --sort -rss -o comm,pmem | head -n 12
COMMAND         %MEM
bash             0.0
bash             0.0
bash             0.0
sudo             0.0
rsyslogd         0.0
http             0.0
http             0.0
htop             0.0
init             0.0
ps               0.0

Após uma reinicialização, menos de 200 Mb foram usados.

O servidor permaneceu ativo por 139 dias e o uso da memória foi aumentando pouco a pouco a cada dia.

Minha pergunta é então: o que poderia ter levado toda a memória?

EDIT1, adicione algumas informações:

$ ls -l /dev/shm
lrwxrwxrwx 1 root root 8 mai    2 12:46 /dev/shm -> /run/shm

$ ipcs 
------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages    


$ df 
Filesystem                  1K-blocks     Used Available Use% Mounted on
udev                 3051744         4    3051740   1% /dev
tmpfs                 611260       496     610764   1% /run
/dev/sda2           14287344   2765996   10772548  21% /
none                       4         0          4   0% /sys/fs/cgroup
none                    5120         0       5120   0% /run/lock
none                 3056288         0    3056288   0% /run/shm
none                  102400         0     102400   0% /run/user

Após a reinicialização, (o Zimbra iniciou):

$ free
             total       used       free     shared    buffers     cached
Mem:       6112576    5712908     399668        832     237892    1829424
-/+ buffers/cache:    3645592    2466984
Swap:      3905532          0    3905532

Alguns gráficos da RAM (reiniciei o servidor por volta das 12:30):

Uso de RAM

O segundo gráfico mostra os resultados de:

ps aux |awk '{s+=$4} END {print s}'

E terceiro, resultados de:

smem -tw |grep -v Area | sed 's/ //;s/ //'
ouzmoutous
fonte
Alguma memória compartilhada (ou similar) usada? ( ipcs, ls -l /dev/shmtamanho dos sistemas de arquivos tmpfs, ...) #
Mat Mat
Você poderia fornecer a freesaída em alguns minutos após o momento em que o Zimbra estiver parado e o sistema ainda estiver usando um log de memória?
corrida
@ Mat, eu adicionei algumas informações.
Ouzmoutous 2/16
@rush, eu não salvei essa informação, mas minha htop estava verde para 3.5Go. É como se algum processo não "desaloco" a memória
ouzmoutous

Respostas:

1

Cache.

Um bom resumo em http://www.linuxatemyram.com/ .

O Linux está emprestando memória não utilizada para cache de disco. Isso faz parecer que você está com pouca memória, mas não está! Tudo está bem!

Para limpar os caches, use este comando como raiz e observe o uso resultante da memória.

echo 3 > /proc/sys/vm/drop_caches
Steve
fonte
11
Veja a saída freedada na pergunta: ele mostra apenas ~ 80 MB nos buffers de cache e disco.
Stephen Kitt
Eu limpo o cache (1,2 e 3). Portanto, não era esse o motivo: S
ouzmoutous