Conciliando o uso da ZRAM e SWAP em disco na sua máquina

Nesse artigo vou explicar o que é ZRAM e como habilitá-la no seu sistema e como conciliar o uso da ZRAM com a SWAP em disco.

[ Hits: 1.319 ]

Por: Sidnei Serra em 01/09/2025 | Blog: https://www.youtube.com/channel/UCRgokKtNlttdmg2RJEa2VYw


O quê é SWAP em disco e configurando-a mais adequadamente



SWAP ou arquivo de troca é uma "extensão mais lenta" 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.

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 (trataremos mais à frente) 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. 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 nano /etc/sysctl.d/99-ramswap.conf

Coloque ali:

vm.swappness = 20

Salve o arquivo e dê um "sudo sysctl --system" 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.
    Próxima página

Páginas do artigo
   1. O quê é SWAP em disco e configurando-a mais adequadamente
   2. O quê é ZRAM SWAP e configurando-a mais adequadamente
   3. Conciliando o uso da ZRAM e SWAP em disco na sua máquina
   4. Criando arquivo de SWAP e limpando RAM e SWAP depois de uso intenso
Outros artigos deste autor

Máquina perereca - até onde é possível o uso de Linux?

O que é o THP na configuração de RAM do Linux e quando desabilitá-lo

Mitigação - O que é e quando é "seguro" desabilitar

Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian

Leitura recomendada

Configurando o CACIC (parte 1)

Debian Squeeze com RAID 1

Adicionando pacotes do SuSE 9 via WEB

Gerenciamento de pacotes RPM (parte 1)

Configurando Resolução de Vídeo e Taxa de Atualização via Terminal

  
Comentários
[1] Comentário enviado por morvan em 26/09/2025 - 23:39h

Muito bom artigo. No Fedora, não precisei manipular nenhum arquivo .conf, senão emitir o comando:

'dnf remove zram-generator zram-generator-defaults' e reiniciar.

Como meu Swap é totalmente sobre SSD, dupliquei o tamanho da partição a ele destinada, vez que o tempo de acesso, comparando com dispositivos de estado móvel, é bem mais vantajoso.
Ao desabilitar a ZRam, além do ganho geral, percebi uma melhora substancial no acesso ao cache (para terem uma ideia: tenho WhatsApp corporativo; centenas de hits diários; o WA conseguiu rever os caches visivelmente mais rápido).

Morvan, Usuário GNU-Linux #433640. Seja Legal; seja Livre. Use GNU-Linux.

[2] Comentário enviado por coelhoposa em 29/09/2025 - 17:07h


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.


Isso está incorreto. O que o "vm.swappness" faz é definir o quão agressivo será o uso da Swap: Quanto mais baixo o valor, mais o sistema irá evitar de usar a Swap e quanto mais alto o valor, mais o sistema irá usar a Swap. É basicamente sobre isso, não tem nada a ver com o "uso de memória RAM". Tem mais sobre isso, aqui:
- https://www.techtarget.com/searchdatacenter/definition/Linux-swappiness
- https://www.howtogeek.com/449691/what-is-swapiness-on-linux-and-how-to-change-it/
- https://github.com/torvalds/linux/blob/v6.2/mm/vmscan.c#L3000-L3014

E além disso, esse parâmetro pode ser ajustado com valores que vão de 0 a 200, e isso é desde o Kernel 5.8, lançado em Agosto de 2020. Ou seja, não dá nem pra confundir que o parâmetro equivale a RAM usada, já faz cinco anos.

[3] Comentário enviado por Zoiudo em 29/09/2025 - 17:26h

Por isso que eu coloquei "diz mais ou menos ao sistema" como forma de explicar bem por alto como funciona o parâmetro, eu sei que o swappness controla a questão do sistema usar mais agressivamente a troca de páginas na swap e não tem nada a ver com uso de memória RAM. Já o lance de valores maiores que 100 obrigado pela informação, confundi com a a prioridade de uso da ZRAM e/ou da SWAP em disco e que também não é de 0 a 100 mas convencionou-se "mais ou menos" por esse valor nos scripts. Aliás os desenvolvedores deveriam parametrar as variáveis de certas configurações para algo mais "medível" como 0 a 100 pois já é costume da gente saber que 50 é a metade, por exemplo. Imagine o kernel aceitar valores entre –1 a 32767 para configurar uma coisa, é phodz, hehehe...

Em todo caso, a prioridade da ZRAM/swap, por exemplo, é mais para ordenar as prioridades de uso das mesmas.


[2] Comentário enviado por coelhoposa em 29/09/2025 - 17:07h


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.


Isso está incorreto. O que o "vm.swappness" faz é definir o quão agressivo será o uso da Swap: Quanto mais baixo o valor, mais o sistema irá evitar de usar a Swap e quanto mais alto o valor, mais o sistema irá usar a Swap. É basicamente sobre isso, não tem nada a ver com o "uso de memória RAM". Tem mais sobre isso, aqui:
- https://www.techtarget.com/searchdatacenter/definition/Linux-swappiness
- https://www.howtogeek.com/449691/what-is-swapiness-on-linux-and-how-to-change-it/
- https://github.com/torvalds/linux/blob/v6.2/mm/vmscan.c#L3000-L3014

E além disso, esse parâmetro pode ser ajustado com valores que vão de 0 a 200, e isso é desde o Kernel 5.8, lançado em Agosto de 2020. Ou seja, não dá nem pra confundir que o parâmetro equivale a RAM usada, já faz cinco anos.



[4] Comentário enviado por coelhoposa em 29/09/2025 - 19:24h

O vm.swappness já foi de 0 a 100 e, em 2020, isso mudou. O Hardware que usamos mudou. Os computadores não vem mais com aqueles HDDs lentos, onde um "vm.swappness" de 60 seria o ideal, mais sim com SSDs muito mais rápidos, onde um "vm.swappness" mais alto pode ser mais benéfico.

E colocar isso como "mais ou menos ao sistema", com uma porcentagem de RAM que, desde 2020, não corresponde na realidade é tornar a explicação incorreta. Só quis apontar essa questão do "vm.swappness", pois eu vejo muita gente errando nisso e passando informação errada, colocando esse parâmetro como se fosse "Ah, o sistema só vai usar a Swap quando ele chegar em tal porcentagem da RAM usada", quando ele não é isso.

E os parâmetros devem ser usados como eles deveriam ser usados, e essas "convenções" que vem de anos e anos, podem estar incorretas, desatualizadas ou não usando aquele parâmetro da melhor forma.

Por exemplo, a zRAM pode ser melhor aproveitada com um "vm.swappness" com valores acima de 100, pois a RAM é muito mais rápida, e isso é conforme a documentação do Kernel (https://docs.kernel.org/admin-guide/sysctl/vm.html); na documentação do Kernel, o "vm.swappness" é colocado como um "custo" de IO para se usar a Swap; com algumas pessoas usando em 180, para aproveitar que a RAM é ordens de magnitude mais rápida do que qualquer armazenamento.


[3] Comentário enviado por Zoiudo em 29/09/2025 - 17:26h

Por isso que eu coloquei "diz mais ou menos ao sistema" como forma de explicar bem por alto como funciona o parâmetro, eu sei que o swappness controla a questão do sistema usar mais agressivamente a troca de páginas na swap e não tem nada a ver com uso de memória RAM. Já o lance de valores maiores que 100 obrigado pela informação, confundi com a a prioridade de uso da ZRAM e/ou da SWAP em disco e que também não é de 0 a 100 mas convencionou-se "mais ou menos" por esse valor nos scripts. Aliás os desenvolvedores deveriam parametrar as variáveis de certas configurações para algo mais "medível" como 0 a 100 pois já é costume da gente saber que 50 é a metade, por exemplo. Imagine o kernel aceitar valores entre –1 a 32767 para configurar uma coisa, é phodz, hehehe...

Em todo caso, a prioridade da ZRAM/swap, por exemplo, é mais para ordenar as prioridades de uso das mesmas.




Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts