Il y a quelques semaines, j'ai publié . 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 , 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

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 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.shSi 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-toolsAprè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=50Ensuite, redémarrez le système ou activez les modifications avec la commande suivante :
sudo sysctl --systemvm.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 5264448 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 :
- (2017)
- (2020)
Source : habr.com
