Linux: a memória está livre, mas a troca é usada. Por quê?


11

Aqui estão os diagramas de Munin.

Uso de memória: http://koryagin.com/w/q/memory-day.png

Troque in / out: http://koryagin.com/w/q/swap-day.png

Por que o Linux decide aumentar o cache e usar swap quando o tamanho da RAM é muito maior que a memória usada pelos programas?


2
O subsistema de VM linux nos últimos anos foi muito ajustado para favorecer o espaço em buffer e o espaço em cache; os aplicativos que ocupam memória, mas não fazem nada, são embaralhados no disco. Isso aumenta a capacidade de resposta e o desempenho. A menos que você esteja vendo problemas de desempenho, não precisa se preocupar com isso.
Bart Silverstrim

Respostas:


17

Seu servidor provavelmente possui alguns processos que consomem memória e / ou inativos, com muitas páginas inativas. O kernel do Linux prefere trocar partes inativas dos programas para trocar, pois provavelmente a memória é melhor usada como cache.

Se você deseja mudar esse comportamento, brinque com o vm.swappinesssysctl tunable, mas esteja avisado, não é tão fácil superar os desenvolvedores do kernel / mantenedores de distribuição. :-)

Você está tendo problemas de desempenho no servidor durante esse pico de troca ou pediu por curiosidade?


Não tenho problemas de desempenho neste servidor específico. Mas em outro, onde a situação não é tão clara, estou pensando no que fazer. Alguma lógica de gerenciamento de memória do Linux não pode ser o motivo dos segfaults do PHP-FPM, se eles não corresponderem a nenhum dos problemas conhecidos do PHP? Então, geralmente em favor da curiosidade.
Pavel Koryagin 02/09/11

BTW, esse servidor lida intensivamente com uma quantidade muito pequena de dados com um conjunto fixo de scripts, portanto, não deve ter E / S intensiva. Então, por que o Linux quer ter um cache tão grande?
Pavel Koryagin 02/09/11

O Linux armazena em cache pesado arquivos, metadados, entradas de diretório e assim por diante. Experimente o comando slabtop.
Janne Pikkarainen 02/09/11

Muito obrigado. Vai demorar um pouco para entender o que fazer com as slabtopinformações.
Pavel Koryagin 02/09/11

Deixe isso correr em tela cheia quando seu chefe passar pelo seu cubículo e se tornar um guru aos olhos dele. :-) Outro bom comando "ooh, que com certeza parece difícil de entender" está systat -vmstatno FreeBSD (provavelmente outros BSDs também).
Janne Pikkarainen

1

Você deve tentar jogar com o parâmetro swappiness . Como você pode ver o seu sistema começou a trocar quando tentou aumentar o tamanho do cache do arquivo, isso é normal se o swappines não for 0.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.