sexta-feira, 9 de janeiro de 2026

O quê é SWAP e configurando-a mais adequadamente

O quê é SWAP e configurando-a mais adequadamente 

    SWAP ou arquivo de troca é uma "extensão mais lenta" (normalmente criada em disco como partição) da memória RAM para onde os dados são enviados quando a RAM do sistema está cheia; é como se fosse "mais memória RAM" disponível só que no disco, seja em partição ou arquivo. No entanto o uso da SWAP em disco é muito mais lenta do que a memória RAM e quando ela começa a ser utilizada nota-se uma maior atividade de disco justamente pela escrita/leitura de dados que o sistema está fazendo e isso é agravado quando o disco é rígido (lentidão de acesso) ou mesmo SSD (aumenta o desgaste do dispositivo).

    A SWAP é criada normalmente na instalação do sistema mas há distribuições - como o Arch - que implementam a ZRAM SWAP em vez dela em disco e normalmente essa SWAP em disco costuma ter ou o dobro ou a mesma quantidade da RAM total do sistema. O sistema em si está bem configurado para dar as devidas prioridades de uso entre a RAM e a SWAP mas podemos dar uma ajudinha aqui.

    O arquivo de configuração de como o sistema lida com a prioridade de uso entre RAM e SWAP é /etc/sysctl.conf ou dentro de alguma outra pasta que possua essa configuração como a /etc/sysctl.d/. O parâmetro é o vm.swappness e vamos então configurá-lo de forma mais adequada. Veja se o arquivo /etc/sysctl.conf existe na sua máquina; se não existir, crie o seguinte arquivo na pasta /etc/sysctl.d/ se lá já não houver um sysctl.conf:

sudo mkdir -p /etc/sysctl.d

sudo nano /etc/sysctl.d/99-ramswap.conf

    Coloque ali (ou procure pela linha):

vm.swappness = 20

    Salve o arquivo e dê um " sudo sysctl --system " sem as aspas para carregar as novas configurações. Essa configuração diz "mais ou menos" ao sistema que quando a memória RAM estiver 80% usada é para começar a usar a SWAP - no caso, em disco. Outros valores podem ser testados, como 10 ou 30, tudo vai depender de como se comporta a sua máquina. Essa configuração posterga o uso da SWAP - no caso, em disco - para que o sistema tenha mais responsividade. O valor padrão sem arquivo de configuração fica em torno de 60 o que é adequado para a maioria das máquinas.

    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 99-ramswap.conf que vemos antes 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. Nessa configuração a ZRAM vai ser sempre a SWAP principal (prioridade 100); se o sistema também tiver uma SWAP em disco só quando a ZRAM estiver "no talo" é que a SWAP em disco passará a ser utilizada mas sempre com a prioridade de uso para a ZRAM.
  

Nenhum comentário:

Postar um comentário