9 min de leitura · Guia técnico
Swap no Linux é um espaço em disco usado como extensão da memória RAM quando esta se esgota. O sistema move dados menos utilizados da RAM para o swap, liberando memória para processos ativos. Para configurar swap adequadamente:
- Verifique o uso atual de memória com free -h
- Crie arquivo de swap com dd ou fallocate
- Configure permissões e ative com swapon
- Ajuste swappiness conforme necessidade
- Adicione entrada no /etc/fstab para persistência
- Monitore performance com vmstat
Pré-requisitos
- Acesso root ao servidor Linux (Ubuntu 22.04 LTS ou similar)
- Espaço livre em disco (mínimo 1GB para swap básico)
- Conhecimento básico de comandos Linux
- Backup dos dados importantes antes de modificações
Como funciona o sistema de swap no Linux
O mecanismo de swap atua como uma válvula de segurança para o gerenciamento de memória. Quando a RAM física atinge cerca de 80-90% de utilização, o kernel Linux inicia o processo de paginação, movendo páginas de memória menos acessadas para o espaço de swap no disco.
Este processo é controlado pelo parâmetro swappiness, que define a agressividade com que o sistema utiliza swap. Valores entre 0-100 determinam quando o kernel prefere liberar cache de arquivos versus mover processos para swap.
cat /proc/sys/vm/swappiness
O valor padrão é geralmente 60, mas para servidores de produção, valores entre 10-20 são mais apropriados para minimizar latência.
Tipos de swap disponíveis
Existem duas implementações principais: swap partition e swap file. Partições oferecem performance ligeiramente superior devido ao acesso direto ao disco, enquanto arquivos de swap proporcionam flexibilidade para redimensionamento sem reparticionamento.
Para verificar configurações atuais:
swapon --show
free -h
Criando e configurando swap file no Ubuntu
A criação de arquivo de swap é o método mais flexível para adicionar espaço de troca. Este processo permite ajustar o tamanho conforme necessário sem modificar partições existentes.
Atenção: Certifique-se de ter espaço suficiente em disco antes de prosseguir.
- Crie o arquivo de swap com tamanho desejado:
sudo fallocate -l 2G /swapfile
- Configure permissões restritivas por segurança:
sudo chmod 600 /swapfile
- Formate o arquivo como área de swap:
sudo mkswap /swapfile
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890
- Ative o swap imediatamente:
sudo swapon /swapfile
- Verifique se foi ativado corretamente:
sudo swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -2
Tornando a configuração permanente
Para que o swap seja ativado automaticamente após reinicializações, adicione uma entrada no arquivo /etc/fstab:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Otimizando performance do swap
O ajuste de swappiness é crucial para balancear performance e utilização de memória. Valores baixos priorizam manter processos na RAM, enquanto valores altos favorecem liberação de cache para swap.
Para servidores web e aplicações que requerem baixa latência:
sudo sysctl vm.swappiness=10
Para tornar permanente, edite /etc/sysctl.conf:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
Configurando cache pressure
O parâmetro vfs_cache_pressure controla a tendência do kernel em recuperar memória usada para cache de diretórios e inodes:
sudo sysctl vm.vfs_cache_pressure=50
Valores menores que 100 fazem o kernel reter cache por mais tempo, melhorando performance de I/O.
Monitoramento em tempo real
Use vmstat para acompanhar atividade de swap:
vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 1234567 89012 345678 0 0 1 2 3 4 5 6 89 0 0
As colunas 'si' (swap in) e 'so' (swap out) mostram atividade de paginação. Valores consistentemente altos indicam necessidade de mais RAM.
Dimensionamento adequado de swap
O cálculo do tamanho ideal de swap depende da quantidade de RAM disponível e do tipo de carga de trabalho. Servidores com aplicações que consomem muita memória requerem estratégias diferentes de desktops convencionais.
Diretrizes recomendadas para servidores:
- Até 2GB RAM: Swap = 2x RAM (permite hibernação e margem de segurança)
- 2GB a 8GB RAM: Swap = 1x RAM (balanceio entre segurança e uso de disco)
- 8GB a 64GB RAM: Swap = 4GB a 8GB (suficiente para emergências)
- Acima de 64GB RAM: Swap = 4GB (apenas para dump de kernel)
Considerações para diferentes workloads
Servidores de banco de dados como MySQL ou PostgreSQL se beneficiam de swap mínimo (2-4GB) com swappiness muito baixo (1-5) para evitar que páginas de dados sejam movidas para disco.
Aplicações web com PHP ou Node.js podem usar configurações padrão, mas monitore vazamentos de memória que podem causar uso excessivo de swap.
Para verificar processos que mais utilizam swap:
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n
Gerenciamento avançado de múltiplos swaps
O Linux permite múltiplas áreas de swap com diferentes prioridades. Esta funcionalidade é útil para distribuir carga entre dispositivos ou criar hierarquia de performance.
Para criar swap adicional com prioridade específica:
sudo fallocate -l 1G /swapfile2
sudo chmod 600 /swapfile2
sudo mkswap /swapfile2
sudo swapon -p 5 /swapfile2
Prioridades mais altas (números maiores) são utilizadas primeiro. Para verificar prioridades:
cat /proc/swaps
Filename Type Size Used Priority
/swapfile file 2097148 0 -2
/swapfile2 file 1048572 0 5
Removendo swap temporariamente
Para desativar swap específico sem reinicialização:
sudo swapoff /swapfile2
Para reativar:
sudo swapon /swapfile2
Atenção: Nunca desative todo o swap em sistemas com pouca RAM disponível, pois pode causar travamentos.
Problemas comuns e como resolver
Sintoma: Sistema lento com swap usage alto
Causa: Swappiness muito alto ou RAM insuficiente para a carga de trabalho.
Solução: Reduza swappiness para 10-20 e monitore com vmstat 1. Se problema persistir, considere upgrade de RAM.
Sintoma: Erro "fallocate: fallocate failed: Operation not supported"
Causa: Sistema de arquivos não suporta fallocate (como alguns sistemas NFS).
Solução: Use dd como alternativa: sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
Sintoma: Swap não ativa após reinicialização
Causa: Entrada incorreta ou ausente no /etc/fstab.
Solução: Verifique sintaxe no fstab: sudo mount -a para testar. Corrija formato: /swapfile none swap sw 0 0
Sintoma: Performance degradada em SSD
Causa: Uso intensivo de swap causando wear excessivo no SSD.
Solução: Configure swappiness=1, monitore com iostat -x 1 e considere adicionar RAM física.
Perguntas frequentes sobre swap no Linux
Qual o tamanho ideal de swap para meu servidor?
Para servidores com até 2GB de RAM, use swap igual ao dobro da RAM. Entre 2-8GB de RAM, use swap igual à quantidade de RAM. Acima de 8GB, 4-8GB de swap são suficientes para a maioria dos casos.
Swap em SSD prejudica a vida útil do disco?
Sim, o uso intensivo de swap em SSD pode reduzir sua vida útil devido às operações de escrita constantes. Configure swappiness baixo (10-20) e monitore o uso para minimizar o impacto.
Como saber se meu servidor está usando swap excessivamente?
Use os comandos 'free -h' para ver uso atual e 'vmstat 1' para monitorar atividade em tempo real. Se swap usage estiver constantemente acima de 50% ou houver muitas operações si/so, considere adicionar mais RAM.
Posso desabilitar o swap completamente no Linux?
Tecnicamente sim, mas não é recomendado. Mesmo com RAM abundante, o swap serve como segurança contra vazamentos de memória e permite que o kernel mova páginas inativas para disco, liberando RAM para cache.
Swap file é melhor que swap partition?
Swap file oferece mais flexibilidade para redimensionar sem reparticionamento, enquanto swap partition tem performance ligeiramente melhor. Para VPS e servidores modernos, swap file é geralmente a escolha mais prática.
Conclusão
- Configure swap adequadamente baseado na quantidade de RAM e tipo de workload do servidor
- Monitore regularmente o uso de swap com ferramentas como vmstat e ajuste swappiness conforme necessário
- Mantenha backups antes de modificações e teste configurações em ambiente de desenvolvimento primeiro
Leia também
- Otimizar cache Redis para aplicações PHP no Ubuntu 22.04
- Configurar Alertas Automáticos com Zabbix no Ubuntu
- Otimizar MySQL: como reduzir uso de memória e acelerar consultas
Precisa de ajuda com configuração de servidor Linux?
Nossa equipe especializada pode auxiliar na otimização de performance e configuração adequada de swap para seu ambiente. Oferecemos suporte técnico completo para servidores VPS Linux.