Essa é a mais complicada. A ZRAM é uma swap "montada" dentro da memória RAM onde o bloco reservado dinamicamente é compactado e descompactado de modo a caber mais dados no mesmo espaço e tudo isso é feito em tempo real pelo processador. a ZRAM é muito mais rápida que o hdd e o ssd e o uso dela depende do que a máquina oferece em termos de processamento:
- Processador relativamente bom (i3 3ª geração pra cima) com pouca RAM (2GB DDR3);
- Processador perereca (C2D E7400 ou outro pior ainda) com até 4GB de RAM;
- Processador "girino" (pior que perereca) ou perereca com RAM DDR2.
Cada caso é um caso. usar só a Swap em disco hdd é sofrível; em ssd diminui a vida útil do componente; em processador perereca podem haver muitos erros de compactação/descompactação devido às limitações do hardware que não consegue lidar com o volume de trabalho necessário além de eventuais problemas nos pentes de memória ou mesmo do processador. Um exemplo de erros que podem ocorrer:
######################################################################
=== Monitor ZRAM em tempo real ===
Atualizado: qua 06 ago 2025 10:41:13 -03
Originais (descomprimidos): 667MB
Comprimidos (armazenados): 250MB
Taxa de compressão: 2.66x
Páginas usadas: 270573568
Páginas totais (não usado): 0
Operações compressão: 304799744
Operações descompressão: 2987
Falhas na compressão: 37367
Falhas na descompressão: 8593
SwapTotal: 1835000 kB
SwapFree: 988976 kB
#####################################################################
Os dados mostrados em:
- Operações compressão: 304799744
- Operações descompressão: 2987
- Falhas na compressão: 37367
- Falhas na descompressão: 8593
estão um pouco altos nas duas últimas linhas e isso indica falha no hardware (aqui não é o caso) ou processador não dando conta das requisições necessárias. Essas falhas mostradas podem levar a perda de dados onde os programas afetados param de responder ou então deixar o sistema "loucão" tentando organizar a zona de dados perdidos. É como uma repartição pública que usa arquivos em papel e depois tem que organizar tudo depois que pegou fogo.
Então aqui eu fiz a swap usando a ZRAM e swap em arquivo, distribuindo as prioridades de uso entre memória RAM, ZRAM e swap em disco. Vamos ver como fazer isso. No Arch - que estou usando - deve ser instalado o pacote zram-generator (sudo pacman -S zram-generator). Edite (ou crie) o arquivo /etc/systemd/zram-generator.conf e coloque dentro:
[zram0]
zram-size = 768
compression-algorithm = lz4
swap-priority = 100
Em zram-size é o valor desejado da ZRAM; nesse caso a minha ZRAM é de tamanho 768MB ou pouco mais de 30% da RAM total. O "correto" é usar até 25% da RAM total em máquinas pererecas e 40%-50% em máquinas melhores. Um sistema de 4GB pode usar uma ZRAM de 1,5GB (1500) ou mesmo de 2GB (2000); um sistema de 2GB de RAM pode usar 480MB (480) ou mesmo 768MB (768) como no nosso exemplo. A compressão de dá pelo algoritmo lz4 presente no sistema (poderia ser também o zstd que dá mais compressão mas pede mais do processador) e a linha swap-priority marca como prioridade total de uso quando o kernel começar a mandar dados para a swap.
Depois de criado e salvo o arquivo, coloque o recurso para iniciar junto do sistema:
# sudo systemctl enable systemd-zram-setup@zram0.service
# sudo systemctl restart systemd-zram-setup@zram0.service
Para saber os módulos ativos no kernel:
# lsmod | grep -iE 'zstd|lz4|lzo|deflate|bzip2|xz|gzip'
Se o lz4 ou zstd configurados no zram não aparecer, você deve carregá-los editando o arquivo:
# sudo nano /etc/modules-load.d/compress.conf
e coloque lá dentro:
zstd_compress
lz4_compress
lzo_compress
Salve o arquivo e reinicie a máquina mas só faça isso se não tiver o módulo configurado na ZRAM carregado, como vou mostrar abaixo.
Para saber o algoritmo ativo na zram:
cat /sys/block/zram0/comp_algorithm
O módulo ativo vai aparece entre colchetes.