|
|
SofteLabs - virtualização e automatização - Desenvolvimento de Software à medida > Suporte Comercial e Técnico > Tech Support Linux and Virtualization > O Swappiness - A gestão do uso de swap no Ubuntu Linux e VmWare Server
O Swappiness - A gestão do uso de swap no Ubuntu Linux e VmWare ServerDe $1Tabela de conteúdossem cabeçalhos
A estratégia do Swapping no Linux Ubuntu passa principalmente por uma variável de sistema denomina de
O valor poderá ser modificado entre 0 e 100. Por defeito o Ubuntu vem com um valor 60 atribuído ao swappiness. Para verificar isso, basta executar:
$ sudo cat /proc/sys/vm/swappiness
Que mostrará o valor directamente
Ou
$ sudo sysctl -a|grep swappiness
Que lhe dará a resposta do seguinte modo:
vm.swappiness = 60
Valor 0 fará com que o sistema aloque o máximo de memória ram.
Valor de 100 significa alocar o máximo possível do que não está sendo utilizado no momento na memória swap.
A partir disso podemos dizer que quanto mais próximo de 100 mais espaço irá sobrar na memória ram, fazendo com que as aplicações iniciem mais rapidamente, em caso de já haverem outras aplicações a correr, pois estas não precisarão de contender pelo espaço existente na Ram.
Com valores mais próximos de 0 por sua vez a vantagem seria o ganho na velocidade dos aplicações já abertas. Pois estas estariam alocadas o máximo possível na memória ram.
Por exemplo caso uma aplicação aberta tenha ficado sem uso por um longo período, esta voltará ao seu estado activo de forma mais rápida. Por ser a memória ram mais rápida que os dispositivos de swap, as aplicações nelas residentes responderão mais rapidamente aos comandos do utilizador.
Em suma
Valores próximos de 100 : maior performance na inicialização do aplicações;
Valores próximos de 0 : maior performance na execução das aplicações.
Qual o melhor valor?
A definição de qual seria o melhor valor depende de dois aspectos principalmente:
1) O workload dos softwares utilizados;
2) A memória Ram disponível.
Em geral para os que tem uma quantidade de memória ram razoável pode se colocar um valor mais baixo. Para alterar os valores:
Primeiro verifique o valor que deseja usar, da seguinte forma:
$ sudo -s
# echo “seu_novo_valor” > /proc/sys/vm/swappiness
Dessa forma pode testar o valor que atribuiu, porém após um restart, o sistema volta ao valor 60, que originalmente está definido no sistema.
Num sistema Linux com Virtualização VMWARE o "loading" e activação de processos é bastante agressivo e como tal experimentei um pequeno shell script que em tempo-real analisa a memória usada em função da memória real disponível e calcula o valor optimal para cada momento e aplica-o no sistema.
Os resultados foram os esperados e o desempenho e a resposta do sistema servidor Linux de virtualização VmWare Server 2.x melhoraram significativamente e inclusive a consola de vmware passou a responder aceitavelmente, face à sua tendência em comportamentos mais "abortivos", antes desta implementação.
Como tal o script baseado numa ideia de Con Kolivas (http://kerneltrap.org/node/1044) é o seguinte:
# !adjust-swappiness.sh # Written By F. Goncalves @ Softelabs.com on 06 May 2010
#
# will adjust the current swappiness of the kernel
# based on the idea by Con Kolivas (http://kerneltrap.org/node/1044)
#
result=0
resultant=0
echo " $(date) - Starting Adjusting Swappiness according memload"
#
total=$(grep MemTotal /proc/meminfo | awk '{ print $2 }') # obtain tot memory
#
while [ true ]; do
#
used=$(grep AnonPages /proc/meminfo | awk '{ print $2 }') # get used memory
result=$(echo $used \* 100 / $total | bc -q) # compute usage in %
then
echo $result > /proc/sys/vm/swappiness # adjust it please
echo "$(date) - Now Adjusting Swappiness to " $result
resultant=$result
fi
#
sleep 2
#
done
#
# Will stay here forever ..... hi...hi...hi....
#
O script, ele próprio, está localizado em /usr/bin/adjust-swappiness
Para consultar se este está activo no seu sistema ou qual o tipo de ajustamentos que ele está a efectuar em tempo-real usar o comando:
# tail -f /var/Swappiness.log
e terá como output algo como:
root@vserver:/var/log# tail -f /var/log/Swappiness.log
Thu May 6 14:50:01 WEST 2010 - Now Adjusting Swappiness to 3
Thu May 6 14:50:01 WEST 2010 - Now Adjusting Swappiness to 3
Thu May 6 14:50:15 WEST 2010 - Now Adjusting Swappiness to 2
Thu May 6 14:50:15 WEST 2010 - Now Adjusting Swappiness to 2
Thu May 6 15:00:03 WEST 2010 - Now Adjusting Swappiness to 3
Thu May 6 15:00:03 WEST 2010 - Now Adjusting Swappiness to 3
Thu May 6 15:00:07 WEST 2010 - Now Adjusting Swappiness to 2
Thu May 6 15:00:07 WEST 2010 - Now Adjusting Swappiness to 2
Thu May 6 15:09:39 WEST 2010 - Now Adjusting Swappiness to 1
Thu May 6 15:09:40 WEST 2010 - Now Adjusting Swappiness to 1
Também pode consultar na própria variável do kernel através do comando: # sysctl -a |grep swappiness ou
# sysctl -q vm.swappiness
Desde já agradeço os seus comentários ou sugestões sobre este "fix" para fgoncalves@softelabs.com
Francisco Gonçalves in May 06 2010 @ Softelabs.com
Chaves:
|