Performances du Raspberry Pi: ajoutez ZRAM et modifiez les paramètres du noyau

Il y a quelques semaines, j'ai publié une critique de 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 parfaitement. Je voudrais partager ces astuces et savoir si vous avez les mêmes améliorations de performances.

Après avoir installé Raspberry Pi dans ma salle de serveur à domicile, j'ai remarqué qu'en période de pénurie de RAM, il ne répondait plus et se bloquait même. Pour résoudre ce problème, j'ai ajouté ZRAM et apporté plusieurs modifications aux paramètres du noyau.

Activation de ZRAM sur Raspberry Pi




ZRAM crée un stockage de blocs dans la RAM avec le nom / dev / zram0 (ou 1, 2, 3, etc.). Les pages qui y sont enregistrées 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 en raison de la compression.

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

Les instructions sont fournies dans le référentiel sur le lien 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 par l'installation zram-tools. Si vous utilisez cette méthode, veillez à modifier la configuration dans le fichier /etc/default/zramswapet 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 de noyau pour une meilleure utilisation de ZRAM


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

Ces lignes 1) retardent l'épuisement inévitable de la mémoire , augmentant la pression sur le cache du noyau, et 2) commencent plus tôt à préparer l'épuisement de la mémoire , initiant un échange à l'avance. Mais ce sera un échange beaucoup plus efficace de mémoire compressée via 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, nous redémarrons le système ou activons 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 mettre en cache les objets de répertoire et les index. Vous utiliserez moins de mémoire pendant une période plus longue. Une forte baisse de productivité est annulée par les échanges antérieurs.

vm.swappiness = 100 augmente le paramètre avec quelle agressivité le noyau échangera des pages de mémoire, puisque nous utilisons d'abord ZRAM.

vm.dirty_background_ratio = 1 & vm.dirty_ratio = 50 - les processus d'arrière-plan commenceront l'enregistrement 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 dirty_ratio de 50%.

Ces quatre lignes (lorsqu'elles sont utilisées avec ZRAM) aideront à améliorer les performances si vous manquez inévitablement de RAM et commencez à passer au swap, comme le mien. Sachant cela, tout en tenant compte de la compression de la mémoire en ZRAM, il est trois fois préférable de démarrer ce swap à l'avance.

La pression sur le cache est utile car nous disons en fait au noyau: "Hé, écoutez, je n'ai pas de mémoire supplémentaire à utiliser pour le cache, alors veuillez vous en débarrasser le plus tôt possible et ne conserver que les données les plus fréquemment utilisées / importantes."

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 un échange opportuniste beaucoup plus tôt, de sorte que le processeur (compression) et les E / S d'échange ne tireront pas au dernier et n'utiliseront pas toutes les ressources en même temps, quand il sera trop tard. ZRAM utilise un peu de CPU pour la compression, mais sur la plupart des systèmes avec une petite quantité de mémoire, cela affecte les performances beaucoup moins qu'un échange sans ZRAM.

finalement


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

Dans un avenir proche, j'espère continuer et mettre à jour cet article avec quelques résultats des tests du système avant et après l'installation de ZRAM. Maintenant, je n'ai tout simplement pas le temps pour cela. En attendant, n'hésitez pas à effectuer vos propres tests et faites-le nous savoir dans les commentaires. Le Raspberry Pi 4 n'est qu'une bête avec de tels paramètres. Profitez-en!

Sur ce sujet:

All Articles