Le 5 octobre 2026 à Prague, Gregory Price, ingénieur chez Meta, a présenté à Linux Plumbers Conference CRAM, un service Linux de mémoire compressée identifié par l’implémentation testée mm/cram.c. Le projet déporte la compression vers le matériel, avec l’ambition de conserver un accès direct aux données plutôt que de les traiter comme du swap classique.

Comment CRAM accède à la mémoire compressée

Gregory Price décrit des données accessibles à l’échelle de la ligne de cache ou de l’octet. La mémoire compressée peut rester mappée dans les tables de pages et présente dans le cache de pages, sans défaut de page à la lecture ni étape de décompression logicielle.

C’est le contraste mis en avant avec ZRAM et Zswap : CRAM est décrit comme conservant un accès fin aux données compressées, même lorsqu’elles restent dans la mémoire. L’objectif est de rapprocher leur usage de celui de la mémoire vive ordinaire.

Ce que rapportent les essais

Dans le résumé de la séance, Gregory Price rapporte des performances proches de la DRAM sous TAOBench et FIO. Il indique aussi que l’implémentation a été testée pour la correction du cache de pages avec la plupart des systèmes de fichiers intégrés au noyau.

Pour les lectures de données en lecture seule, la présentation place CRAM au niveau de la DRAM. Le graphique inclut aussi ZRAM, Zswap et le swap sur disque ; il signale un reclaim stall, ou blocage lors de la récupération de mémoire, affectant les résultats de Zswap.

Pour les écritures, une diapositive annonce un débit de CRAM entre 5 et 37 fois supérieur à celui de ZRAM dans les cas représentés. Les charges comprennent une distribution Zipf à 0,99 et des accès aléatoires uniformes, présentés comme un cas défavorable.

Les fonctions du noyau concernées

Pour cette conception, Gregory Price cite la prise en charge de la mémoire anonyme, du cache de pages, de la récupération et de la démotion de pages, du ballooning mémoire, du signalement des pages libres, de la hiérarchisation de la mémoire et de l’allocation NUMA contrôlée. Le résumé de la séance indiquait que toutes ces fonctions sauf une existaient déjà dans le noyau, ou y avaient existé.