não consegue encontrar o que usou toda a memória

2

O servidor tem cerca de 24 GB de memória. Correndo free -g eu acho que a memória está esgotada

             total       used       free     shared    buffers     cached
Mem:            23         23          0          0          0         18
-/+ buffers/cache:          4         19
Swap:           56          2         53

Então eu fiz uma pesquisa sobre o que consumiu toda essa memória por top then M . Mas parece que a memória é bastante livre na coluna %MEM .

O que posso fazer para liberar alguma memória? Este é um servidor para cálculo, por isso é melhor não reiniciar o computador.

    
por onemach 09.05.2014 / 07:34

2 respostas

3

Você está interpretando mal a saída de free . O que você postou está mostrando que você tem 19 GB de RAM livres. Os 23 GB que você está vendo são usados pelo sistema como cache, mas ainda estão disponíveis para aplicativos. É também por isso que top mostra a memória como livre ..

Veja Linuxatemyram.com para uma explicação mais detalhada

    
por 09.05.2014 / 15:06
0

Você pode consultar esta questão para determinar a memória livre exata .

  • Por padrão, o linux tem um processo de gerenciamento de memória muito eficiente que deve liberar qualquer memória cache na máquina em que está sendo executada.

  • No entanto, quando se trata de memória cache , o linux pode às vezes decidir que a memória cache está sendo usada e é necessária o que pode levar a problemas relacionados à memória e, finalmente, usar a memória livre. Para contê-lo, você pode forçar o linux a liberar qualquer memória armazenada em cache.

Para liberar memória imediatamente, você pode simplesmente fazer isso,

free && sync && echo 3 > /proc/sys/vm/drop_caches && free

EDITADO : você também pode executar este comando como um cronjob.

Como @mjturner apontou, isso não é muito recomendado, pois pode causar gargalos de desempenho.

    
por 09.05.2014 / 07:55