Performance du Raspberry Pi : ajout de ZRAM et modification des paramètres du noyau

Il y a quelques semaines, j'ai publié une revue du Pinebook Pro. Comme le Raspberry Pi 4 est également basé sur ARM, certaines des optimisations mentionnées dans l'article précédent lui conviennent tout à fait. Je voudrais partager ces astuces et découvrir si vous observez aussi des améliorations de performance.

Après avoir installé le Raspberry Pi dans ma serveur domestique , j'ai remarqué qu'en cas de manque de mémoire vive, il devenait très insensible et même se bloquait. Pour résoudre ce problème, j'ai ajouté ZRAM et apporté quelques modifications aux paramètres du noyau.

Activation de ZRAM sur Raspberry Pi

Performance du Raspberry Pi : ajout de ZRAM et modification des paramètres du noyau

ZRAM crée un espace de stockage en mémoire vive nommé /dev/zram0 (ou 1, 2, 3, etc.). Les pages écrites là-bas sont compressées et conservées en mémoire. Cela permet d'assurer des entrées-sorties très rapides tout en libérant de la mémoire grâce à la compression.

Le Raspberry Pi 4 est livré avec 1, 2, 4 ou 8 Go de mémoire vive. J'utiliserai le modèle 1 Go, donc ajustez les instructions en fonction de votre modèle. Avec 1 Go, le fichier d'échange par défaut (lent !) sera utilisé moins fréquemment. J'ai utilisé ce script zram-swap pour l'installation et la configuration automatique.

Les instructions sont fournies dans le dépôt lié ci-dessus. Installation :

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

Si vous souhaitez modifier la configuration :

vi /etc/default/zram-swap

De plus, vous pouvez activer ZRAM en installant zram-tools. Si vous utilisez cette méthode, assurez-vous de modifier la configuration dans le fichier /etc/default/zramswap, et d'installer environ 1 Go de ZRAM :

sudo apt install zram-tools

Après l'installation, vous pouvez consulter les statistiques du stockage ZRAM avec la commande suivante :

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

Ajout des paramètres du noyau pour une meilleure utilisation de ZRAM

Nous allons maintenant corriger le comportement du système lorsque le Raspberry Pi passe à l'échange à la dernière minute, ce qui entraîne souvent des blocages. Ajoutons quelques lignes au fichier /etc/sysctl.conf et redémarrons.

Ces lignes 1) retarder l'épuisement inévitable de la mémoire, en augmentant la pression sur le cache du noyau, et 2) préparent plus tôt l'épuisement de la mémoire, en initiant à l'avance l'échange. Mais cela sera une bien meilleure gestion de l'échange de mémoire compressée grâce à ZRAM !

Voici les lignes à ajouter à la fin du fichier /etc/sysctl.conf:

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

Ensuite, redémarrez le système ou activez les modifications avec la commande suivante :

sudo sysctl --system

vm.vfs_cache_pressure=500 augmente la pression sur le cache, ce qui augmente la tendance du noyau à récupérer la mémoire utilisée pour le cache des objets de répertoire et des index. Vous utiliserez moins de mémoire pendant une période plus longue. Une chute brutale des performances est compensée par un swap précoce.

vm.swappiness=100 augmente le paramètre qui détermine à quel point le noyau sera agressif en ce qui concerne le swap des pages mémoire, puisque nous utilisons d'abord ZRAM.

vm.dirty_background_ratio=1 & vm.dirty_ratio=50 — les processus en arrière-plan commenceront à écrire dès que la limite de 1 % sera atteinte, mais le système n'effectuera pas de saisie/sortie synchrone forcée tant que le dirty_ratio n'atteindra pas 50 %.

Ces quatre lignes (lorsqu'elles sont utilisées avec ZRAM) aideront à améliorer les performances si vous inevitablement manquez de mémoire vive et commencez à passer au swap, comme c'est le cas pour moi. Connaissant ce fait, et compte tenu de la compression de mémoire dans ZRAM qui est trois fois meilleure, il est préférable de commencer ce swap tôt.

La pression sur le cache aide, car nous disons en fait au noyau : « Hé, écoute, je n'ai pas de mémoire supplémentaire à utiliser pour le cache, donc s'il te plaît, débarrasse-toi-en aussi vite que possible et conserve uniquement les données les plus utilisées / importantes ».

Même avec une réduction du caching, si au fil du temps la majeure partie de la mémoire installée est occupée, le noyau commencera le swap opportuniste beaucoup plus tôt, de sorte que le processeur (compression) et les entrées/sorties du swap ne ralentissent pas jusqu'à la dernière minute et n'utilisent pas toutes les ressources d'un coup, quand il est déjà trop tard. ZRAM utilise un peu de CPU pour la compression, mais dans la plupart des systèmes avec peu de mémoire, cela a beaucoup moins d'impact sur les performances que le swap sans ZRAM.

En conclusion

Reprenons le résultat :

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

pi@raspberrypi:~ $ sudo cat /proc/swaps 
Nom de fichier Type Taille Utilisé Priorité
/var/swap fichier 102396 0 -2
/dev/zram0 partition 1185368 264448 5

264448 dans ZRAM — c'est presque un gigaoctet de données non compressées. Tout est allé dans ZRAM et rien n'est allé dans un fichier d'échange beaucoup plus lent. Essayez vous-même ces réglages, ils fonctionnent sur tous les modèles de Raspberry Pi. Mon système qui bloquait est devenu fonctionnel et stable.

Dans un avenir proche, j'espère continuer et mettre à jour cet article avec certains résultats des tests du système avant et après l'installation de ZRAM. Pour l'instant, je n'ai tout simplement pas le temps pour cela. En attendant, n'hésitez pas à réaliser vos propres tests et à faire savoir dans les commentaires. Le Raspberry Pi 4 est vraiment incroyable avec ces configurations. Profitez-en !

À propos de :

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster