ZRAM SWAP é um bloco de memória RAM comprimida usada como SWAP, muito mais rápida do que o disco já que esse bloco está na RAM da máquina. Várias distribuições implementam a ZRAM como SWAP em vez da convencional (em disco) justamente pela rapidez com que a manipulação dos dados é feita: a RAM é muito mais rápida e como é um bloco comprimido (o processador se encarrega de fazer o trabalho de compressão/descompressão em tempo real), um bloco de 512MB pode chegar a 2GB de tamanho "relativo" graças ao algoritmo de compressão que for escolhido, normalmente o ZSTD ou LZ4.
Mas nem tudo é como deveria ser, já que essa compressão/descompressão requer processamento e se a máquina tiver um processador mais "perereca" podem ocorrer falhas nesse processo de compressão/descompressão de dados, podendo fazer com que dados não sejam carregados de modo adequado.
Vamos ver como instalar a ZRAM no Debian, abra o Terminal e instale o recurso com o primeiro comando e habilite-o com os outros dois:
sudo apt install zram-tools
sudo systemctl enable zramswap
sudo systemctl start zramswap
O arquivo de configuração está em /etc/default/zramswap e vamos ver as linhas que interessam:
- ALGO=zstd - refere-se a qual algoritmo está sendo usado, pode ser o zstd, lz4, lzo e outros desde que estejam presentes no sistema. O zstd comprime mais mas é mais lento; o lz4 comprime menos mas é mais rápido;
- PERCENT=50 - refere-se à quantidade (%) de memória RAM total que vai ser usada como bloco dinâmico;
- #SIZE=512 - refere-se à quantidade em MB de memória RAM que vai ser usada como bloco dinâmico. Se usar essa não é para usar a de cima e vice-versa);
- PRIORITY=100 - a prioridade de uso da ZRAM em relação à outras swaps presentes no sistema.
Para configurá-la mais adequadamente, edite o arquivo de configuração e coloque em PERCENT o valor de 50 e naquele arquivo do sysctl que vemos na página anterior coloque o valor de vm.swappness como 60. Isso vai fazer com que a ZRAM pegue 50% da memória total da máquina e a use como SWAP e o valor de 60 faz com que o sistema comece a usar a ZRAM antes da RAM ficar muito cheia, mesmo porque a ZRAM concorre em uso com os demais dados da RAM. Essa configuração (swappness maior que a porcentagem da ZRAM) evita que os dados entre os dois blocos se "empurrem".
Podem ser usados outros valores para PERCENT/SWAPPNESS como 20/30, 40/50 (sempre com percent maior do que a swappness) para ver o comportamento da máquina de modo a evitar erros nos processos de compressão/descompressão, como esses mostrados abaixo:
#################################################################
-- Estatísticas do ZRAM (/sys/block/zram0/mm_stat) --
Bytes originais (descomprimidos): 282 MB
Bytes comprimidos (armazenados): 56 MB
Taxa de compressão: 5,02 x
Páginas usadas: 64704512
Operações de compressão: 65581056
Operações de descompressão: 941
Falhas de compressão: 0
Falhas de descompressão: 305
-- Verificação rápida de erros de memória (dmesg) --
dmesg: leitura de buffer de kernel falhou: Operação não permitida
Nenhum erro crítico de memória ou zram encontrado no dmesg.
-- Recomendações --
Há falhas de descompressão! Recomenda-se testar a RAM com memtest86+
Diagnóstico finalizado.
####################################################################
Esses erros normalmente ocorrem por uso de processadores mais "pererecas" que podem não dar conta de ambos os processos de compressão e descompressão, além de eventuais problemas na memória RAM.