Rendimiento de Raspberry Pi: agregar ZRAM y cambiar los parámetros del kernel

Hace un par de semanas publiqué Revisión de Pinebook Pro. Dado que Raspberry Pi 4 también está basado en ARM, algunas de las optimizaciones mencionadas en el artículo anterior son bastante adecuadas para ello. Me gustaría compartir estos trucos y ver si experimentas las mismas mejoras de rendimiento.

Después de instalar Raspberry Pi en su sala de servidores doméstica Noté que en momentos de escasez de RAM dejaba de responder e incluso se congelaba. Para resolver este problema, agregué ZRAM e hice algunos cambios en los parámetros del kernel.

Activando ZRAM en Raspberry Pi

Rendimiento de Raspberry Pi: agregar ZRAM y cambiar los parámetros del kernel

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

La 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 utilizará con menos frecuencia. Usé este script intercambio de zram para instalación y configuración automática.

Las instrucciones se proporcionan en el repositorio vinculado anteriormente. 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, puede activar ZRAM instalando zram-tools. Si utiliza este método, asegúrese de editar la configuración en archivo /etc/default/zramswape instale 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 arreglemos el comportamiento del sistema cuando Raspberry Pi cambia al modo de intercambio en el último momento, lo que a menudo conduce a congelaciones. Agreguemos algunas líneas al archivo. /etc/sysctl.conf y reiniciar.

Estas líneas 1) retrasará el inevitable agotamiento de la memoria, aumentando la presión sobre la caché del kernel y 2) Comienzan a prepararse antes para el agotamiento de la memoria., iniciando el intercambio por adelantado. ¡Pero será mucho más eficiente intercambiar 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 los cambios con el siguiente comando:

sudo sysctl --system

vm.vfs_cache_pression=500 aumenta la presión de la caché, lo que aumenta la tendencia del kernel a recuperar la memoria utilizada para almacenar en caché el directorio y los objetos de indexación. Utilizará menos memoria durante un período de tiempo más largo. La fuerte caída del rendimiento se ve compensada por un intercambio más temprano.

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

vm.dirty_background_ratio=1 y vm.dirty_ratio=50 - Los procesos en segundo plano comenzarán a grabar inmediatamente al alcanzar el límite del 1%, pero el sistema no forzará la E/S síncrona hasta que alcance una relación sucia del 50%.

Estas cuatro líneas (cuando se usan con ZRAM) ayudarán a mejorar el rendimiento si tiene inevitablemente Se acaba la RAM y comienza la transición a swap, como la mía. Sabiendo este hecho, y también teniendo en cuenta la compresión de la memoria en ZRAM tres veces, es mejor iniciar este intercambio con antelación.

Ejercer presión sobre el caché ayuda porque esencialmente le estamos diciendo al kernel: "Oye, mira, no tengo memoria adicional para usar en el caché, así que deshazte de ella lo antes posible y almacena solo la información más utilizada/importante". datos."

Incluso con un almacenamiento en caché reducido, si con el tiempo la mayor parte de la memoria instalada está ocupada, el kernel comenzará el intercambio oportunista mucho antes, de modo que la CPU (compresión) y las E/S de intercambio no esperarán hasta el último minuto y utilizarán todos los recursos a la vez cuando es muy tarde. ZRAM usa un poco de CPU para la compresión, pero en la mayoría de los sistemas con pequeñas cantidades de memoria tiene un impacto mucho menor en el rendimiento que el intercambio sin ZRAM.

en conclusión

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 fue al archivo de página mucho más lento. Pruebe estas configuraciones usted mismo, funcionan en todos los modelos de Raspberry Pi. Mi sistema de congelación inutilizable se ha convertido en uno funcional y estable.

En un futuro cercano, 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éntete libre de realizar tus propias pruebas y házmelo saber en los comentarios. La Raspberry Pi 4 es una bestia con esta configuración. ¡Disfrutar!

Sobre el tema:

Fuente: habr.com

Añadir un comentario