Como Gerenciar o Uso de Swap no Linux
Você pode ter experimentado lentidão no sistema, uso intenso de swap ou problemas de memória baixa no seu sistema Linux. Um conselho comum é “reduzir o valor de swappiness”, diminuindo o uso de swap. Mas o que é swappiness? E realmente vale a pena ajustá-lo?
Nota: não iremos nos aprofundar sobre a partição swap. Você pode ler tudo sobre isso no nosso artigo sobre o que você precisa saber sobre a partição Swap no Linux.
Swappiness
Há um valor chamado swappiness em sistemas semelhantes ao UNIX que determina como as páginas na memória serão gerenciadas. Seu valor padrão na maioria dos sistemas é “60”, mas pode ser ajustado para qualquer coisa entre 0 e 100. Se a memória estiver baixa, o kernel poderá expulsar alguns caches de arquivos para ter mais RAM livre para os processos, ou irá trocar algumas páginas de processos da RAM para o disco.
Um padrão de 60 significa que a troca será usada menos, e os caches de I/O provavelmente serão liberados para realocar RAM. Expelir caches é considerado “mais barato” (menos intensivo em recursos), enquanto trocar páginas envolve leituras e gravações no disco, tornando-as mais “caras”. Com um valor de ‘60’, o uso de swap será ligeiramente menor do que o reaproveitamento de cache. Se o valore de swappiness for aumentado para 100, a troca e a expulsão de cache de arquivos serão usadas com igual peso. Isso significa mais troca e I/O mais rápido do que o padrão. Valores mais baixos, como “10”, significam que a troca será usada muito menos, e os caches de I/O podem ser expulsos muito mais cedo em favor dos processos. Isso pode aumentar a interatividade, mas também pode prejudicar a velocidade de I/O.
Reduzindo o swappiness
Você frequentemente verá conselhos em sites e fóruns para reduzir o swappiness para cerca de “10”. Isso é suposto acelerar as coisas usando menos swap e mantendo mais processos na RAM física. Essa lógica pode ser um pouco simples demais e pode não ser uma “solução única para todos”.
Reduzir o valor de swappiness pode ser bom nos seguintes cenários:
- Para sistemas de banco de dados, ou se você usa muitos aplicativos intensivos em banco de dados: Os bancos de dados geralmente gerenciam o cache de arquivos muito melhor do que o SO. Se você reduzir o swappiness, limitará o cache de arquivos do SO, dando assim a chance ao banco de dados de gerenciar seus próprios caches.
- Para interatividade: Se você multitarefa muito, mas manipula poucos arquivos ou não abre documentos grandes, isso pode melhorar quão suave seu sistema parecerá. Menos processos serão escritos no disco, e como o acesso à RAM é muito mais rápido, seu computador pode parecer mais rápido. Você também deve ter em mente que isso pode reduzir o desempenho de I/O. Se você tem discos lentos ou faz qualquer coisa que demande muito I/O, isso pode até prejudicar o desempenho.
- Para efeito placebo: Muitos acreditam que um swappiness mais baixo acelerará o sistema. Sério, se você acha que seu sistema está mais rápido, isso pode ter o efeito de fazê-lo perceber que também está mais rápido.
Tenha em mente que reduzir o swappiness pode resultar em falhas e processos sendo aleatoriamente finalizados pelo sistema para liberar memória. Reduzir o swappiness será melhor se você tiver RAM suficiente disponível para que seu sistema funcione suavemente. Mas você deve manter o valor acima de “10”, já que algum uso de swap é bom de se ter.
Aumentando o swappiness
Aumentar o swappiness pode ter a vantagem geral de acelerar o I/O. Embora não seja frequentemente aconselhado, aumentar o swappiness pode ser útil se:
- Você executa algumas operações intensivas em I/O e tem HDDs lentos e antigos. Por exemplo: realizar backups ou edição em lote de imagens pode ser intensivo em I/O (uma exceção notável são os bancos de dados que são naturalmente intensivos em I/O, mas poderiam se beneficiar de um valor de swappiness mais baixo, como visto acima).
- Você tem pouca memória, mas discos relativamente rápidos. Neste cenário improvável, um valor mais alto de swappiness pode ajudar a gerenciar a memória de forma mais eficiente (embora configurá-lo muito alto possa novamente prejudicar o desempenho).
Como gerenciar o swappiness
Primeiro, você deve considerar se realmente precisa tocar nesse valor. Você está enfrentando problemas de desempenho? E, mais importante, você já tentou outros ajustes no sistema? Se não, provavelmente é melhor olhar para outros lugares primeiro. Mas se você tem um cenário específico em mente, pode querer continuar.
Em seguida, quão intenso é o seu uso de swap? Você pode descobrir isso com qualquer ferramenta de monitoramento de desempenho de sua escolha ou com o comando free. free -m lhe dará um instantâneo do uso da memória em megabytes. Para monitoramento contínuo, pode ser útil usar watch.
watch -n 1 free -mIsso executará o comando free -m a cada segundo e imprimirá sua saída até que você pressione “Ctrl + C”.

Como você vê acima, muito pouco swap está sendo usado pelo sistema sobre o qual este artigo foi escrito.
Agora, se você está realmente experimentando a troca, pode estar interessado em quanto disso é ativo. O comando vmstat dirá tudo o que você precisa saber sobre o uso da memória virtual do seu sistema (swap e RAM física juntas).
vmstat 1
Você deve verificar a coluna swap, onde si significa “swap in” e so significa “swap out”. Se os números forem altos, isso significa muita atividade de troca, que é um indicativo de problemas de memória baixa. Se você vê o uso de swap com free, mas pouca troca ativa, pode ser necessário ajustar o swappiness.
É também uma boa ideia estabelecer outras referências de desempenho, como I/O de disco, médias de carga, etc., para que quando você testar seus novos valores de swappiness, tenha algo com que comparar.
Para testar um valor diferente de swappiness, você pode configurá-lo temporariamente com o comando sysctl. Isso não requer reinicialização, e o efeito é imediato. Na verdade, reiniciar restaurará o valor padrão, então você está bastante seguro para experimentar:
sudo sysctl vm.swappiness=10Claro, você pode colocar qualquer valor em vez de “10” (entre “0” e “100”).
Depois de encontrar seu valor preferido, você pode alterar permanentemente a configuração do sistema editando “/etc/sysctl.conf”
sudo nano /etc/sysctl.confe adicionando as linhas
# Definir valor de swappiness
vm.swappiness=10ao final deste arquivo, com o valor configurado para sua preferência mais uma vez, é claro.
Conclusão
Reduzir o swappiness para “10” é frequentemente aconselhado como uma solução única, mas o uso real da técnica pode ser um pouco mais complicado do que isso. Ao estabelecer referências, conhecendo seu sistema, como você o utiliza e o que você precisa dele, você pode ajustar seu uso de swap e alcançar algum aumento de desempenho (seja interatividade ou I/O).