Nota: Este artigo foi publicado originalmente em 2014. Alguns passos, comandos ou versões de software podem ter mudado. Consulte a documentação atual do Ubuntu para obter as informações mais recentes.

Neste guia passo a passo, você aprenderá a configurar o swappiness no Ubuntu. O Ubuntu é uma distribuição Linux popular baseada no Debian, amplamente utilizada para servidores e ambientes de desenvolvimento.

Pré-requisitos

Antes de começar, certifique-se de que você tem:

  • Um sistema rodando Ubuntu (edição desktop ou servidor)
  • Acesso ao terminal com privilégios sudo
  • Familiaridade básica com a linha de comando do Linux

Como: Configurar o Swappiness no Ubuntu

Em um dos meus artigos anteriores sobre (</install-swap-file-windows-azure-ubuntu-vm/> “How to: Install a swap file in a Windows Azure Ubuntu VM”) eu cobri como instalar um espaço swap para uma VM do Windows Azure. Eu implantei o swap principalmente como precaução contra a falta de memória, o que poderia resultar em aplicações incapazes de funcionar corretamente e o site poderia ficar fora do ar. Para evitar isso, você implanta o swap, que provavelmente diminuirá a velocidade dos seus serviços, mas pelo menos eles não irão travar. Isso efetivamente lhe dá tempo para resolver seus problemas de memória ao custo de usar o HD, resultando em latências adicionais. Então, até aqui, configurar sua memória swap parece genial, mas cuidado: se o seu swappiness não estiver configurado corretamente, você enfrentará latências desnecessárias. No meu caso, eu ainda tinha mais de um gigabyte de memória disponível, mas já estava fazendo muito swap. Não faz sentido fazer swap quando há bastante RAM sobrando; você está apenas movendo informações para dentro e fora da memória que poderiam facilmente caber toda na memória. O swappiness, então, controla quão agressivamente o sistema operacional deve usar o espaço de swap.

O que é Swappiness?

O parâmetro swappiness no Ubuntu controla a tendência do kernel do SO de mover memória (informações) usada por processos para fora da memória física e para o disco de swap. Como mencionado acima, usar um disco rígido é, por natureza, muito mais lento do que usar RAM. Isso resulta em aplicações demorando mais para responder, particularmente aquelas que estão sendo movidas para o disco (as outras sofrem indiretamente por causa das operações de IO adicionais, mas pelo menos já estão presentes na RAM).

Há algumas coisas importantes a saber sobre como usar este parâmetro:

  • Os valores aceitos de swappiness variam de 0 a 100 inclusive.
  • Um valor de 0 indica ao kernel para evitar swap a todo custo.
  • Um valor de 100 indica que ele deve mover agressivamente informações da memória para o swap.

Então, até aqui, você deve estar pensando, depois de ler meus pensamentos sobre swappiness, que 0 é o caminho certo: tenha cuidado com essa escolha. A resposta correta depende de muitas coisas, incluindo suas aplicações, o uso e a capacidade do sistema. Por exemplo, suponha que você use um valor de 0 e a memória esteja quase cheia. Se você tentar lançar uma aplicação grande, haverá um atraso até que o sistema consiga liberar memória suficiente fazendo swap de processos antes que você possa usar sua aplicação. Considere o outro extremo de 100: Você deve ter, em todos os momentos, bastante RAM para lançar processos grandes, mas a taxa de resposta geral da sua máquina sofrerá uma queda de desempenho.

O Ubuntu determinou por padrão que um valor de 60 é ideal para a maioria dos usuários. Ele permite que haja memória disponível para lançar novas aplicações sem ser tão agressivo a ponto de causar uma grande queda de desempenho. Mas, como mencionei, o melhor valor para sua máquina depende do uso que você dá ao sistema. Por exemplo, estou rodando um servidor que eventualmente lança processos para atender requisições de entrada, mas seu tamanho é relativamente pequeno e, na maior parte do tempo, sempre tenho bastante RAM para lidar com todos os serviços necessários. No meu caso, gosto de usar um valor de swappiness de 10. Você deve pensar sobre seus padrões gerais de uso de RAM e sinta-se à vontade para experimentar. Eu espero que valores limítrofes (0 e 100) sejam extremos demais, mas você pode ver qual é a diferença entre 25 e 75, por exemplo.

Como configuro o Swappiness?

Isso é bastante fácil. Existe um arquivo (/proc/sys/vm/swappiness) que é usado durante a operação e indica o swappiness atual sob o qual o sistema está rodando. Alterar este valor resultará na mudança do swappiness do sistema pela duração do kernel (ou seja, até você reiniciar / desligar e ligar novamente).

Se você quiser ver o valor, eu recomendo usar cat ao invés de nano para evitar editar o arquivo acidentalmente:

$ cat /proc/sys/vm/swappiness
60

Você provavelmente verá o valor padrão de 60, a menos que ele já tenha sido modificado. Como mencionei, você poderia modificar o arquivo, desativar o swap e ativá-lo novamente para que a mudança tenha efeito apenas durante sua sessão atual. Se você modificar o valor via o comando sysctl (eu recomendo não editar o arquivo /etc/sysctl.conf diretamente para evitar quebrar acidentalmente algo), a mudança terá efeito apenas após você reiniciar a máquina. Suponha que você queira usar um nível de swappiness de 15:

$ sysctl vm.swappiness=15

Se quiser, você pode executar swapoff -a e swapon -a para aplicar o novo valor de swappiness ao sistema (em vez de ter que reiniciar, esta pode ser uma opção atraente).

Não esqueça de verificar o uso de memória com free -m para ver o tamanho e uso do swap.

Qual valor de swappiness você recomenda?

Esta é minha opinião pessoal e você deve monitorar o uso e desempenho do seu swap para ajustá-lo. Eu acredito que este é um bom ponto de partida, mas use seu próprio critério, experimente e decida o que é melhor para você.

Swappiness Recomendado Memória geralmente disponívelTamanho relativo dos novos processosSwappiness Recomendado
MuitaPequeno< 10
MuitaMédio10 < x < 20
MuitaGrande15 < x < 30
MédiaPequeno10 < 15
MédiaMédio15 < x < 25
MédiaGrande25 < x < 45
PoucaPequeno35 < x < 60
PoucaMédio50 < x < 70
PoucaGrande65 < x < 90

Tudo se torna relativo, mas você entende a ideia geral: Quanto mais memória você geralmente tem livre ou disponível, menor o swappiness que você pode usar. Além disso, quanto maiores os novos processos que você lança, maior o swappiness que você precisará para que eles caibam adequadamente na memória, se necessário. Considere o seguinte cenário: Você tem uma máquina com 16gb de RAM e geralmente usa apenas 2gb. Você nunca usou mais de 13gb e não espera usar. Então, mesmo que novos processos usem muita RAM, você nunca realmente fica sem memória, então um valor de 10 ou abaixo seria recomendado (até 0).

Se quiser, sinta-se à vontade para fornecer via os comentários as especificações do seu sistema, padrões de uso de memória e eu posso ajudá-lo a escolher um valor inicial para experimentar!

(http://img.zemanta.com/zemified_h.png?x-id=5a719463-cced-4eb4-b803-0e78fba9e3bb)](http://www.zemanta.com/?px “Enhanced by Zemanta”)

Resumo

Você aprendeu com sucesso a configurar o swappiness no Ubuntu. Se encontrar algum problema, verifique novamente os pré-requisitos e certifique-se de que seu ambiente Ubuntu está configurado corretamente.

Artigos Relacionados