Usando swap mesmo com 20GB de memória livre, swappiness = 0

1

Temos um servidor CentOS 7 que troca um pouco uma vez por semana, apesar de ter > 20 GB de memória disponível e swappiness estão configurados para 0. Queremos ser capazes de usar o swap como uma espécie de sentinela que estamos ficando sem memória sem termos que nos preocupar em acionar o killer da OOM.

O que mais poderia estar fazendo com que o sistema entrasse em swap, e o que além do swappiness podemos fazer para impedir que ele troque?

    
por Jay Paroline 31.10.2016 / 18:28

2 respostas

2

Trocar não é uma indicação de que você está ficando sem memória. É uma indicação de que as páginas de memória estão sendo movidas.

Ao mover regiões de memória para várias finalidades (seja desfragmentação, descarregamento de páginas ociosas ou otimização de algum outro tipo), a maneira mais fácil e eficaz de fazer isso é colocá-lo em swap e, em seguida, realocá-lo na memória principal quando (ou normalmente antes) é realmente necessário. Esse processo pode ser forçado por alguns aplicativos para resolver problemas internamente, como fragmentação de memória extrema. Isso acontecerá apesar da configuração de swappiness.

Transformar o swappiness em zero só garante que, em vez de enviar proativamente as páginas inativas para o swap, tudo seja enviado para ele de uma só vez durante um evento OOM crítico. O swap normalmente não é capaz de escrever com rapidez suficiente para resolver este problema, e então o OOMkiller inicia e inicia os processos de filmagem na cabeça. A lógica usada para isso é um pouco agressiva, e provavelmente terminará tentando matar o init se as coisas estiverem ocupadas.

Portanto, em vez de aumentar o desempenho, isso garantirá que a sua máquina falhe se ficar sem memória (mesmo que sejam quase todas as páginas inativas que não estão fazendo nada), independentemente de quanto você realmente tenha de swap. Também aumentará a fragmentação da memória, reduzindo o desempenho e a estabilidade em muitos cenários.

Se você não quer que uma máquina nunca troque ou pague, não coloque swap nela. Esta é uma má idéia na maioria dos cenários, mas pode ser apropriada para sistemas sem disco e ALGUMAS cargas de trabalho virtualizadas.

Se você quiser limitar a troca em um sistema para diminuir potencialmente as latências do aplicativo, defina o swappiness para cerca de 10. Isto é para sistemas com excesso de memória, como o seu.

Se você quiser saber se a sua máquina está ficando sem memória, aponte um pouco de monitoramento real para ela.

    
por 31.10.2016 / 21:38
0

só porque você tem swap alocado não significa que a troca de entrada / saída está ocorrendo. Verifique vmstat para ver se está ocorrendo troca. e como você tem o swappiness definido como 0, é mais provável que seja uma troca vazia.

veja os valores de si e so para in / out no utilitário vmstat .

    
por 31.10.2016 / 19:15