Desempenho do Raspberry Pi: adicionando ZRAM e alterando os parâmetros do kernel

Há algumas semanas, publiquei uma análise do Pinebook Pro. Como o Raspberry Pi 4 também é baseado em ARM, algumas das otimizações mencionadas no artigo anterior são bem adequadas. Gostaria de compartilhar esses truques e ver se você também percebe melhorias de desempenho.

Após instalar o Raspberry Pi em meu servidor doméstico , percebi que em momentos de falta de memória RAM, ele se tornava muito pouco responsivo e até travava. Para resolver esse problema, adicionei ZRAM e fiz algumas alterações nos parâmetros do kernel.

Ativando o ZRAM no Raspberry Pi

Desempenho do Raspberry Pi: adicionando ZRAM e alterando os parâmetros do kernel

ZRAM cria um armazenamento em bloco na memória RAM chamado /dev/zram0 (ou 1, 2, 3, etc.). As páginas gravadas lá são comprimidas e mantidas na memória. Isso permite uma entrada e saída de dados muito rápidas, além de liberar memória através da compressão.

O Raspberry Pi 4 vem com 1, 2, 4 ou 8 GB de memória RAM. Vou usar o modelo de 1 GB, então ajuste a instrução de acordo com o seu modelo. Com 1 GB, o arquivo de troca padrão (lento!) será usado com menos frequência. Eu usei este script zram-swap para instalação e configuração automática.

As instruções estão no repositório no link acima. Instalação:

git clone https://github.com/foundObjects/zram-swap.git
cd zram-swap && sudo ./install.sh

Se você deseja editar a configuração:

vi /etc/default/zram-swap

Além disso, você pode ativar o ZRAM instalando zram-tools. Se você usar esse método, certifique-se de editar a configuração no arquivo /etc/default/zramswap, e instale cerca de 1 GB de ZRAM:

sudo apt install zram-tools

Após a instalação, você pode visualizar as estatísticas do armazenamento ZRAM com o seguinte comando:

sudo cat /proc/swaps
Filename				Type		Size	Used	Priority
/var/swap                               file		102396	0	-2
/dev/zram0                              partition	1185368	265472	5
pi@raspberrypi:~ $

Adicionando parâmetros do kernel para melhor uso do ZRAM

Agora vamos corrigir o comportamento do sistema quando o Raspberry Pi recorre à troca no último momento, o que frequentemente resulta em travamentos. Vamos adicionar algumas linhas no arquivo /etc/sysctl.conf e reiniciar.

Essas linhas 1) adiarão o inevitável esgotamento da memória, aumentando a pressão sobre o cache do kernel e 2) começarão mais cedo a se preparar para o esgotamento da memória, iniciando a troca com antecedência. Mas será uma troca de memória comprimida muito mais eficiente através do ZRAM!

Estas são as linhas que precisam ser adicionadas ao final do arquivo /etc/sysctl.conf:

vm.vfs_cache_pressure=500
vm.swappiness=100
vm.dirty_background_ratio=1
vm.dirty_ratio=50

Em seguida, reinicie o sistema ou ative as edições com o seguinte comando:

sudo sysctl --system

vm.vfs_cache_pressure=500 aumenta a pressão sobre o cache, o que aumenta a tendência do kernel de reciclar a memória usada para o cache de objetos de diretório e índices. Você usará menos memória por um período mais longo. A queda abrupta de desempenho é compensada por meio de uma troca mais antecipada.

vm.swappiness=100 aumenta o parâmetro de quão agressivamente o kernel fará a troca de páginas de memória, já que estamos usando primeiro o ZRAM.

vm.dirty_background_ratio=1 & vm.dirty_ratio=50 — processos em segundo plano começarão a escrever assim que atingirem o limite de 1%, mas o sistema não executará forcadamente a E/S síncrona até atingir o dirty_ratio de 50%.

Essas quatro linhas (quando usadas com ZRAM) ajudarão a melhorar o desempenho caso você inevitavelmente fique sem memória RAM e comece a trocar, como aconteceu comigo. Sabendo desse fato, e considerando a compressão de memória do ZRAM que é três vezes melhor, é melhor iniciar essa troca mais cedo.

A pressão sobre o cache é útil porque basicamente estamos dizendo ao kernel: "Ei, escute, eu não tenho memória extra para usar como cache, então, por favor, libere-a o mais rápido possível e mantenha apenas os dados mais frequentemente usados/importantes."

Mesmo com a redução do cache, se com o tempo a maior parte da memória instalada estiver ocupada, o kernel iniciará a troca opportunisticamente muito mais cedo, de modo que o processador (compressão) e a E/S de troca não sejam acionados até o último momento, envolvendo todos os recursos de uma vez, quando já é tarde demais. O ZRAM utiliza um pouco da CPU para compressão, mas na maioria dos sistemas com pouca memória, isso afeta muito menos o desempenho do que a troca sem ZRAM.

Para concluir

Vamos dar mais uma olhada no resultado:

pi@raspberrypi:~ $ free -h
total usado livre compartilhado buff/cache disponível
Mem: 926Mi 471Mi 68Mi 168Mi 385Mi 232Mi
Swap: 1.2Gi 258Mi 999Mi

pi@raspberrypi:~ $ sudo cat /proc/swaps 
Filename Type Size Used Priority
/var/swap file 102396 0 -2
/dev/zram0 partition 1185368 264448 5

264448 em ZRAM significa quase um gigabyte de dados descompactados. Tudo foi para o ZRAM e nada foi para o arquivo de swap, que é muito mais lento. Experimente essas configurações, elas funcionam em todos os modelos do Raspberry Pi. Meu sistema travado se transformou em um sistema funcional e estável.

Espero em breve continuar e atualizar este artigo com alguns resultados dos testes do sistema antes e depois da instalação do ZRAM. Atualmente, simplesmente não tenho tempo para isso. Enquanto isso, não hesite em fazer seus próprios testes e me avise nos comentários. O Raspberry Pi 4 é realmente uma máquina com essas configurações. Aproveite!

Sobre o tema:

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster