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.
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