Hoje percebi que encontrei o seguinte:
Como você pode ver, a RAM está quase pela metade e o uso do espaço de troca é muito alto. Pelo meu conhecimento de livro, eu costumava pensar que o sistema operacional Linux tenta fazer o melhor uso da RAM e, quando fica sem RAM, move algumas das páginas menos usadas da RAM para o espaço de troca.
Alguém pode me explicar se meu conhecimento teórico está incorreto e me explicar como ele realmente funciona no mundo do Linux.
Responder1
Embora seja verdade que o kernel usa swap mesmo que ainda haja memória, usar mais de dois terços dela pode ser um indicador de que historicamente o servidor pode estar ficando sem memória e é por isso que começou a trocar. Eu correlacionaria o uso de swap com o uso de memória nos relatórios sar para deduzir se o sistema tem memória RAM suficiente. Eu também verificaria o dmesg ou os logs para determinar se o servidor realmente ficou sem memória e o oom-killer entrou em ação.
Responder2
O kernel do Linux começa a trocar páginas de memória mesmo se você tiver bastante memória RAM livre. Você pode ajustar esse comportamento definindo uma troca personalizada.
http://en.wikipedia.org/wiki/Swappiness
Para servidores, recomendo definir a troca como 1 se você sempre tiver memória suficiente para sua carga de trabalho. Para estações de trabalho, recomendo usar o padrão 60.
# check the current value
cat /proc/sys/vm/swappiness
60
# swappiness = 1 (swap only if necessary)
echo 1 > /proc/sys/vm/swappiness
# or use sysctl
sysctl -w vm.swappiness=1
Torne a configuração permanente em /etc/sysctl.conf definindo
vm.swappiness=1
e recarregue-o com
sysctl -w
Responder3
Infelizmente, alguns aplicativos irão trocar diretamente, ignorando intencionalmente a RAM. Olhando para você, Chrome (e em certo momento Photoshop). A única maneira de fazer com que esses aplicativos não sejam trocados é executá-los sem uma partição swap. Mesmo o swappiness 0 IIRC ainda lhes dará acesso, uma vez que o exigem explicitamente.
Alterar a troca conforme acima funcionará para todo o resto. Eu sugeriria um valor de 10-20 em vez de 1.