Diferença entre swap, zram e zswap: quando usar cada um

Aqui vai uma explicação clara, prática e técnica sobre swap, zram e zswap, com foco em quando usar cada um em servidores Linux (VPS, dedicado e cloud).


O que é Swap (tradicional)

Como funciona

  • Usa disco (SSD ou HDD) como extensão da RAM
  • Pode ser um arquivo ou partição
  • O kernel move páginas de memória pouco usadas para o disco

Vantagens

  • Simples e estável
  • Evita OOM Killer
  • Funciona em qualquer sistema Linux
  • Essencial para workloads previsíveis

Desvantagens

  • Muito mais lento que RAM
  • Pode causar I/O wait alto
  • Em SSDs baratos, pode reduzir a vida útil

Quando usar swap

✅ Servidores com SSD NVMe
✅ VPS de produção
✅ Bancos de dados (com swappiness bem ajustado)
✅ Quando estabilidade > performance absoluta

👉 Recomendado em 99% dos servidores, mesmo que pequeno
👉 Clique aqui para ver Qual deve ser o tamanho da sua partição de swap

Ativando Swap Tradicional (Arquivo de Swap)

Hoje em dia, o uso de um Swap File é preferível a uma partição fixa, pois é mais fácil de redimensionar.

# 1. Cria um arquivo de 4GB (ajuste o count conforme necessário)
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096

# 2. Define as permissões corretas (Segurança: apenas o root lê)
sudo chmod 600 /swapfile

# 3. Formata o arquivo como área de swap
sudo mkswap /swapfile

# 4. Ativa o arquivo
sudo swapon /swapfile

Para tornar permanente: Adicione a linha /swapfile none swap sw 0 0 ao arquivo /etc/fstab.


O que é ZRAM

Como funciona

  • Cria um dispositivo de swap comprimido na RAM
  • Os dados nunca vão para o disco
  • Usa CPU para compressão (LZO, LZ4, ZSTD)

Vantagens

  • Muito mais rápido que swap em disco
  • Excelente para sistemas com pouca RAM
  • Reduz drasticamente I/O
  • Ideal para VPS low-cost

Desvantagens

  • Consome CPU
  • Não substitui swap em disco
  • Pode causar pressão de memória se mal dimensionado

Quando usar zram

✅ VPS com 1–4 GB de RAM
✅ Servidores sem SSD rápido
✅ Ambientes com alta pressão de memória
✅ Containers e VMs leves

👉 Ótimo para VPS baratos e servidores pequenos

Ativando ZRAM (Otimizado)

A forma mais fácil e recomendada de gerenciar ZRAM é através do utilitário zram-generator (padrão no Fedora) ou zram-tools.

Exemplo no Ubuntu/Debian:

# 1. Instala o utilitário
sudo apt update && sudo apt install zram-config

# 2. O serviço inicia automaticamente. Para verificar:
zramctl

Exemplo via script manual (Configuração de 2GB):

# Carrega o módulo do kernel
sudo modprobe zram

# Define o algoritmo de compressão (zstd é o melhor equilíbrio)
echo zstd | sudo tee /sys/block/zram0/comp_algorithm

# Define o tamanho (ex: 2GB)
echo 2G | sudo tee /sys/block/zram0/disksize

# Ativa
sudo mkswap /dev/zram0
sudo swapon /dev/zram0 -p 100

Nota: A prioridade -p 100 garante que o sistema use a ZRAM antes de tocar no disco.

Exemplo no Almalinux 8 ou 9

No AlmaLinux (que é baseado no RHEL), a ativação do ZRAM é feita de forma muito eficiente através do zram-generator. Diferente do Ubuntu, o ecossistema RHEL prefere usar geradores de unidades do Systemd para criar esses dispositivos sob demanda.

Aqui está o passo a passo técnico para configurar no AlmaLinux 8 ou 9:


1. Instalação das Ferramentas

Primeiro, precisamos instalar o gerador que cria o dispositivo ZRAM e as ferramentas de compressão.

Bash

# Instale o EPEL (caso não tenha) e o zram-generator
sudo dnf install epel-release -y
sudo dnf install zram-generator zram-generator-defaults -y

2. Configuração do Dispositivo

O ZRAM no AlmaLinux é configurado através de um arquivo de texto. Vamos criar o arquivo de configuração:

Bash

sudo nano /etc/systemd/zram-generator.conf

Cole o seguinte conteúdo (exemplo otimizado para a maioria dos casos):

[zram0]
# Define o tamanho da ZRAM como metade da RAM física (máximo de 4GB)
zram-size = min(ram / 2, 4096)

# Algoritmo de compressão de alta performance
compression-algorithm = zstd

# Prioridade maior que a swap de disco (importante!)
swap-priority = 100

# Ponto de montagem para logs/cache (opcional, aqui focado em swap)
fs-type = swap

Por que usar zstd?

O algoritmo zstd oferece a melhor taxa de compressão com o menor impacto de CPU comparado ao antigo lzo.


3. Aplicando as Mudanças

Para que o Systemd reconheça o novo gerador sem precisar reiniciar o servidor:

# Recarrega as unidades do systemd
sudo systemctl daemon-reload

# Inicia o dispositivo ZRAM
sudo systemctl start /dev/zram0

4. Verificação Real

Para confirmar que o AlmaLinux está comprimindo sua RAM, use o comando zramctl ou swapon:

# Ver detalhes técnicos de compressão
zramctl

# Ver a prioridade em relação ao disco
swapon --show


O que é ZSWAP

Como funciona

  • Camada antes do swap tradicional
  • Comprime páginas antes de gravar no disco
  • Usa RAM como cache comprimido
  • Se encher, envia para o swap normal

Vantagens

  • Reduz I/O em disco
  • Transparente (não cria novo swap)
  • Melhor que swap puro
  • Menor consumo de CPU que zram

Desvantagens

  • Precisa de swap em disco
  • Configuração via kernel parameters
  • Menos eficiente que zram em sistemas muito pequenos

Quando usar zswap

✅ Servidores com swap em SSD
✅ Produção com alta carga
✅ Bancos de dados e aplicações PHP
✅ Quando você quer otimizar swap sem mudar arquitetura

👉 Excelente para produção estável

Ativando ZSWAP

O ZSWAP já está presente no kernel, ele apenas precisa ser “ligado” via parâmetros de inicialização, pois ele atua como um cache para uma swap existente no disco.

Passos Reais:

  1. Edite o GRUB: sudo nano /etc/default/grub
  2. Adicione os parâmetros na linha GRUB_CMDLINE_LINUX_DEFAULT: zswap.enabled=1 zswap.compressor=zstd zswap.max_pool_percent=25
    • max_pool_percent=25: Define que o ZSWAP pode ocupar até 25% da sua RAM total.
  3. Atualize o GRUB e reinicie: sudo update-grub sudo reboot
  4. Verifique se está funcionando: grep -r . /sys/module/zswap/parameters/

Dica de Ouro: “Swappiness”

Independente da escolha, você pode controlar quão “agressivo” o kernel é ao mover dados para a swap alterando o valor de swappiness (0 a 100):

  • sudo sysctl vm.swappiness=10 (Recomendado para SSDs e ZSWAP – evita swap precoce).
  • sudo sysctl vm.swappiness=100 (Recomendado para ZRAM – prioriza a compressão máxima).

Edite o arquivo /etc/sysctl.conf e insira vm.swappiness=**utilize o valor desejado conforme acima**. Salve o arquivo e aplique as alterações. sysctl -p


Comparação rápida

TecnologiaUsa DiscoUsa RAMCompressãoMelhor uso
SwapProdução padrão
ZRAMVPS pequenos
ZSWAPProdução otimizada

Qual usar em cada cenário

VPS pequeno (1–2 GB RAM)

ZRAM + swap pequeno (opcional)
✔ Swappiness alto (60–100)


VPS médio (4–8 GB RAM)

Swap em SSD + zswap
✔ Swappiness moderado (10–30)


Servidor dedicado / produção

Swap em NVMe + zswap
✔ Swappiness baixo (5–10)


WordPress / PHP-FPM / MariaDB

✔ Swap sempre presente
✔ Preferir zswap
❌ Evitar zram em cargas altas


Erro comum (importante)

❌ Achar que zram ou zswap substituem RAM
❌ Rodar servidor sem swap
❌ Usar swap em HDD lento para produção

Swap não é performance, é segurança.


Recomendação prática (resumo)

  • Sempre tenha swap
  • ZRAM → VPS pequeno e barato
  • ZSWAP → produção moderna
  • Swap puro → melhor que nada

Abaixo está a configuração ideal de swap, zram e zswap por tamanho de RAM, pensada para Linux em produção (VPS, cloud e dedicado) e já otimizada para SEO.


Configuração ideal de swap, ZRAM e ZSWAP por tamanho de RAM

Servidores com até 1 GB de RAM

Cenário: VPS muito pequeno, alto risco de OOM Killer.

Configuração recomendada

  • ZRAM: 50–75% da RAM
  • Swap em disco: 512 MB–1 GB (se houver SSD)
  • ZSWAP: ❌ não recomendado
  • Swappiness: 80–100

Justificativa

ZRAM reduz drasticamente I/O e evita travamentos em VPS limitados. ZSWAP consome RAM extra e não compensa.


Servidores com 2 GB de RAM

Cenário: VPS básico para sites leves e serviços pequenos.

Configuração recomendada

  • ZRAM: 25–50% da RAM
  • Swap em SSD: 1–2 GB
  • ZSWAP: ❌ opcional (geralmente desnecessário)
  • Swappiness: 60–80

Servidores com 4 GB de RAM

Cenário: WordPress, PHP-FPM, pequenos bancos de dados.

Configuração recomendada

  • Swap em SSD: 2–4 GB
  • ZSWAP: ✅ ativado
  • ZRAM: ❌ não recomendado
  • Swappiness: 20–40

Justificativa

ZSWAP reduz escrita em disco e melhora latência sem pressionar CPU.


Servidores com 8 GB de RAM

Cenário: Produção média, múltiplos sites ou containers.

Configuração recomendada

  • Swap em SSD/NVMe: 4–8 GB
  • ZSWAP: ✅ ativado
  • ZRAM: ❌ evitar
  • Swappiness: 10–20

Servidores com 16 GB de RAM

Cenário: Bancos de dados, aplicações críticas, alta estabilidade.

Configuração recomendada

  • Swap em NVMe: 4–8 GB
  • ZSWAP: ✅ ativado
  • ZRAM: ❌ desnecessário
  • Swappiness: 5–10

Servidores com 32 GB ou mais

Cenário: Bancos de dados grandes, clusters, produção pesada.

Configuração recomendada

  • Swap: 8–16 GB
  • ZSWAP: opcional (avaliar caso a caso)
  • Swappiness: 1–5

Observação

Em ambientes bem dimensionados, swap vira seguro contra picos, não recurso ativo.


Tabela resumo

RAMSwapZRAMZSWAPSwappiness
≤1 GB512 MB–1 GB50–75%80–100
2 GB1–2 GB25–50%60–80
4 GB2–4 GB20–40
8 GB4–8 GB10–20
16 GB4–8 GB5–10
32 GB+8–16 GB⚠️1–5

Erros comuns

❌ Usar ZRAM em servidor grande de produção
❌ Rodar servidor sem swap
❌ Swappiness alto em banco de dados
❌ Swap em HDD lento


Conclusão

A configuração ideal de swap no Linux depende do tamanho da RAM, tipo de workload e armazenamento.
Para VPS pequenos, ZRAM salva o sistema.
Para produção moderna, ZSWAP + swap em SSD/NVMe é o melhor equilíbrio entre performance e estabilidade.

Clique aqui e consulte nossos planos de Gerenciamento de Servidor