Sobre Swap e Zram

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

Eu coloquei zram no meu Debian 12 e o boot ficou mais lento.É normal? Não useu seu script, fiz uma instalação com outro tutorial.

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.

2 curtidas

Deve ter como manter híbrido, swapfile + zram, seria a solução completa

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?

Esses 8Gb estão te fazendo falta? Se não, como eu acredito, deixa lá. Atrapalhar não vai. :wink:

E apenas Recomendado, como o pessoal fala e uma “area de escape” caso o uso eleve ao maximo, vc pode não ter visto ainda mas não duvide

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.

2 curtidas

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.

1 curtida

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.