Páginas

segunda-feira, 27 de junho de 2011

Dicas sobre swap em Linux

Para servidores de banco de dados dedicados, o uso da área de swap é muito ineficiente e deve ser evitado ao máximo. Podemos alterar o comportamento default de como o kernel (a partir da versão 2.6) "julga" a utilização ou não da área de swap através do parâmetro swappiness:

[root@localhost ~] sysctl vm.swappiness
vm.swappiness = 60 --valor default

Quanto maior esse valor, maior a tendência com que o kernel faça swap (mais info: http://kerneltrap.org/node/3000). Setando esse valor para zero, o kernel fará swap apenas em último caso (que é o desejável):

[root@localhost ~] sysctl -w vm.swappiness=0

IMPORTANTE: Para persistir as configurações, é necessário adicionar a entrada ao arquivo /etc/sysctl.conf:

vm.swappiness = 0

Caso a área de swap já esteja sendo utilizada, podemos forçar as páginas em disco irem para a memória desligando o swap (temporariamente):

[root@localhost ~] swapoff /dev/swap01

DICA: Em outra sessão, é possível acompanhar o andamento do swapoff através do vmstat.

Após isso, podemos voltar a ativar a área de swap:
[root@localhost ~] swapon /dev/swap01

Caso não haja espaço livre em memória para receber as páginas em disco, podemos fazer um procedimento para dropar o cache em memória, liberando assim espaço para receber as páginas em disco (a partir do kernel 2.6.16):

Liberar pagecache:
[root@localhost ~] sync; echo 1 > /proc/sys/vm/drop_caches
 
Liberar dentries e inodes:
[root@localhost ~] sync; echo 2 > /proc/sys/vm/drop_caches
 
Liberar pagecache, dentries e inodes: 
[root@localhost ~] sync; echo 3 > /proc/sys/vm/drop_caches 

Essa operação não é destrutiva e pode ser feita online. Deve-se atentar ao fato que dropando o cache de memória, a carga de CPU do servidor tende a aumentar momentaneamente até o cache ser reconstruído.

Nenhum comentário:

Postar um comentário