Linux rodando devagar com 0 swap restantes

Linux rodando devagar com 0 swap restantes

Nosso servidor Linux está respondendo muito lentamente. topnão mostra nenhum uso excessivo da CPU. Percebi que, embora haja cerca de 5 GB de memória livre, o sistema está usando toda a troca, sem sobrar nenhuma troca livre. Isso poderia ser motivo para o sistema estar lento? Existe alguma solução além de reduzir o número de processos?

Em segundo lugar, mesmo que haja memória livre disponível, por que o Linux já está trocando? Achei que swap fosse usado apenas quando não havia mais memória real.

free -m
             total       used       free     shared    buffers     cached
Mem:         32045      26218       5826          0        127        123
-/+ buffers/cache:      25967       6077
Swap:        16387      16387          0

Atualizar:

  • swapiness está no nível padrão: 60
  • Eu não acho que seja um sistema numa
  • Vejo alguns processos Java em execução com heap de 8 GB:-Xms8000m -Xmx8000m

Parece loucura à primeira vista, mas possivelmente alguém tinha motivos para fazer isso. Acho que isso é o que está consumindo a maior parte da troca, mas preciso investigar mais detalhadamente como o heap Java afeta a troca do Linux e a memória/desempenho em geral. Quaisquer indicações sobre o impacto da configuração de heap Java acima no desempenho do sistema serão realmente úteis.

Responder1

Quantos processos Java foram inicializados com o heap de 8 GB? Talvez mantenha o máximo em 8 e diminua o tamanho inicial do heap. Se você tiver espaço em disco, experimente aumentar o tamanho do swap também

Responder2

Você tem tmpfsmontagens? Eles são apoiados por swap e podem ser a causa de zero espaço de swap disponível. Fazer syslogou dmesgmostrar algo inesperado? Tem certeza de que seu sistema não está trocando constantemente? Verifique vmstat -SK 1e verifique colunas sie so(páginas trocadas dentro e fora em KB/s). Se você precisar saber quais processos estão sendo trocados, execute sudo iotop -od5. Se você estiver executando o Ubuntu, precisará delayacctdo sinalizador do kernel para obter estatísticas completas. Para mim, seu sistema parece ter cache e buffers muito pequenos para uma memória de sistema tão grande.

A troca é usada para melhorar o desempenho de todo o sistema. Um exemplo disso seria trocar partes de um grande programa que está atualmente em suspensão para permitir o uso de mais memória para cache de disco ou buffers de arquivo. Se você desabilitasse a troca neste caso, o sistema teria efetivamente cache de disco e buffers de arquivo menores. Como seu espaço de troca está cheio, você pode sofrer do mesmo problema.

O espaço de troca é especialmente importante se você tiver algum programa que “vaze” memória (ou seja, um programa adquire blocos de memória que não são realmente usados). Tal “vazamento” pode não ser um erro no programa, pode apenas acontecer que a memória seja usada tão raramente que pode ser melhor tratada como vazada. Sem espaço de troca, essa memória vazada não pode ser usada como cache ou buffers.

Um sistema operacional executado corretamente com memória virtual usa swap quase sempre, a menos que todo o conjunto de trabalho (todos os arquivos acessados, toda a memória reservada pelos aplicativos e todos os buffers de gravação) caiba totalmente na memória durante todo o tempo de execução do sistema. Na maioria dos casos, isso só é verdade se o sistema for reinicializado constantemente ou se o sistema tiver uma grande quantidade de RAM em comparação com o tamanho total do sistema de arquivos.

informação relacionada