Rendimiento de Raspberry Pi: añadimos ZRAM y modificamos los parámetros del núcleo

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 ella. Quiero compartir estos trucos y ver si ustedes experimentan mejoras similares en el rendimiento.

Después de instalar Raspberry Pi en mi servidor doméstico , noté que en momentos de escasez de memoria RAM se volvía muy poco receptiva e incluso se bloqueaba. Para solucionar este problema, añadí ZRAM y realicé algunos cambios en los parámetros del núcleo.

Activación de ZRAM en Raspberry Pi

Rendimiento de Raspberry Pi: añadimos ZRAM y modificamos los parámetros del núcleo

ZRAM crea un almacenamiento en bloque en la memoria RAM llamado /dev/zram0 (o 1, 2, 3, etc.). Las páginas escritas allí se comprimen y se almacenan en la memoria. Esto permite un I/O muy rápido y también libera memoria mediante la compresión.

Raspberry Pi 4 viene con 1, 2, 4 u 8 GB de RAM. Estoy utilizando el modelo de 1 GB, así que ajuste las instrucciones según su modelo. Con 1 GB, el archivo de intercambio predeterminado (¡lento!) se utilizará con menos frecuencia. Utilicé este script zram-swap para la instalación y configuración automática.

Las instrucciones están en el repositorio del enlace anterior. Instalación:

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

Si desea editar la configuración:

vi /etc/default/zram-swap

Además, se puede activar ZRAM mediante la instalación de zram-tools. Si utiliza este método, asegúrese de editar la configuración en el archivo /etc/default/zramswap, y establecer alrededor de 1 GB de ZRAM:

sudo apt install zram-tools

Después de la instalación, puede ver la estadística del 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:~ $

Añadimos parámetros del núcleo para un mejor uso de ZRAM

Ahora corregiremos el comportamiento del sistema cuando Raspberry Pi recurre al intercambio en el último momento, lo que a menudo provoca bloqueos. Agregaremos algunas líneas al archivo /etc/sysctl.conf y reiniciaremos.

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

Estas son las líneas que debes 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 los cambios con el siguiente comando:

sudo sysctl --system

vm.vfs_cache_pressure=500 aumenta la presión sobre la caché, lo que incrementa la tendencia del núcleo a reclasificar la memoria utilizada para el almacenamiento en caché de objetos de directorio e índices. Usarás menos memoria durante un período de tiempo más largo. La caída brusca en el rendimiento se compensa con un intercambio más temprano.

vm.swappiness=100 aumenta el parámetro de cuán agresivamente el núcleo intercambiará las páginas de memoria, ya que primero utilizamos ZRAM.

vm.dirty_background_ratio=1 & vm.dirty_ratio=50 — los procesos en segundo plano comenzarán a escribir tan pronto como alcancen el límite del 1%, pero el sistema no forzará una entrada/salida síncrona hasta que se alcance un dirty_ratio del 50%.

Estas cuatro líneas (al usarse con ZRAM) ayudarán a mejorar el rendimiento en caso de que inevitablemente se acabe la memoria RAM y se inicie el intercambio, como me sucede a mí. Sabiendo este hecho y considerando que la compresión de memoria en ZRAM es tres veces mejor, es mejor comenzar este intercambio antes.

La presión sobre la caché ayuda, porque en realidad le estamos diciendo al núcleo: "Eh, escucha, no tengo memoria adicional para usarla para la caché, así que, por favor, deshazte de ella lo más pronto posible y almacena solo los datos más utilizados/importantes."

Incluso con una reducción en la caché, si con el tiempo la mayor parte de la memoria instalada está ocupada, el núcleo comenzará a intercambiar oportunistamente mucho antes, para que el procesador (compresión) y la entrada/salida de intercambio no se estiren hasta el final y utilicen todos los recursos a la vez, cuando ya es demasiado tarde. ZRAM utiliza un poco de CPU para la compresión, pero en la mayoría de los sistemas con poca memoria esto afecta mucho menos el rendimiento que el intercambio sin ZRAM.

En conclusión

Vamos a revisar el resultado nuevamente:

pi@raspberrypi:~ $ free -h
total usado libre compartido buff/cache disponible
Mem: 926Mi 471Mi 68Mi 168Mi 385Mi 232Mi
Swap: 1.2Gi 258Mi 999Mi

pi@raspberrypi:~ $ sudo cat /proc/swaps 
Archivo Tipo Tamaño Usado Prioridad
/var/swap archivo 102396 0 -2
/dev/zram0 partición 1185368 264448 5

264448 en ZRAM equivale a casi un gigabyte de datos sin comprimir. Todo se ha ido a ZRAM y nada ha ido al archivo de intercambio, que es mucho más lento. Prueba estas configuraciones; funcionan en todos los modelos de Raspberry Pi. Mi sistema que antes fallaba se ha convertido en uno funcional y estable.

En un futuro cercano, espero continuar y actualizar este artículo con algunos resultados de pruebas del sistema antes y después de instalar ZRAM. Actualmente, simplemente no tengo tiempo para ello. Mientras tanto, no dudes en realizar tus propias pruebas y házmelo saber en los comentarios. Raspberry Pi 4 es simplemente increíble con estas configuraciones. ¡Disfruta!

Sobre el tema:

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster