Améliorer les performances Linux avec zRAM

compcache, à suivre. Credit image : Midjourney

zRAM (ou Compressed RAM) est un module du noyau Linux qui permet de créer un espace de stockage compressé en mémoire vive (RAM) pour améliorer les performances système. Il fonctionne en créant un ou plusieurs périphériques de swap virtuels (appelés zRAM) qui peuvent être utilisés comme un swap classique pour stocker des données qui ne peuvent pas être stockées dans la mémoire vive.

Lorsque des données sont écrites sur un périphérique zRAM, ces données sont compressées avant d'être stockées en mémoire vive. Lorsque les données sont lues, elles sont décompressées avant d'être utilisées. Cela permet d'augmenter la quantité de données qui peuvent être stockées en mémoire vive, réduisant ainsi la pression sur la mémoire physique. La compression de la mémoire peut avoir un coût en termes de consommation de CPU, donc il faut configurer correctement la taille du swap ZRAM pour équilibrer les avantages de la compression de la mémoire avec les coûts de consommation de CPU.

Pour activer zRAM sous Linux, vous pouvez utiliser les commandes suivantes :

  • Installer le paquet zram-config en utilisant le gestionnaire de paquets de votre distribution.
  • Activer le module zRAM en utilisant la commande : sudo modprobe zram num_devices=4. Cette commande va créer 4 périphériques virtuels : /dev/zram{0,1,2,3}. Le paramétré num_devices est optionnel et demande à zRAM de pré-créé un nombre de périphérique virtuel. La valeur par défaut est de 1.

Les différentes options suivantes permettent de configurer le module zRAM.

  • Configurer l'algorithme de compression (comp_algorithm) pour swap zRAM en utilisant la commande : sudo echo lzo > /sys/block/zram0/comp_algorithm (cette commande configure l'algo de compression de zRAM sur lzo). Afficher les algorithmes de compression supportés en utilisant la commande : sudo cat /sys/block/zram0/comp_algorithm
  • Configurer la taille du swap zRAM (disksize) en utilisant la commande : sudo echo 512M > /sys/block/zram0/disksize (cette commande configure une taille de zRAM de 512 Mo). Il est généralement recommandé de configurer la taille du swap ZRAM pour être égale à environ 50% de la mémoire vive totale de votre système. Cependant, si vous avez des besoins spécifiques de mémoire, vous pouvez augmenter ou diminuer cette valeur en conséquence. Il n'y a pas beaucoup de sens à créer un zRAM de taille supérieure à deux fois la mémoire, car nous nous attendons à un ratio de compression de 2:1. Notez que zRAM utilise environ 0,1 % de la taille du disque lorsqu'il n'est pas utilisé, donc un zRAM énorme est gaspillé.
  • Afficher le nombre de flux de compression (max_com_streams). Indépendamment de la valeur passée à cet attribut, zRAM allouera toujours plusieurs flux de compression - un par CPU en ligne - permettant ainsi plusieurs opérations de compression simultanées. Le nombre de flux de compression alloués diminue lorsque certains des CPU deviennent hors ligne. Il n'y a plus de mode de flux de compression unique, à moins que vous ne fonctionniez avec un système UP ou avec un seul CPU en ligne. Pour découvrir combien de flux sont actuellement disponibles : sudo cat /sys/block/zram0/max_comp_streams

  • Initialiser et activer le SWAP zRAM en utilisant les commandes :
sudo mkswap /dev/zram0
sudo swapon /dev/zram0

mkfs.ext4 /dev/zram0
mount /dev/zram0 /tmp
  • Désactiver le SWAP zRAM en utilisant les commandes :
sudo swapoff /dev/zram0
sudo umount /dev/zram0

Il existe plusieurs moyens de vérifier si ZRAM fonctionne sur votre machine Linux. Voici quelques commandes courantes pour vérifier l'état de ZRAM :

#. Utilisez la commande cat /proc/swaps pour afficher la liste des périphériques de swap actuellement utilisés par le système, vous devriez voir un périphérique zram0 si zRAM est activé.

#. Utilisez la commande lsmod | grep zram pour vérifier si le module zRAM est actuellement chargé dans le noyau.

#. Utilisez la commande free -h pour vérifier l'utilisation de la mémoire physique et du swap.

#. Utilisez la commande cat /sys/block/zram0/disksize pour vérifier la taille configurée pour zRAM.

Ces commandes peuvent varier selon les distributions Linux. Il est donc préférable de consulter la documentation de votre distribution pour des instructions spécifiques, ou la documentation officielle https://www.kernel.org/doc/html/latest/admin-guide/blockdev/zram.html

Cédric ABONNEL (cedricabonnel), CPT & Kernel.org - Article publié le Dimanche 22 Janvier 2023