Categorias
Arquitetura Linux

o linux comeu minha memória!

linux-comeu-a-ram

Calma! Sua memória RAM está bem!

O que está acontecendo ?

O Linux pegou sua memória emprestada para cache em disco.

Isso faz parecer que sua memória está quase toda em uso, mas não está !
Está tudo bem!

Por que está fazendo isso ?

O cache em disco faz sua aplicação rodar bem mais rápida!

Não tem desvantagem, exceto por confundir os novatos em Linux.
Ele nunca tira memória da aplicação , nunca!

E se eu quiser rodar mais aplicações ?

Se sua aplicação quiser mais memória, ela apenas pega de volta um pedaço de cache de disco emprestado.

O cache de disco pode sempre voltar para a aplicação imediatamente!
Você não está com pouca memória RAM !

Eu preciso de mais swap ?

Não, o cache de disco apenas pega emprestado a memória RAM das aplicações que ainda não o solicitaram.
Ele não usará o swap.
Se as aplicações precisarem de mais memória, elas simplesmente pegam de volta do cache de disco.
Elas não usam o swap.

Como eu desligo isso no Linux ?

Você não pode desligar o cache de disco.
O único motivo de querer desligar o cache de disco seria pensando em que ele tira a memória das aplicações, o que não é verdade!
O cache em disco faz as aplicações rodarem mais rápido e mais suave, mas elas NUNCA tiram a memória delas!
Portanto, não existe motivo para desligar o cache de disco!

Por que o top e o free dizem que toda a memória está usada quando não está ?

Isso é apenas um mal-entendido com os termos.
Tanto você como o Linux concordam que memória pega pela aplicação é “usada”, enquanto que se não for usada para nada é “livre”.

Mas como se chama uma memória que é usada por alguma coisa e disponível para aplicações ?

Você pode chamar de “livre“, mas o Linux chamada de “usada“.

memória você chama de o Linux chama de
alocada para aplicações usada usada
disponível para aplicações, alocada para alguma coisa livre usada
não usada para nada livre livre

 

Essa “alguma coisa” é o que o top e o free chama de “buffers/cached“.

Portanto, como os termos do Linux são diferentes dos nossos, parece que você tem pouca memória quando na verdade você não tem.

Como eu vejo quanto de memória eu realmente tenho livre?

Para ver quanta memória livre a sua aplicação pode usar, rode free -m e veja a linha and “-/+ buffers/cache” na coluna “free”.

Essa é a resposta em megabytes:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          1504       1491         13          0         91        764
-/+ buffers/cache:        635        869 <------ 
Swap:         2047          6       2041
$

Se você não sabe como ler os números, você entende que a memória RAM está 99% cheia (1491 de 1504) , quando na verdade é apenas 42% (635 de 1504).

fonte:
http://www.linuxatemyram.com/

Fernando Boaglio, para a comunidade!