Rendimiento de Raspberry Pi: agregue ZRAM y cambie los parámetros del kernel

Hace un par de semanas publiqué una reseña de Pinebook Pro . Dado que Raspberry Pi 4 también se basa en ARM, algunas de las optimizaciones mencionadas en el artículo anterior son bastante adecuadas para ello. Me gustaría compartir estos trucos y averiguar si tiene las mismas mejoras de rendimiento.

Después de instalar Raspberry Pi en la sala de servidores de mi casa, noté que en tiempos de escasez de RAM, dejaba de responder e incluso se bloqueaba. Para resolver este problema, agregué ZRAM e hice varios cambios en los parámetros del kernel.

Activación ZRAM en Raspberry Pi




ZRAM crea un bloque de almacenamiento en RAM con el nombre / dev / zram0 (o 1, 2, 3, etc.). Las páginas grabadas allí están comprimidas y almacenadas en la memoria. Esto permite una E / S muy rápida y también libera memoria debido a la compresión.

El Raspberry Pi 4 viene con 1, 2, 4 u 8 GB de RAM. Usaré el modelo de 1 GB, así que ajuste las instrucciones según su modelo. Con 1 GB de ZRAM, el archivo de intercambio predeterminado (¡lento!) Se usará con menos frecuencia. Utilicé un script de intercambio de zram para la instalación y la configuración automática.

Las instrucciones se proporcionan en el repositorio en el enlace de arriba. Instalación:

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

Si quieres editar la configuración:

vi /etc/default/zram-swap

Además, puede activar ZRAM mediante la instalación zram-tools. Si usa este método, asegúrese de editar la configuración en el archivo /etc/default/zramswape instalar aproximadamente 1 GB de ZRAM:

sudo apt install zram-tools

Después de la instalación, puede ver las estadísticas de almacenamiento de ZRAM con el siguiente comando:

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

Agregar parámetros del kernel para un mejor uso de ZRAM


Ahora corrija el comportamiento del sistema cuando Raspberry Pi cambie para intercambiar en el último momento, lo que a menudo conduce a congelaciones. Agregue algunas líneas al archivo /etc/sysctl.conf y reinicie.

Estas líneas 1) retrasan el agotamiento inevitable de la memoria , aumentando la presión sobre la memoria caché del núcleo, y 2) comienzan a prepararse antes para el agotamiento de la memoria , iniciando un intercambio por adelantado. ¡Pero será un intercambio mucho más eficiente de memoria comprimida a través de ZRAM!

Aquí están las líneas para agregar al final del archivo /etc/sysctl.conf :

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

Luego reiniciamos el sistema o activamos las ediciones con el siguiente comando:

sudo sysctl --system

vm.vfs_cache_pressure = 500 aumenta la presión sobre la memoria caché, lo que aumenta la tendencia del núcleo a recuperar la memoria utilizada para almacenar en caché los objetos e índices del directorio. Utilizará menos memoria durante un período de tiempo más largo. Una fuerte caída en la productividad es anulada por los intercambios anteriores.

vm.swappiness = 100 aumenta el parámetro con qué agresividad el núcleo intercambiará páginas de memoria, ya que usamos ZRAM primero.

vm.dirty_background_ratio = 1 & vm.dirty_ratio = 50 : los procesos en segundo plano comenzarán a grabar inmediatamente después de alcanzar el límite del 1%, pero el sistema no forzará la E / S síncrona hasta que alcance la tasa de suciedad del 50%.

Estas cuatro líneas (cuando se usan con ZRAM) ayudarán a mejorar el rendimiento si inevitablemente se queda sin RAM y comienza a cambiar a intercambio, como el mío. Conociendo este hecho, además de tener en cuenta la compresión de memoria en ZRAM, es tres veces mejor comenzar este intercambio por adelantado.

La presión sobre el caché ayuda porque en realidad le estamos diciendo al núcleo: "Oye, no tengo memoria extra para usar el caché, así que deshazte de él lo antes posible y guarda solo los datos más importantes / usados ​​con mayor frecuencia".

Incluso con el almacenamiento en caché reducido, si con el tiempo la mayor parte de la memoria instalada está ocupada, el kernel comenzará un intercambio oportunista mucho antes, de modo que el procesador (compresión) y la E / S de intercambio no se moverán al último y usarán todos los recursos a la vez, cuando sea demasiado tarde. ZRAM usa una pequeña CPU para la compresión, pero en la mayoría de los sistemas con una pequeña cantidad de memoria, esto afecta el rendimiento mucho menos que un intercambio sin ZRAM.

Finalmente


Veamos el resultado nuevamente:

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 es casi un gigabyte de datos sin comprimir. Todo fue a ZRAM y nada entró en el archivo de intercambio mucho más lento. Pruebe esta configuración usted mismo, funcionan en todos los modelos de Raspberry Pi. Mi sistema de congelación inadecuado se ha convertido en uno viable y estable.

En un futuro próximo, espero continuar y actualizar este artículo con algunos resultados de las pruebas del sistema antes y después de instalar ZRAM. Ahora simplemente no tengo tiempo para esto. Mientras tanto, siéntase libre de ejecutar sus propias pruebas y háganos saber en los comentarios. El Raspberry Pi 4 es solo una bestia con tales configuraciones. ¡Disfrútala!

Sobre este tema:

All Articles