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

Il y a quelques semaines, j'ai posté Test du Pinebook Pro. Étant donné que Raspberry Pi 4 est également basé sur ARM, certaines des optimisations mentionnées dans l'article précédent lui conviennent tout à fait. J'aimerais partager ces astuces et voir si vous rencontrez les mêmes améliorations de performances.

Après avoir installé le Raspberry Pi dans votre salle de serveurs à domicile J'ai remarqué que dans les moments de pénurie de RAM, il ne répondait plus et même se figeait. 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

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

ZRAM crée un stockage en bloc dans la RAM nommé /dev/zram0 (ou 1, 2, 3, etc.). Les pages qui y sont écrites sont compressées et stockées en mémoire. Cela permet des E/S très rapides et libère également de la mémoire grâce à la compression.

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

Les instructions sont fournies dans le référentiel 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 installez environ 1 Go de ZRAM :

sudo apt install zram-tools

Après l'installation, vous pouvez afficher les statistiques de 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 de paramètres du noyau pour une meilleure utilisation de la ZRAM

Corrigeons maintenant le comportement du système lorsque le Raspberry Pi passe en swap au dernier moment, ce qui entraîne souvent des blocages. Ajoutons quelques lignes au fichier /etc/sysctl.conf et redémarrez.

Ces lignes 1) retardera l'inévitable épuisement de la mémoire, augmentant la pression sur le cache du noyau et 2) ils commencent à se préparer à l'épuisement de la mémoire plus tôt, en lançant l'échange à l'avance. Mais il sera bien plus efficace d’échanger la mémoire compressée via ZRAM !

Voici les lignes à ajouter en fin de fichier /etc/sysctl.conf:

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

Ensuite, nous redémarrons le système ou activons les modifications avec la commande suivante :

sudo sysctl --system

vm.vfs_cache_pression=500 augmente la pression du cache, ce qui augmente la tendance du noyau à récupérer la mémoire utilisée pour mettre en cache les répertoires et indexer les objets. Vous utiliserez moins de mémoire pendant une période plus longue. La forte baisse des performances est annulée par un échange antérieur.

vm.swappiness = 100 augmente le paramètre avec lequel le noyau échangera les pages de mémoire de manière agressive, puisque nous utilisons d'abord ZRAM.

vm.dirty_background_ratio=1 & vm.dirty_ratio=50 - les processus en arrière-plan commenceront à enregistrer immédiatement après avoir atteint la limite de 1 %, mais le système ne forcera pas les E/S synchrones jusqu'à ce qu'il atteigne un dirty_ratio de 50 %.

Ces quatre lignes (lorsqu'elles sont utilisées avec ZRAM) aideront à améliorer les performances si vous avez inévitablement La RAM s'épuise et la transition vers le swap commence, comme la mienne. Connaissant ce fait, et compte tenu également de la compression de la mémoire dans la ZRAM par trois, il est préférable de démarrer cet échange à l'avance.

Mettre la pression sur le cache est utile car nous disons essentiellement au noyau : "Hé, écoutez, je n'ai pas de mémoire supplémentaire à utiliser pour le cache, alors s'il vous plaît, débarrassez-vous-en dès que possible et ne stockez que les éléments les plus fréquemment utilisés/importants". données."

Même avec une mise en cache réduite, si au fil du temps la majeure partie de la mémoire installée est occupée, le noyau commencera l'échange opportuniste beaucoup plus tôt, de sorte que le processeur (compression) et les E/S d'échange n'attendront pas la dernière minute et utiliseront toutes les ressources en même temps lorsque c'est trop tard. ZRAM utilise un peu de CPU pour la compression, mais sur la plupart des systèmes dotés de petites quantités de mémoire, cela a beaucoup moins d'impact sur les performances que le swap sans ZRAM.

En conclusion

Regardons à nouveau le résultat :

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 représente près d’un gigaoctet de données non compressées. Tout est allé vers ZRAM et rien n'est allé vers le fichier d'échange beaucoup plus lent. Essayez ces paramètres vous-même, ils fonctionnent sur tous les modèles Raspberry Pi. Mon système de congélation inutilisable est devenu un système fonctionnel et stable.

Dans un avenir proche, j'espère continuer et mettre à jour cet article avec quelques résultats de tests du système avant et après l'installation de ZRAM. Maintenant, je n'ai tout simplement plus le temps pour ça. En attendant, n'hésitez pas à faire vos propres tests et à me le faire savoir dans les commentaires. Le Raspberry Pi 4 est une bête avec ces réglages. Apprécier!

Sur le sujet:

Source: habr.com

Ajouter un commentaire