Fedora 38 - Problema com ZRAM

Depois de um bom tempo lendo documentação e vendo vídeos na internet, consegui fazer a primeira instalação mínima do Fedora com o GNOME e tudo está quase perfeito. Meu problema está sendo com o uso da swap (ZRAM).

Em meus testes, na hora da instalação, não é necessário criar uma partição swap, pois o próprio sistema lida com isso usando o ZRAM. Mesmo tendo configurando o arquivo “/etc/sysctl.d/99-sysctl.conf” conforme a recomendação da wiki do Arch Linux:

image

Ele ainda acaba usando a memória virtual, que é mais lenta, mesmo não tendo ocupado 95% da memória RAM, já que o “vm.swappiness” está configurado para 5% e ele parece não respeitar o número.

image

O problema realmente fica pior quando começo a abrir várias abas do navegador ou até mesmo um programa que use mais da RAM, fazendo com que ele não use 95% da RAM e comece a enviar tudo para a ZRAM, começando um trava-trava irritante.

Fiz um teste com o navegador e isso aconteceu várias vezes, ele consumindo 1.9 GB de RAM e o restante jogando na ZRAM, sendo que tinha espaço o bastante disponível na RAM para o uso do navegador. Mesmo sabendo que o sistema “core” gasta +/- 500 MB em idle, eu nunca vi ele chegar a 2.6-2.8GB de RAM sem antes enviar tudo para a ZRAM. Alguém sabe o que estou fazendo de errado ou como forçar o sistema a usar pelo menos 90% da RAM antes de enviar para a ZRAM?

Opa, tudo bem? Provavelmente tem a questão de que a quantidade jogada para ZRAM é baseada em percentual, então, ele nunca vai encher a toda a memória, a menos que a ZRAM também fique cheia, e aí não tenha para onde correr.

Acredito que seja como o fator de swapiness para memória SWAP regular.

Tem algumas dicas legais para esse repositório.

2 curtidas

Não seria melhor inverter o swappiness para 100 pra justamente antecipar o uso da zram direto e evitar os travamentos? Eu tbm to tentando um jeito de evitar esses freeze com 80% do uso mas não sei oq da pra resolver, pra mim que uso varias VMs de uma vez so o Windows pra dar conta sem deixar o pc num freeze eterno

Passei boa parte da madrugada testando algumas configurações e acabei modificado o “vm.swappiness” para o valor “100”, isso evitou criar pico de E/S ao enviar para a ZRAM. Também adicionei o “vm.page-cluster” seguindo a recomendação de uma postagem no Stack Exchange.

image

image

Aparentemente, tem funcionado melhor. Se você quiser fazer essa configuração e postar o feedback aqui seria bom pra gente.

1 curtida

Voltei após um tempo de uso do sistema e cheguei nas seguintes configurações:

vm.swappiness = 1
vm.page-cluster = 0
vm.vfs_cache_pressure = 50
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
vm.max_map_count = 2147483642

Com isso, o sistema passou a usar a memória virtual só após um consumo maior que 90% da RAM total, o kernel ainda usa 100KB-10MB para algumas funções, mas sem nenhum outro problema.

1 curtida

Olá, gostaria de tirar algumas duvidas:

Esse procedimento se aplica a outras distros como o Pop Os ou o Ubuntu? Se sim, eu devo editar o arquivo no caminho /etc/sysctl.d/99-sysctl.conf” ou “/etc/sysctl.conf”?

Essa alteração pode vir a causa algum tipo de instabilidade no sitema?

Desde já fico grato pela ajuda.

Não não causa problemas, eu costumava alterar o arquivo que vem na distro, mas pessoalmente acho que a diferença não é muito grande então nem fiz isso quando instalei o opensuse. Atualmente prefiro só deixar um alias pra reset de swap para alguns casos muito pontuais em que percebe que ela tá atrapalhando.
Em geral o linux lida bem com swap seguindo os padrões.

Se aplica em qualquer distro.

Quanto ao arquivo que se deve editar é o seguinte:

Antes nos colocávamos essas instruções no final do arquivo /etc/sysctl.conf - só que a wiki do Arch Linux ensina criar um arquivo 99-sysctl.conf em /etc/sysctl.d/ e colocar as instruções, assim fica um arquivo separado do sysctl.conf.

Para criar o arquivo 99-sysctl.conf como a wiki do Arch Linux ensina:

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

  • copia e cola as informações abaixo no nano aberto:
vm.swappiness = 1
vm.page-cluster = 0
vm.vfs_cache_pressure = 50
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
vm.max_map_count = 2147483642
  • Depois salve no nano com Ctrl + o e dê enter
  • Para sair do nano: Ctrl + x

Depois reinicie o sistema para que a nova informação possa ser usada.

Você pode ver antes e depois de configurar qual o número que a swappiness está usando com o comando:

cat /proc/sys/vm/swappiness

No caso, o valor da swappiness está definida como 1 (o sistema só vai usar swap quando atingir 99% do uso de RAM.

Dessas instruções eu só uso a vm.swappiness que regula o uso de swap no linux, o resto é fruto de pesquisas mais usado para sistemas que estão travando.

SWAPPINESS

É um parâmetro do Kernel para configurar o uso de Swap.

Usa valores de 0 à 100. O padrão de Swapiness é 60.

Quanto menor o número, mais restrito o uso de Swap.

Swappiness: 60 - Usa Swap a partir de 40% de uso de RAM.

Swappiness: 40 - Usa Swap a partir de 60% de uso de RAM.

Swappiness: 20 - Usa Swap a partir de 80% de uso de RAM.

Swappiness: 10 - Usa Swap a partir de 90% de uso de RAM.

Swappiness: 1 - Usa Swap a partir de 99% de uso de RAM.

Swappiness: 0 - O sistema não poderá usar Swap

Rapaz, com 4G de ram é meio complicado viu?! Ainda mais com o Gnome e Chrome. ZRam é quando se tem memória sobrando e um processador mais ou menos. Ou em casos específicos de mono tarefas.

Qual é o teu objetivo de usar zram é o que vc tem de expectativa com isso?

Estava testando em uma VM, por isso limitei à 4 GB de RAM. Fedora não é minha distribuição prinicpal e sim o Arch, apenas queria fazer um teste. Por incrível que pareça, essa configuração de 4 GB + GNOME + Chrome funcionou muito bem.

1 curtida

Eu preciso fazer uma correção, a wiki do Arch ensina criar o arquivo: sudo nano /etc/sysctl.d/99-swappiness.conf e não em: sudo nano /etc/sysctl.d/99-sysctl.conf

Como eu já expliquei antes nós colocávamos, e ainda pode se quiser, no final do arquivo /etc/sysctl.conf

Também funciona em /etc/sysctl.d/99-sysctl.conf que é um arquivo que já existe no sistema, pelo menos no Fedora, caso não exista ele é criado e funcionará igual ao que o wiki do Arch Linux orienta.

Com 4GB fica bem tranquilo para navegar na Internet e fazer tarefas cotidianas. E é nesses cenários que o ZRAM “brilha”: quando a RAM é realmente limitada.

Aqui eu tenho um tablet com Atom Z3775 e 2GB de RAM rodando Debian 12 GNOME. O ZRAM, configurado para toda a RAM disponível, faz ir da água para o vinho. Por incrível que pareça, o negócio fica bem usável para navegar em poucas abas no Firefox e editar documentos de texto.

Muito obrigado amigos, eu realmente agradeço pela colaboração de todos em ajudar e complementar ao exclarecimento das duvidas.

Fiz o procedimento em um notebook bem antigo e modesto (i3 de segunda geração e 4gb de ram) e realmente deu uma boa ajuda fazer a swap iniciar com 90% de ram utlizada.

Que a graça de Deus ilumine a vida de todos.

1 curtida