zswap vs zram (vs Zcache)

Quelle compression de RAM/Swap choisir sur les vieilles machines ?

Linux permet normalement de remettre en service du vieux matériel. Cependant, si c'est possible sur le papier, ça reste plus compliqué en pratique, les vieilles machines étant généralement limitées par la quantité de RAM ce qui altère nettement les performances de distributions « taillées pour ».

Pour compenser cela, il existe des mécanismes de compression de RAM pour augmenter la mémoire vive disponible sans avoir à installer de nouveaux modules de mémoire. zram, zswap et Zcache vous permettent de compresser le contenu de la RAM de votre PC.

Si vous avez moins de 4 Go de RAM ou bien un système d'exploitation reposant sur un disque lent (comme une carte SD dans le cas d'un Raspberry Pi) alors vous devriez envisager l'une de ces solutions.

Mais laquelle choisir ?

zram

zram est la solution de compression RAM la plus simple sous Linux aujourd'hui. Anciennement connu sous le nom de compcache, il tire parti de la prise en charge par Linux de plusieurs périphériques d'échange (swap) en en créant un (ou plusieurs) supplémentaire(s) dans la RAM de l'ordinateur.

zram fonctionne en créant une hiérarchie de trois espaces de stockage. Il crée un nouveau volume d'échange compressé dans la RAM, qui est - hiérarchiquement - placé entre la RAM et les périphériques de stockage. Ensuite, lorsque la RAM est remplie de données, il déplace l'excédent vers le swap compressé. Lorsque celle-ci est également remplie, zram commence à déplacer les données vers la partition d'échange du lecteur de stockage – si elle existe.

Il convient, en effet, de noter que zram fonctionne seul, sans avoir besoin d'autres périphériques d'échange. Ainsi, vous pouvez, par exemple, l'utiliser dans des systèmes embarqués ou des CD en direct, car il n'a pas besoin d'être soutenu par un stockage réel.

Ce nouveau périphérique d'échange se voit attribuer une priorité plus élevée que ceux qui résident dans le stockage réel plus lent du PC, pour être utilisé avant eux. Il s'appuie également sur l'un des nombreux algorithmes de compression, comme LZ4 ou LZO, pour entasser autant de données que possible dans ce périphérique d'échange.

Les processeurs modernes ont atteint un point où ils peuvent compresser et décompresser les données stockées dans la RAM plus rapidement qu'elles ne pourraient être écrites ou lues sur un disque SSD ou HDD, avec une conséquence sur les performances globales de l'ordinateur.

zswap

zswap est plus complexe que zram. Il améliore la relation entre la RAM de l'ordinateur et ses périphériques de stockage plus lents en ajoutant une compression intelligente là où ils se croisent.

Avec zswap, la RAM compressée et les volumes d'échange qui existent déjà dans les périphériques de stockage d'un ordinateur sont traités comme des nœuds dans un système de stockage intelligent.

zswap occupe également une partie de la RAM d'un ordinateur mais ne déplace pas aveuglément tout ce qui ne rentre pas dans le reste de la RAM, puis essaie de le compresser. Au lieu de cela, il compresse d'abord tout ce qui ne rentre pas dans la RAM réelle. Si les données sont compressées, zswap les stocke d'abord dans la RAM. Si ce n'est pas le cas, il le stocke dans le swap existant. De cette façon, zswap tire mieux parti de la RAM disponible et de l'espace d'échange puisqu'il ne monopolisera pas, par exemple, la RAM avec des données incompressibles.

Puisqu'il s'appuie sur le swap existant, zswap convient mieux aux installations Linux sur tous les PC, en particulier ceux disposant de moins de 4 Go de RAM.

Zcache

Zcache fonctionne en tandem avec le système tmem ("Transcendent Memory") pour offrir à Linux – le noyau – un moyen plus polyvalent de stocker des données non utilisées actuellement.

Zcache ajoute une couche transparente supplémentaire de gestion de la mémoire sur le noyau qui compresse toutes les données qui ne sont pas actuellement utilisées. Contrairement à la nécessité de gérer chaque octet de données, avec Zcache, le noyau Linux peut stocker des pages entières de données dans des « pools » via l'interface de tmem. Zcache compresse ensuite ces groupes de données en arrière-plan.

Comme zswap, Zcache ne conserve que les données compressées dans la RAM et charge les pages non compressées vers le swap réel, faisant ainsi le meilleur usage des deux.

Conclusion : quel est le meilleur ?

Zcache

En théorie, Zcache offre la meilleure des solutions. Cependant, cela ne signifie pas que c'est la voie à suivre, car l'aspect pratique compte également. Malgré ses fonctionnalités avancées, Zcache est largement non pris en charge et peut être remplacé par zswap, disponible par défaut.

zram

zram est équivalent à un swap stocké dans la RAM. Il est bien adapté aux systèmes ne disposant pas d'espace d'échange ou utilisant un disque lent et/ou fragile.

C'est par exemple un choix à considérer dans le cas d'un Raspberry Pi.

zswap

zswap reste le meilleur choix pour la plupart des utilisateurs Linux, quelle que soit leur distribution sur les machines anciennes disposant de peu de RAM et d'un swap physique disponible.