Há algumas semanas, publiquei . 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 , 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

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 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.shSe 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-toolsApó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=50Em seguida, reinicie o sistema ou ative as edições com o seguinte comando:
sudo sysctl --systemvm.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 5264448 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:
- (2017)
- (2020)
Fonte: habr.com
