Augmenter la RAM artificiellement et éviter des plantages de session

Toujours sous Ubuntu 24.04.
Toujours content mais le système commence à s’alourdir un peu.

Malheureusement, mon PC portable de travail étant un Dell XPS 13 de 2016 qui tient toujours très bien la route (à part la batterie HS mais possible à changer), la RAM n’est pas extensible, de ce fait il commence à y avoir quelques lenteurs avec des pages web qui s’amusent à bouffer toute la RAM…

Et du coup, comme Excel n’est toujours pas disponible sous Linux (enfin si, il y a les versions Office 365 gratuites mais limitées, et qu’on ne me parle pas d’OnlyOffice qui crash régulièrement et qui n’a pas toutes les fonctions qu’Excel propose, du coup c’est la galère pour reprendre le travail déjà commencé sur Excel) j’ai dû me résigner à réinstaller une machine virtuelle pour faire tourner Office

Sachant qu’il faut bien 4 Go de RAM, sur mes 8 Go disponibles c’est très limité.

J’ai alors augmenté la taille de mon SWAP (cette micro-partition qui permet à la RAM de se décharger sur le SSD quand elle est à 60% de sa capacité par défaut) de 4 Go à 8 Go. Mais c’est assez lent tout de même.
Et en cherchant un peu je suis tombé sur ZSWAP et ZRAM.

Alors, la différence est assez subtile et dépend du besoin.

ZSWAP ne remplace pas le SWAP mais sert de « filtre » entre le SWAP et la RAM. En gros, il compresse les données de la RAM pour les garder dans la RAM (donc optimise le volume de données pouvant être stocké dans la RAM) mais décharge dans le SWAP si besoin.

ZRAM crée une partition SWAP dans la RAM directement. C’est une optimisation de la RAM pour compresser les données dans la RAM. L’avantage c’est que c’est hyper rapide mais d’un autre côté il n’y a rien d’écrit, donc si ça plante en cas de surcharge on perd les infos.

La compression n’étant pas magique, ça utilise la puissance CPU du processeur.
Le processeur n’étant pas non plus infini, c’est un choix à faire.

ZSWAP est moins gourmand en énergie, ZRAM est plus agressif (mais c’est réglable en fonction de l’algorithme de compression qu’on choisit apparemment) et consomme plus de CPU mais est mieux pour compresser la RAM.

Personnellement, j’ai choisi ZSWAP par sécurité et je me limite à l’utilisation de la machine virtuelle avec un navigateur léger comme Chromium sur Ubuntu pour ne pas trop en demander et avoir le minimum (ma session Firefox a besoin que je prenne le temps de lire les 300 onglets ouverts ahah).


Procéder en plusieurs étapes

Modifier la taille du swap actuel

Désactiver le swap actuel

sudo swapoff -a

Créer le nouveau fichier de swap (8G pour 8 Go)

sudo fallocate -l 8G /swap.img

Sécuriser le fichier

sudo chmod 600 /swap.img

Formater le fichier en « Swap »

sudo mkswap /swap.img

Réactiver le swap

sudo swapon /swap.img

Vérifier que tout est correct

free -h

Changer le swappiness

Le « swappiness » c’est le % de remplissage de la RAM avant transfert au SWAP.
Par défaut la valeur est à 60. Donc le transfert se fait quand 40% de la RAM est occupée.
Du coup on perd en vitesse alors qu’il reste encore 60% de RAM.
J’ai choisi la valeur de 10, donc j’attends que 90% de la RAM soit pleine pour « swaper ».

Vérifier la valeur actuelle

cat /proc/sys/vm/swappiness

Tester une nouvelle valeur (ouvrir plein de fenêtres et d’onglets pour charger la RAM) et ouvrir le « moniteur système » pour voir la différence)

sudo sysctl vm.swappiness=10

Rendre le réglage permanent

sudo nano /etc/sysctl.conf

Ajouter tout en bas après les lignes commentées

vm.swappiness=10

Sauvegarde avec Ctrl+O, puis Entrée, et quitte avec Ctrl+X.

Activer ZSWAP

Ouvrir GRUB pour l’activer au démarrage

sudo nano /etc/default/grub

Chercher la ligne GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" et la modifier en GRUB_CMDLINE_LINUX_DEFAULT="quiet splash zswap.enabled=1"

Sauvegarde (Ctrl+O, puis Entrée) et quitte (Ctrl+X).

Puis mettre à jour le GRUB

sudo update-grub

Redémarrer le PC.

Refaire un test avec les onglets et les fenêtres et vérifier :

sudo grep -r . /sys/kernel/debug/zswap/

Ce qu’il faut regarder :

  • stored_pages : C’est le nombre de pages de mémoire compressées. Si ce chiffre est supérieur à 0, c’est que zswap fonctionne.
  • pool_total_size : C’est la place réelle que prend le swap compressé dans la RAM.

Avec ça, la machine virtuelle fonctionne bien et mon PC ne plante pas !

Petit bonus :

Si Firefox vous fait planter le PC parfois, faire Maj + Échap pour voir quel onglet ou extension bouffe les ressources et l’arrêter.

Gérer le manque de RAM (EarlyOOM)

Sur Ubuntu, quand la RAM est pleine, le système « gèle » souvent avant de réagir. EarlyOOM est un petit outil qui intervient plus tôt pour tuer l’application gourmande (comme Firefox) avant que toute la session ne plante et risquer de tout perdre.

Installation : sudo apt install earlyoom

Activation : sudo systemctl enable --now earlyoom

Désormais, si la RAM sature, Firefox sera fermé proprement, mais votre session Ubuntu restera ouverte.


Pour mieux comprendre, j’ai demandé à Gemini de me faire une beau récap’ entre les 2 avec leur différents paramètres :

Caractéristiquezswapzram
TypeCache de compression (intermédiaire)Disque virtuel compressé (swap direct)
Nécessite un swap disque ?Oui (obligatoire pour fonctionner)Non (peut remplacer le disque)
Gestion de la tailleDynamique (utilise un % max de la RAM)Fixe (taille définie au démarrage)
Comportement si pleinDéplace les données vers le disqueUtilise le swap disque (si prio basse)
Usage idéalPC avec SSD/HDD et usage standardMachines sans disque, Raspberry Pi, Android

Le choix de l’algorithme (Compressor)

L’algorithme est le « moteur » qui compresse vos données. Voici les trois plus courants pour les deux systèmes :

1. zstd (Le favori moderne)

  • Points forts : Excellent taux de compression (gagne plus de place).
  • Points faibles : Utilise un peu plus de CPU que lzo.
  • Utilisation : Idéal pour les processeurs récents (Intel Core, AMD Ryzen) où l’on veut maximiser la RAM disponible.

2. lz4 (Le sprinteur)

  • Points forts : Ultra-rapide pour décompresser. Presque aucun impact sur le processeur.
  • Points faibles : Compresse moins bien (les fichiers restent plus gros).
  • Utilisation : PC anciens, processeurs faibles (Atom, Celeron) ou si vous jouez à des jeux très gourmands.

3. lzo / lzo-rle (Le classique)

  • Points forts : Très stable, souvent l’option par défaut historique.
  • Points faibles : Dépassé par lz4 en vitesse et par zstd en compression.
  • Utilisation : Compatibilité par défaut si vous ne voulez rien toucher.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

Possibilité d'ajouter une balise de SPOILER via la syntaxe suivante :
[spoiler] Texte à cacher [/spoiler]

Possibilité d'ajouter une balise de SPOILER via la syntaxe suivante
[spoiler] Spoil à cacher [/spoiler]