O que é "armazenado em cache" no comando top?

46

Ao executar top, recebo:

top - 09:10:52 up 18:37,  1 user,  load average: 1.56, 1.33, 1.15
Tasks:  39 total,   1 running,  38 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.6%sy,  1.0%ni, 92.5%id,  5.8%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4194304k total,  3045460k used,  1148844k free,        0k buffers
Swap:        0k total,        0k used,        0k free,  2256128k cached

Veja a peça: 2256128k em cache? O que exatamente isso significa?

Estou comparando dois VPS de dois provedores, este sempre possui uma grande quantidade (70% da memória usada) e o outro provedor VPS sempre mostra 0.

KKK
fonte

Respostas:

15

Esse número antes do cache é a quantidade de memória física que está sendo usada pelos buffers de cache para seus sistemas de arquivos.

Na verdade, ele não está relacionado ao SWAP, apesar de estar na linha "Swap:".

Para verificar minha resposta com um pequeno experimento, tente o seguinte:

Execute top e observe o valor de 'em cache'. Agora corra

dd if=/dev/zero of=~/trick bs=1M count=128

se você voltar ao topo, notará que o 'cache' aumentou em 128 milhões

Agora remova o arquivo

rm ~/trick

Execute a parte superior novamente e você verá que o 'cache' caiu 128M

Então, para Mem:

total = used + free e

used = <all apps> + buffers + cached

(onde buffers são basicamente metadados para o cache). Um pouco confuso de uma interface do usuário.

rogerdpack
fonte
e eu posso influenciar isso de qualquer maneira, por exemplo, limitá-lo ou desativar completamente?
KKK
2
Por que você quer fazer isso?! o que você deve fazer ?! é sobre como o cache do sistema de arquivos na memória phiscal.
Como a maior parte do sistema de arquivos é um banco de dados, o banco de dados possui seu próprio cache, então suponho que seria bom limitar essa parte de alguma forma.
KKK
Você pode fazer isso com alguma pesquisa, mas eu não aconselho você. Isso limitará o desempenho do FS
117

o kernel do Linux usará a memória disponível para o cache do disco, a menos que seja exigido por um programa em execução.

Isso é considerado bom; digamos que você tem 4 GB de RAM e seus programas estão usando apenas 1 GB. Os outros 3 GB estão indo para o lixo. Apesar da impressão de "sentir-se bem" ao saber que você está usando apenas 25% da sua memória, a contrapartida é que os outros 75% não são utilizados. Portanto, o kernel usa isso para armazenar arquivos em cache, o que melhora significativamente o desempenho. É automático; ao contrário dos sistemas operacionais mais antigos, você não precisa decidir quanto dedicar ao cache de disco ou configurá-lo manualmente.

"O cache de disco do Linux é muito discreto. Ele usa memória sobressalente para aumentar bastante a velocidade de acesso ao disco, e sem tirar nenhuma memória dos aplicativos. Um armazenamento de memória RAM totalmente usado no Linux é um uso eficiente do hardware, não um sinal de aviso".

Essa é uma pergunta tão comum que existe um site inteiro dedicado a ela:

http://www.linuxatemyram.com

O site ainda tem uma maneira de esvaziar o cache do disco, para que você possa executar alguns aplicativos e ver quanto mais rápido eles estão com o cache ativado :)

roadmr
fonte
4
Adoro a resposta, mas devido à falta de reputação, ainda não posso atualizá-la. Desculpa.
KKK
4
Não se preocupe, estou feliz em ajudar. Espero que a informação seja útil!
roadmr
ESTA deve ser a resposta aceita. Ah bem . . . :(
ankush981 30/01
definitivamente deve ser a resposta aceita. linuxatemyram é uma ótima informação!
Rafaelbattesti