Desempenho do Raspberry Pi: adicione ZRAM e altere os parâmetros do kernel

Há algumas semanas, publiquei uma resenha do Pinebook Pro . Como o Raspberry Pi 4 também é baseado no ARM, algumas das otimizações mencionadas no artigo anterior são bastante adequadas. Gostaria de compartilhar esses truques e descobrir se você tem as mesmas melhorias de desempenho.

Depois de instalar o Raspberry Pi na minha sala de servidores em casa, notei que, em tempos de falta de RAM, ele ficava sem resposta e até travava. Para resolver esse problema, adicionei o ZRAM e fiz várias alterações nos parâmetros do kernel.

Ativação ZRAM no Raspberry Pi




O ZRAM cria um armazenamento em bloco na RAM com o nome / dev / zram0 (ou 1, 2, 3, etc.). As páginas gravadas são compactadas e armazenadas na memória. Isso permite E / S muito rápidas e também libera memória devido à compactação.

O Raspberry Pi 4 vem com 1, 2, 4 ou 8 GB de RAM. Vou usar o modelo de 1 GB, então ajuste as instruções dependendo do seu modelo. Com 1 GB de ZRAM, o arquivo de troca padrão (lento!) Será usado com menos frequência. Eu usei esse script zram-swap para instalação e configuração automática.

As instruções são fornecidas 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 por instalação zram-tools. Se você usar esse método, edite a configuração no arquivo /etc/default/zramswape instale cerca de 1 GB de ZRAM:

sudo apt install zram-tools

Após a instalação, você pode visualizar as estatísticas do repositório da 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 corrija o comportamento do sistema quando o Raspberry Pi mudar para trocar no último momento, o que geralmente leva a congelamentos. Adicione algumas linhas ao arquivo /etc/sysctl.conf e reinicie.

Essas linhas 1) atrasam a inevitável exaustão da memória , aumentando a pressão no cache do kernel, e 2) começam a se preparar para a exaustão da memória , iniciando uma troca antecipadamente. Mas será uma troca muito mais eficiente de memória compactada através do ZRAM!

Aqui estão as linhas a serem adicionadas no 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, reinicializamos o sistema ou ativamos as edições com o seguinte comando:

sudo sysctl --system

vm.vfs_cache_pressure = 500 aumenta a pressão no cache, o que aumenta a tendência do kernel de recuperar a memória usada para armazenar em cache objetos e índices de diretório. Você utilizará menos memória por um longo período de tempo. Uma queda acentuada na produtividade é anulada por trocas anteriores.

vm.swappiness = 100 aumenta o parâmetro com que agressividade o kernel troca páginas de memória, pois usamos o ZRAM primeiro.

vm.dirty_background_ratio = 1 & vm.dirty_ratio = 50 - os processos em segundo plano iniciarão a gravação imediatamente após atingir o limite de 1%, mas o sistema não forçará a E / S síncrona até atingir o dirty_ratio de 50%.

Essas quatro linhas (quando usadas com o ZRAM) ajudarão a melhorar o desempenho se você inevitavelmente ficar sem memória RAM e começar a mudar para trocar, como o meu. Conhecendo esse fato, além de levar em consideração a compactação de memória no ZRAM, é três vezes melhor iniciar essa troca antecipadamente.

A pressão no cache ajuda porque, na verdade, estamos dizendo ao kernel: "Ei, escute, não tenho memória extra para usar no cache; portanto, livre-se disso o mais rápido possível e mantenha apenas os dados importantes / usados ​​com mais frequência".

Mesmo com o cache reduzido, se com o tempo a maior parte da memória instalada estiver ocupada, o kernel iniciará uma troca oportunista muito mais cedo, de modo que o processador (compactação) e a E / S de troca não parem por último e usem todos os recursos de uma só vez, quando for tarde demais. O ZRAM usa um pouco de CPU para compactação, mas na maioria dos sistemas com uma pequena quantidade de memória, isso afeta o desempenho muito menos que uma troca sem o ZRAM.

Finalmente


Vejamos o resultado novamente:

pi@raspberrypi:~ $ free -h
total used free shared buff/cache available
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 no ZRAM é quase um gigabyte de dados não compactados. Tudo foi para a ZRAM e nada entrou no arquivo de troca muito mais lento. Experimente você mesmo essas configurações, pois elas funcionam em todos os modelos de Raspberry Pi. Meu sistema de congelamento inadequado se tornou viável e estável.

Em um futuro próximo, espero continuar e atualizar este artigo com alguns resultados dos testes do sistema antes e depois da instalação do ZRAM. Agora eu simplesmente não tenho tempo para isso. Enquanto isso, sinta-se à vontade para executar seus próprios testes e informe-nos nos comentários. O Raspberry Pi 4 é apenas um animal com essas configurações. Aproveite!

Neste tópico:

All Articles