Use Zswap para Melhorar o Desempenho em PCs Linux com Pouca Memória RAM

Vamos encarar a realidade, alguns de nós não atualizamos com frequência. Ou, pelo menos, como usuários de Linux, gostamos de reaproveitar nossos laptops/computadores mais antigos. Muitas distribuições funcionam confortavelmente em sistemas com pouca memória RAM (Memória de Acesso Aleatório). No entanto, os navegadores não são tão indulgentes, exigindo cada vez mais memória à medida que a Internet evolui.
Enquanto um sistema com o ambiente de desktop LXDE pode consumir apenas 150MB de RAM após a inicialização, Chromium, Chrome ou Firefox rapidamente consomem centenas de megabytes e até vários gigabytes de RAM ao abrirmos algumas abas.
E é aí que acontece! O disco rígido começa a fazer aquele som de moagem. A música começa a falhar. Quando trocamos para outro aplicativo, leva dezenas de segundos até ele aparecer na tela. Até o cursor do mouse pode começar a atrasar. Esse é o efeito da thrashing de disco.
O que é Thrashing de Disco?
Primeiro, precisamos entender o swap. Quando ficamos sem RAM livre, os dados de aplicativos que o sistema operacional não acessou há muito tempo são movidos para a área de swap. Isso geralmente está em um dispositivo de armazenamento físico. Fazendo isso, o sistema operacional pode liberar um pouco de espaço de memória que um programa precisa agora. Dessa forma, uma aba em nosso navegador que não acessamos na última hora pode ser trocada para o disco rígido. Agora o editor de imagens GIMP pode ser executado. Quando o fechamos e voltamos para aquela aba antiga, o sistema operacional a troca de volta para a memória (lê-a do disco e a copia de volta para a memória de acesso aleatório).

Esse mecanismo funciona bem quando trocamos pequenas quantidades de dados. Mas quando, digamos, apenas 2GB de RAM estão disponíveis e todos os programas que temos abertos precisam de 4GB, o sistema operacional tem que trocar constantemente. Mover dados da memória para o disco, do disco para a memória e de volta novamente, constantemente, é muito lento, especialmente com discos rígidos. Em tal situação, o dispositivo de armazenamento não consegue atender aos pedidos rapidamente o suficiente. Resumindo, quando o thrashing de disco ocorre, as coisas ficam muito lentas.
Drives SSD São Ótimos para Swap
Há um mito ainda circulando na Internet: “Nunca configure swap em SSD. Isso vai matar seu dispositivo!” Isso era verdade alguns anos atrás, mas não mais. Na verdade, configurar swap em um drive SSD leva a ótimos resultados. Se o computador inclui um dispositivo SSD que tem um bom desempenho de leitura/gravação aleatória (pelo menos 300MB), configure uma partição swap nele e ignore o resto deste artigo. Quando o sistema operacional precisa trocar 1GB de dados, levará menos de cinco segundos, enquanto em um disco rígido levaria mais de um minuto.
Como Reduzir Significativamente o Thrashing de Disco no Linux

Felizmente, a maioria dos dados armazenados em RAM é muito comprimível. Isso significa que, se pegarmos 200MB de dados armazenados na memória e comprimirmos, podemos reduzir o tamanho para 100MB. Consequentemente, significa que o sistema terá que escrever muito menos dados no disco ao trocar.
Imagine que, em vez de esperar trinta segundos para mudar para um programa, você tenha que esperar quinze. É uma melhoria palpável. Mas, na verdade, a aceleração é muito mais significativa (pode levar menos de dez segundos) porque a ferramenta que usaremos é mais sofisticada do que isso. Ela envia inteligentemente para o disco apenas os pedaços que não podem ser comprimidos, mantendo o resto em uma porção reservada de memória. Se você quiser ler mais sobre seu funcionamento interno, confira a página oficial do kernel Linux sobre zswap.
Uma versão simples dos benefícios que obtemos ao usar zswap é que, em vez de desacelerações horríveis quando ficamos sem memória, temos desacelerações toleráveis e leves que duram segundos ao invés de dezenas de segundos ou até minutos.
Como Ativar o zswap em Distribuições Baseadas em Debian (Ubuntu, Linux Mint, etc.)
Abra um aplicativo de terminal e execute este comando para editar o arquivo de configuração do modelo do bootloader Grub:
sudoedit /etc/default/grub
Com as teclas de cursor, navegue até a linha que começa com “GRUB_CMDLINE_LINUX_DEFAULT”. Dentro das aspas, adicione o seguinte texto:
zswap.enabled=1
Por exemplo, uma linha que era GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" se torna GRUB_CMDLINE_LINUX_DEFAULT="quiet splash zswap.enabled=1".
Para salvar o arquivo, pressione Ctrl + X, seguido de “y” e depois Enter.
Gere os novos arquivos de configuração do Grub de acordo com o modelo que editamos anteriormente:
sudo update-grub
Reinicie e o módulo zswap será habilitado automaticamente.
Como Ativar o zswap no Fedora e OpenSUSE
O procedimento aqui é semelhante ao da seção anterior, mas com algumas diferenças. Edite o arquivo de configuração do modelo do Grub.
sudoedit /etc/default/grubAdicione zswap.enabled=1 dentro das aspas, na linha que começa com GRUB_CMDLINE_LINUX.

Pressione Ctrl + X, seguido de “y” e depois Enter para salvar o arquivo.
Dependendo de o seu computador inicializar de um sistema BIOS ou UEFI, o arquivo de configuração do Grub é gerado em um caminho diferente. Para descobrir onde ele está atualmente, digite o seguinte comando:
sudofind/boot/-name grub.cfg
Use o caminho que é exibido aqui no próximo comando. Por exemplo, no nosso caso, o caminho encontrado foi “/boot/grub2/grub.cfg”, então iremos adicioná-lo ao final do próximo comando após “-o”:
sudo grub2-mkconfig -o/boot/grub2/grub.cfgReinicie o computador. Após reiniciar, verifique se o módulo está ativo:
cat/sys/module/zswap/parameters/enabledSe a saída for “Y”, então o módulo está funcionando corretamente.
Como Ativar o zswap no Arch Linux
Instale o pacote systemd-swap:
sudo pacman -Sy systemd-swap
Faça com que este pacote funcione sua mágica na inicialização:
sudo systemctl enable systemd-swapInicie agora, sem reiniciar:
sudo systemctl start systemd-swapPara verificar se tudo funcionou como esperado, verifique se o módulo zswap está habilitado:
cat/sys/module/zswap/parameters/enabled
Se a saída for “Y”, isso significa que o módulo está ativo.
Como Ativar o zswap em Diferentes Distribuições
De maneira geral, ativar o zswap na inicialização é tão simples quanto adicionar zswap.enabled=1 aos parâmetros do kernel. A maioria das distribuições usa Grub2 como bootloader por padrão. Se você estiver usando um bootloader diferente, encontre o arquivo de configuração onde ele armazena os parâmetros do kernel a serem passados na inicialização e adicione zswap.enabled=1 como um parâmetro adicional.
Outro parâmetro que você pode ajustar para ver se melhora o desempenho para seu caso específico é zswap.max_pool_percent=20. Você pode ajustá-lo mudando o número no final: por exemplo, zswap.max_pool_percent=50.
Adicione-o aos mesmos parâmetros do kernel onde você adiciona zswap.enabled=1. Recomenda-se que você não ultrapasse 50%, pois mais do que isso pode ter efeitos prejudiciais em sistemas com pouca memória RAM.
Conclusão
Se você frequentemente ficava sem RAM em seu sistema antigo e experimentava os efeitos irritantes do thrashing de disco, você notará e apreciará imediatamente a diferença a partir de agora. Em vez de desacelerações horríveis, você experimentará um atraso leve e temporário que dura apenas alguns segundos (em vez de minutos) quando o sistema operacional precisa trocar muitos dados para o disco. Você poderá continuar trabalhando em situações em que antes não conseguia usar seu computador durante o tempo em que trocava.