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

Algumas semanas atrás eu postei Revisão do Pinebook Pro. Como o Raspberry Pi 4 também é baseado em ARM, algumas das otimizações mencionadas no artigo anterior são bastante adequadas para ele. Gostaria de compartilhar esses truques e ver se você experimenta as mesmas melhorias de desempenho.

Depois de instalar o Raspberry Pi em seu sala de servidores domésticos Percebi que em momentos de falta de RAM ele não respondia muito e até travava. Para resolver esse problema, adicionei ZRAM e fiz algumas alterações nos parâmetros do kernel.

Ativando ZRAM no Raspberry Pi

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

ZRAM cria um armazenamento de bloco na RAM chamado /dev/zram0 (ou 1, 2, 3, etc.). As páginas escritas ali são compactadas e armazenadas na memória. Isso permite E/S muito rápida e também libera memória por meio de compactação.

O Raspberry Pi 4 vem com 1, 2, 4 ou 8 GB de RAM. Usarei o modelo de 1 GB, portanto ajuste as instruções com base no seu modelo. Com 1 GB de ZRAM, o arquivo de troca padrão (lento!) será usado com menos frequência. Eu usei esse script troca zram para instalação e configuração automática.

As instruções são fornecidas no repositório vinculado acima. Instalação:

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

Se você quiser editar a configuração:

vi /etc/default/zram-swap

Além disso, você pode ativar o ZRAM instalando zram-tools. Se você usar este método, certifique-se de editar 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 de 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 de kernel para melhor uso do ZRAM

Agora vamos corrigir o comportamento do sistema quando o Raspberry Pi muda para troca no último momento, o que geralmente leva a travamentos. Vamos adicionar algumas linhas ao arquivo /etc/sysctl.conf e reinicie.

Estas linhas 1) atrasará o inevitável esgotamento da memória, aumentando a pressão no cache do kernel e 2) eles começam a se preparar para a exaustão da memória mais cedo, iniciando a troca com antecedência. Mas será muito mais eficiente trocar memória compactada por ZRAM!

Aqui estão as linhas para adicionar 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 alterações com o seguinte comando:

sudo sysctl --system

vm.vfs_cache_pression=500 aumenta a pressão do cache, o que aumenta a tendência do kernel de recuperar a memória usada para armazenar em cache diretórios e indexar objetos. Você usará menos memória por um longo período de tempo. A queda acentuada no desempenho é anulada pela troca anterior.

vm.swappiness = 100 aumenta o parâmetro com que agressividade o kernel irá trocar páginas de memória, já que estamos usando ZRAM primeiro.

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

Estas quatro linhas (quando usadas com ZRAM) ajudarão a melhorar o desempenho se você tiver inevitavelmente A RAM acaba e começa a transição para swap, como a minha. Sabendo desse fato, e também levando em consideração a compactação de memória em ZRAM em três vezes, é melhor iniciar essa troca com antecedência.

Colocar pressão no cache ajuda porque estamos essencialmente dizendo ao kernel: "Ei, olhe, não tenho nenhuma memória extra para usar no cache, então, por favor, livre-se dele o mais rápido possível e armazene apenas os mais usados/importantes. dados."

Mesmo com o cache reduzido, se ao longo do tempo a maior parte da memória instalada estiver ocupada, o kernel iniciará a troca oportunista muito mais cedo, de modo que a CPU (compressão) e a E/S de troca não esperarão até o último minuto e usarão todos os recursos de uma vez quando é muito tarde. O ZRAM usa um pouco de CPU para compactação, mas na maioria dos sistemas com pequenas quantidades de memória ele tem um impacto muito menor no desempenho do que a troca sem ZRAM.

Em conclusão

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 em ZRAM é quase um gigabyte de dados não compactados. Tudo foi para o ZRAM e nada foi para o arquivo de paginação muito mais lento. Experimente você mesmo essas configurações, elas funcionam em todos os modelos Raspberry Pi. Meu sistema de congelamento inutilizável se tornou funcional e estável.

Num futuro próximo, espero continuar e atualizar este artigo com alguns resultados de testes do sistema antes e depois da instalação do ZRAM. Agora simplesmente não tenho tempo para isso. Enquanto isso, fique à vontade para fazer seus próprios testes e me contar nos comentários. O Raspberry Pi 4 é uma fera com essas configurações. Aproveitar!

Sobre o assunto:

Fonte: habr.com

Adicionar um comentário