Sobre swap e zram no Fedora Linux
Neste artigo, irei falar sobre o zram, o que ele faz e algumas dicas para melhorar o desempenho no seu sistema. Antes de explicar o que de fato é a zram, preciso explicar o que é a troca de memória, ou swap, como é conhecida em inglês.
A swap é um recurso do sistema operacional que pega páginas¹ de memória RAM que não estão sendo usadas com frequência no sistema e as move para uma partição no disco. Ao transferir esses dados da memória RAM para o disco, o sistema libera mais memória RAM que fica disponível para as aplicações. No entanto, isso tem um custo. Mesmo com unidades mais rápidas disponíveis hoje em dia, como SSDs, o processo de recuperar essa memória que foi movida para lá é lento, pois as unidades de disco, mesmo as mais velozes, ainda são mais lentas se comparadas à memória RAM. Portanto, o desempenho ruim é evidente.
Veja na imagem acima, O sistema operacional troca, lembre-se swap é troca em inglês, entre dois dispositivos de memória diferentes, sendo um a memória RAM, enviando os dados para o disco rígido. O sistema operacional ao tentar recuperar essa memória da partição no disco leva muito tempo, fica perceptível a lentidão na máquina, indo até a pequenos engasgos.
O propósito do zram é criar um dispositivo de bloco dentro da memória RAM e usar esse dispositivo para swap, compactando os dados. Assim, o tempo para recuperar os dados da memória RAM é muito mais rápido do que no disco. Isso também tem um custo, pois os dados precisam ser descomprimidos, o que gera um custo de processamento. No entanto, bons algoritmos tornam o processo eficiente, melhorando o desempenho.
Vamos analisar uma imagem, resultado do comando:
zramclt
Na imagem acima temos o algoritmo utilizado “zstd”, depois em DISKSIZE o tamanho da zram que é de 8G, após em DATA temos o total de dados que está na zram 4K, porém em COMPR temos o fator de compressão, esses 4K foram comprimidos, ocupando um espaço de 64B.
Por padrão, o algoritmo de compressão no fedora é o lzo-rle que tem um bom desempenho no uso geral, porém o desempenho do zstd é melhor, deixarei um comando abaixo para você alterar o algoritmo para zstd, faça os testes e veja se há alguma diferença.
printf “%s\n” “[zram0]” “compression-algorithm = zstd” | sudo tee /etc/systemd/zram-generator.conf
Outro ponto interpresante sobre a zram no Fedora Linux, é que ele é calculado da seguinte forma, conforme esse arquivo de configuração.
cat /usr/lib/systemd/zram-generator.conf # This config file enables a /dev/zram0 device with the default settings: # — size — same as available RAM or 8GB, whichever is less # — compression — most likely lzo-rle # # To disable, uninstall zram-generator-defaults or create empty # /etc/systemd/zram-generator.conf file. [zram0] zram-size = min(ram, 8192) compression-algorithm = zstd
Veja no arquivo de configuração como o cálculo é realizado, especificamente neste trecho:
zram-size = min(ram, 8192)
O cálculo acima funciona da seguinte maneira, é a mínima entre dois valores, por exemplo, tenho um sistema com 4GB de RAM total instalada:
zram-size = min(4GB, 8192)
Acima a mínima entre 4GB e 8GB que é padrão é 4GB, portando se você tiver 8GB ou menos de memória instalada, zram vai ser do mesmo tamanho da sua memória ram, agora se você conter 8GB ou mais, o valor da zram vai ser de 8GB.
Você pode alterar esse funcionamento, alterando o arquivo de configuração, e trocando o valor, por exemplo, na minha máquina eu tenho 4.7 GB de RAM instalada, e o mesmo valor em zram, como no print.
Quero que o total de zram não seja 4,7GB e sim apenas 2GB, para isso eu vou editar esse arquivo:
cat /usr/lib/systemd/zram-generator.conf # This config file enables a /dev/zram0 device with the default settings: # — size — same as available RAM or 8GB, whichever is less # — compression — most likely lzo-rle # # To disable, uninstall zram-generator-defaults or create empty # /etc/systemd/zram-generator.conf file. [zram0] zram-size = min(ram, 8192) compression-algorithm = zstd
E mudar o 8192 para 2192.
zram-size = min(ram, 2192)
Vou salvar e reiniciar, e com o comando zramclt eu vou ver se houve alterações.
Veja que agora eu alterei o valor tendo apenas 2GB de memória ram disponível.
Salas de discussão
- 721 Todas as salas de discussão
- 5 Eventos
- 402 Fedora
- 7 CoreOS
- 137 Spins
- 11 CINNAMON
- 28 GNOME
- 63 KDE
- 10 LXDE
- 4 LXQT
- 13 MATE
- SOAS
- 3 XFCE
- 13 Server
- 84 Workstation
- 33 SilverBlue
- Atomic
- 3 Labs
- ARM®
- 3 Segurança
- 7 Servidores
- 222 Tutoriais
- 6 Críticas e Sugestões
- 16 Novidades e anuncios
- 5 CentOS
- 18 Games
- 31 Hardware
- 8 Linguagens de programação