Tempo de carregamento: 0,372 segundos.

Artigo – O que é Swappiness e como configurá-lo

11305 Views
Tempo de leitura: 3 Minutos 
Conteúdo atualizado em

A memória Swap do sistema operacional vai muito além de um refúgio do sistemas para momentos de sobrecarga da memória RAM. A seguir, veremos sobre Swappiness, esse carinha importante e que considero pacas!

Swap

Antes de falar de Swappiness, relembremos o conceito de memória Swap. A Swap trabalha como uma extensão da memória RAM. Quando a RAM acaba, a memória Swap é utilizada para manter o sistema no ar. Porém, poucas pessoas sabem que ela também é utilizada mesmo quando há RAM disponível. O próprio sistema move caches pouco utilizados da RAM para o Swap. Além disso, alguns serviços, como o MySQL, por vezes, descarregam seus caches na Swap. Ou seja, a Swap não somente é utilizada quando acaba a memória RAM.

Analisando a imagem acima, temos uma ideia de como a Swap pode atuaar ativamente no sistema. Por vezes o sistema transfere instruções da RAM para a Swap, e por vezes puxa essas instruções da Swap para a RAM.

Swappiness

O Swappiness é um parâmetro do Kernel Linux que nos permite configurar a flexibilidade do sistema no uso de Swap.

Apesar de ser configurado por padrão, podemos modificar o Swappiness via `sysctl`, como veremos nos exemplos mais abaixo.

Por ora, saibamos que sua configuração é feita com valores de 0 à 100. Quanto menor o número, mais restrito será o uso de Swap.

Por exemplo:

Swappiness: 60 Indica que o sistema poderá usar Swap a partir de 40% de uso de RAM.
Swappiness: 40 Indica que o sistema poderá usar Swap a partir de 60% de uso de RAM.
Swappiness: 20 Indica que o sistema poderá usar Swap a partir de 80% de uso de RAM.
Swappiness: 10. Indica que o sistema poderá usar Swap a partir de 90% de uso de RAM.
Swappiness: 1 Indica que o sistema poderá usar Swap a partir de 99% de uso de RAM.
O valor “1” é o mínimo que podemos atribuir ao Swappiness, pois o valor “0” indica que o sistema não poderá usar Swap.

Swap != Swappiness

  • Swap é uma memória virtual. Ou seja, é feita no disco para complementar a memória RAM. É bem mais lenta do que a RAM, diga-se de passagem.
  • Swappiness é um parametro que nos permite configurar o uso de Swap.

Observe se tratar de coisas distintas.

Verificando o valor atual do Swappiness

Primeiramente, vejamos o valor atual do swappiness.

sysctl -a | grep -i swappiness

A saída do comando será similar a esta:

vm.swappiness = 10

Se preferir ou se o amigo leitor estiver scriptando essa verficação, pode-se usar menos ciclos de cpu com `cat`:

cat /proc/sys/vm/swappiness

Aqui a saída será apenas o valor.

Setando valor no Swappiness

O amigo leitor pode setar o valor do Swappiness de duas forma:

Setando valor de Swappiness em memória:

O valor do Swappiness pode ser alterado apenas na memória, ou seja, sará válido até que o sistema seja reiniciado ou desligado. Para isso, basta rodar o comando abaixo:

sysctl vm.swappiness=30

Observe que “30” é um valor exemplo.

Setando valor de Swappiness de forma persistente:

Você pode persistir a configuração no arquivo `/etc/sysctl.conf` ou criando um arquivo em `/etc/sysctl.d/arquivo.conf` com o trecho destacado abaixo:

vm.swappiness=30

Novamente observe que “30” é um valor exemplo.

Feito isso, execute o comando abaixo:

sysctl -p /etc/sysctl.conf

Assim o valor passa a valer imediatamente.

Como calcular Swappiness

Na verdade não existe um calculo exato ou uma tabelinha específica. O ideal é o amigo leitor conhecer seu sistema e ir fazendo medições até chegar a configuração ideal.

Outra forma seria pesquisar por hardening dos serviços que roda em seu ambiente. Só assim terá a configuração adequada.

Algumas pessoas setam o valor de Swappiness com base na quantidade de Swap disponível, mas isso é errado. É preciso entender o quão determinante será o uso de Swap. Por exemplo, se você rodar um banco de dados, como no exemplo acima, é determinante usar Swap mesmo quando houver RAM livre, logo, dependendo do resultado do seu calculo, sua Swap ficará bem restrita. Logo, o calculo não funcionará muito bem. Enfim, é preciso conhecer as características do sistema para determinar o valor do Swappiness.

Como sugestão, deixaria o default da distruição. No meu caso, CentOS 8, o default é 10. Ou seja, só usará swap ao atingir 90% de uso da RAM, o que será bem difícil dada a quantidade de memória e características de uso do sistema. Porém, sabemos que com o passa do tempo a demanda no sistema cresce. Por isso é muito importante fazer acompanhamento e revisitar o parâmetro de tempos em tempos.

Resumo

Me despeço por aqui. Deixo a sugestão de analise dos seus ambientes quanto ao uso de Swap. Mais do que uma boa prática, evita dores de cabeça e pode lhe economizar algum dinheiro.

Abraço e até a próxima.

87 - 5

Thank You For Your Vote!

Sorry You have Already Voted!