Excesso de troca, mesmo que a RAM esteja ~ 75% vazia

2

Eu tenho um VPS com 9 GB de RAM, 300 GB de HDD, 3 GB de swap, 7 núcleos. O sistema operacional é o CentOS 5.7 Final.

Eu tenho o postgres9.0 em execução na minha máquina, com o ajuste correto feito (pelo menos pelo book / wiki do PostgreSQL).

O que acontece é na maioria das vezes quando alguma consulta complexa é executada (por complexo quero dizer selecionar com no máximo 3 Joins), mesmo que 75% da minha RAM não seja usada, haverá ~ 99% de troca acontecendo.

EDIT: a RAM livre que estou mencionando aqui é calculada por (free + buffer + cache) A verdade livre mostrada por 'free -m' é quase ~ 2%. Então corrija-me se estou errado aqui em primeiro lugar.

Além disso, ele estraga o meu disco IO, que é na maioria das vezes atingindo ~ 100% e retarda todo o resto. (Eu costumo acreditar que algo está errado com o meu disco.)

Eu não entendo a razão de muito dessa troca acontecendo. É por causa da troca de contexto? Na maioria das vezes, meus processadores ficam inativos, enquanto a espera de IO sobe para 30% durante os horários de coleta.

Agradeceria se alguns pudessem lançar alguma luz sobre isso.

Obrigado.

    
por Anuj Patel 21.11.2012 / 00:04

2 respostas

4

O kernel Linux decide colocar as páginas de memória em swap quando elas não são usadas com muita freqüência, mesmo quando há alguma memória disponível. Você pode ajustar esse comportamento ajustando o 'swappiness' do gerenciador de memória fazendo

$ echo 50 > /proc/sys/vm/swappiness

onde 50 é um valor entre 0 (troca o mínimo possível) e 100 (troca o quanto você quiser).

Veja também Wikipedia: swappiness para ler mais sobre isso.

    
por 21.11.2012 / 00:10
0

Parece que você pode estar olhando para o valor correto, mas apenas no caso de você não estar e para aqueles que estão olhando para o valor errado.

$ free -mt
             total       used       free     shared    buffers     cached
Mem:          2027       1953         73          0         66       1501
-/+ buffers/cache:        385       1641 <---- this value is actually free
Swap:         4086          0       4086
Total:        6113       1954       4159

Isto é do nosso sistema de stock / erp da sede para funcionários da sede de 40ish e coordena 9 sistemas de stock / erp de filiais satélites, 80% (1641MB) do nosso uso de ram é considerado gratuito, mas em vez de ser desperdiçado e atuando como buffers / cache.

    
por 03.02.2014 / 01:28