Rendemento de Raspberry Pi: engadindo ZRAM e cambiando os parámetros do núcleo

Hai un par de semanas publiquei Revisión de Pinebook Pro. Dado que Raspberry Pi 4 tamén está baseado en ARM, algunhas das optimizacións mencionadas no artigo anterior son bastante adecuadas para iso. Gustaríame compartir estes trucos e ver se experimentas as mesmas melloras de rendemento.

Despois de instalar o Raspberry Pi no teu sala do servidor doméstico Notei que nos momentos de escaseza de memoria RAM non respondeu e ata se conxelaba. Para resolver este problema, engadín ZRAM e fixen algúns cambios nos parámetros do núcleo.

Activando ZRAM en Raspberry Pi

Rendemento de Raspberry Pi: engadindo ZRAM e cambiando os parámetros do núcleo

ZRAM crea un bloque de almacenamento na RAM chamado /dev/zram0 (ou 1, 2, 3, etc.). As páxinas alí escritas están comprimidas e almacenadas na memoria. Isto permite unha E/S moi rápida e tamén libera memoria mediante a compresión.

O Raspberry Pi 4 vén con 1, 2, 4 ou 8 GB de RAM. Usarei o modelo de 1 GB, así que axusta as instrucións segundo o teu modelo. Con 1 GB de ZRAM, o ficheiro de intercambio predeterminado (lento!) utilizarase con menos frecuencia. Usei este guión zram-swap para instalación e configuración automática.

As instrucións ofrécense no repositorio ligado anteriormente. Instalación:

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

Se queres editar a configuración:

vi /etc/default/zram-swap

Ademais, podes activar ZRAM instalando zram-tools. Se usas este método, asegúrate de editar a configuración en arquivo /etc/default/zramswape instala aproximadamente 1 GB de ZRAM:

sudo apt install zram-tools

Despois da instalación, pode ver as estatísticas de almacenamento ZRAM co 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:~ $

Engadindo parámetros do núcleo para un mellor uso da ZRAM

Agora imos corrixir o comportamento do sistema cando o Raspberry Pi cambia ao cambio no último momento, o que moitas veces leva a conxelacións. Imos engadir algunhas liñas ao ficheiro /etc/sysctl.conf e reinicie.

Estas liñas 1) atrasará o inevitable esgotamento da memoria, aumentando a presión sobre a caché do núcleo e 2) comezan a prepararse para o esgotamento da memoria antes, iniciando o intercambio con antelación. Pero será moito máis eficiente intercambiar memoria comprimida a través de ZRAM!

Aquí están as liñas para engadir ao final do ficheiro /etc/sysctl.conf:

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

Despois reiniciamos o sistema ou activamos os cambios co seguinte comando:

sudo sysctl --system

vm.vfs_cache_pressure=500 aumenta a presión da caché, o que aumenta a tendencia do núcleo a recuperar a memoria utilizada para almacenar o directorio e os obxectos de índice. Usará menos memoria durante un período de tempo máis longo. A forte caída do rendemento vese anulada polo intercambio anterior.

vm.swappiness = 100 aumenta o parámetro con que agresividade intercambiará o núcleo as páxinas de memoria, xa que primeiro estamos a usar ZRAM.

vm.dirty_background_ratio=1 e vm.dirty_ratio=50 - Os procesos en segundo plano comezarán a gravar inmediatamente ao alcanzar o límite do 1 %, pero o sistema non forzará a E/S síncrona ata que acade o dirty_ratie do 50 %.

Estas catro liñas (cando se usan con ZRAM) axudarán a mellorar o rendemento se ten inevitablemente A memoria RAM esgótase e comeza a transición ao intercambio, como a miña. Sabendo este feito, e tendo en conta tamén a compresión da memoria en ZRAM por tres veces, é mellor iniciar este intercambio con antelación.

Poñer presión sobre a caché axuda porque esencialmente lle dicimos ao núcleo: "Ei, mira, non teño memoria extra para usar para a caché, así que quítaa o antes posible e almacena só o máis usado/importante. datos".

Mesmo cunha caché reducida, se co paso do tempo a maior parte da memoria instalada está ocupada, o núcleo comezará o intercambio oportunista moito antes, de xeito que a CPU (compresión) e as E/S de intercambio non esperarán ata o último minuto e usarán todos os recursos á vez. é demasiado tarde. A ZRAM usa un pouco de CPU para a compresión, pero na maioría dos sistemas con pequenas cantidades de memoria ten moito menos impacto no rendemento que o intercambio sen ZRAM.

En conclusión

Vexamos o resultado de novo:

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 en ZRAM é case un gigabyte de datos sen comprimir. Todo foi para ZRAM e nada foi para o ficheiro de páxina moito máis lento. Proba estas configuracións ti mesmo, funcionan en todos os modelos de Raspberry Pi. O meu sistema de conxelación inutilizable converteuse nun funcional e estable.

Nun futuro próximo, espero continuar e actualizar este artigo con algúns resultados das probas do sistema antes e despois de instalar ZRAM. Agora simplemente non teño tempo para isto. Mentres tanto, non dubides en realizar as túas propias probas e avísame nos comentarios. O Raspberry Pi 4 é unha besta con esta configuración. Disfruta!

Sobre o tema:

Fonte: www.habr.com

Engadir un comentario