Caras, estou numa luta pessoal para otimizar meu Debian, então acabei chegando a essa questão do swap. Minha máquina tem uma arquitetura antiga, porém mista, com um SSD e um HD, mas o SSD é pequeno e eu quero dedicá-lo apenas para o S.O. e mais nada. Criei meu swap no HD, mas, como vocês sabem, esse tranqueira mecânica é lenta demais, ainda que rode a 7200 RPM. Não tem comparação. Aí descobri a ZRAM.
Pô, a ZRAM cria um dispositivo de bloco comprimido na RAM para transformá-lo num swap rápido. Ela também pode ser usada como um disco temporário (como um tmpfs mais eficiente). Tá, eu sei: usa-se mais RAM para efetivar essa coisa, mas nada demais se você tem, por exemplo, pelo menos 16Gb de RAM.
Para efetivar a ZRAM é preciso preparar o kernel. O .config precisa ter essas entradas antes da compilação:
CONFIG_ZRAM=y # Suporte ao dispositivo zram (compilado diretamente no kernel)
CONFIG_ZRAM=m # (alternativamente, como módulo)
CONFIG_ZSMALLOC=y # Alocador de memória comprimida usado pela ZRAM
CONFIG_CRYPTO_LZ4=y # Algoritmos de compressão (LZ4, ZSTD, etc.)
CONFIG_CRYPTO_ZSTD=y
Depois de instalar o kernel novo é preciso fazer umas coisinhas. Preparei esse script aqui para ajudar:
#!/bin/bash
echo "Instalando zram-tools..."
sudo apt update
sudo apt install -y zram-tools
echo "Configurando ZRAM com metade da RAM disponível..."
sudo tee /etc/default/zramswap > /dev/null <<EOF
# Configuração personalizada para zramswap
ALGO=zstd
PERCENT=50
EOF
echo "Desativando swap do disco (se existir)..."
sudo swapoff -a
echo "Ativando zramswap.service..."
sudo systemctl enable --now zramswap.service
echo "Status atual da swap:"
swapon --show
Já utilizei um sistema parecido com um SSD de 50GB e um HD mecânico de 1TB. Na hora do particionamento, criava a partição EFI como a primeira, a partição root como a segunda e a swap na última partição do SSD com o dobro da memória RAM de tamanho. Apenas deixava HOME no HD mecânico de 1TB.
Acho que o zram so ficou mais rapido pq o swap tava no HD mecanico e não no SSD.
SWAP dentro da RAM não seria contraproducente? Se o swap é uma área de escape da memória ram, coloca-lá dentro da ram seria andar em circulo. Além disso, com a compactação, vc ainda perde tempo de processamento.
@help vc atingiu na ferida da zram.
Realmente, ela não é perfeita, a unica solução para esse problema é instalar mais RAM na maquina, o resto é apenas mitigações.
Queria aproveitar teu tópico pra tirar uma dúvida.
Eu fiz uma instalação padrão do Fedora, e por padrão ele definiu 8 GB como SWAP, o problema é que eu tenho 32 GB de RAM e eu nunca vi esses 8 GB sendo usados, eles são obrigatórios no sistema? Eu posso desativar eles?
Tem zswap tmb.
o zswap é mais adequado quando vai ter swapfile em armazenamento.
Isso pq o zswap faz a troca somente daquilo que é pouco usado para o swapfile, já o zram não leva isso em conta.
Pela minha experiência de cinco meses de uso do Debian, a instalação do zram é bem mais simples, basta instalar o pacote systemd-zram-generator, desabilitar a swap tradicional no /etc/fstab, caso use, e reiniciar a máquina. Ele configura o tamanho da zram para 50% da sua memória RAM total. Até mesmo no Arch Linux, o sistema que estou usando agora e era para ter mais passos, é só instalar o pacote zram-generator, também desabilitar a swap tradicional, caso use, e reiniciar a máquina. Ele é bem útil se comparado a swap tradicional, já que não depende de um armazenamento extra e não gera escritas desnecessárias, principalmente em NVMe/SSD.
Não vejo muito sentido em utilizar a zram visto que a própria distro faz o gerenciamento de cache na memória vai liberando ou ocupado a RAM de acordo com a demanda do PC. Zram é mais uma coisa na memoria para o sistema lidar e além de em algumas distro não ser possível hibernar.
Uma das vantagens da partição swap ou swapfile é poder hibernar o PC, o que ja percebi é que se tiver um bom espaço swap a volta da hibernação é quase que instantâneo do que você tiver um swap pequeno onde o PC demora e chega a congelar por alguns instantes dependendo da quantidade de coisas que estavam na memória antes de hibernar.
Cada distro determina uma quantidade de memoria swap, 10%, 25%, 50%… da memória RAM e não recomendaria desabilitá-la, por mais que você abra o gerenciador de tarefas e não veja o uso da swap o kernel por alguns instantes acaba sim utilizando a swap.