14851 Views
Tempo de leitura: 3 MinutosA 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. |
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.