Trocar usado mesmo que a maioria da memória seja “armazenada em cache”? [duplicado]

1

Estou tentando entender este free -m output:

             total       used       free     shared    buffers     cached
Mem:          7971       7608        363          1         17       4703
-/+ buffers/cache:       2887       5084
Swap:          975        967          8

Então, a troca é usada mesmo que apenas 8 GB de 8 GB de RAM sejam realmente usados por processos? Por que isso acontece, o sistema operacional não deve usar menos memória para o cache fs em vez de usar swap?

O SO é Ubuntu 14.04.3 LTS com configurações padrão.

    
por Fluffy 21.01.2016 / 14:42

2 respostas

2

shouldn't the OS use less memory for fs cache instead of using swap?

Eu acho que o sistema operacional estava com pouca memória RAM uma vez no passado e trocou alguma memória.

A escassez acabou, mas as páginas deixadas na troca não estão em uso, então é melhor para o sistema operacional manter a memória RAM para dados "quentes", incluindo o cache fs, em vez das páginas não usadas.

    
por 21.01.2016 / 15:22
2

O Linux é bastante agressivo ao trocar páginas em disco.

Isso não significa que não exista mais nenhuma cópia da página na RAM, mas ela ainda pode ser duplicada no cache de troca (uma seção da RAM que armazena em cache as páginas gravadas no disco). A vantagem disso é que as páginas na RAM podem ser liberadas imediatamente, caso algum processo precise de memória. Você pode verificar o valor olhando:

grep SwapCached /proc/meminfo

Além disso, se as páginas de um processo são trocadas, isso não significa que essas páginas são necessárias pelo processo, mas podem ser de alguma biblioteca vinculada, que segmentos de funções / dados nunca são usados.

Dê uma olhada em link para uma introdução ao tópico, há também um link para scripts para ver o que é trocado.

O gerenciamento de memória virtual pode ser confuso às vezes, como regra geral:

Usually you shouldn't care about how big the swap is, but how much gets swapped in and out on normal activity (check vmstat).

    
por 21.01.2016 / 16:19

Tags