Compression de mémoire virtuelle

From Wikipedia, the free encyclopedia

La compression de mémoire virtuelle (en anglais, virtual memory compression, RAM compression ou memory compression) est une technique de gestion de mémoire virtuelle qui utilise la compression de données pour réduire la taille ou le nombre de requêtes de pagination vers et depuis le stockage auxiliaire.

Dans un système de compression de mémoire virtuelle, les pages sont compressées et stockées dans la mémoire physique, généralement une mémoire RAM, ou envoyées compressées vers un stockage auxiliaire, tel qu'un disque dur ou un disque SSD. Dans les deux cas, la plage de mémoire virtuelle dont le contenu a été compressé est inaccessible, de sorte que les tentatives d'accès aux pages compressées déclenchent des erreurs de page et inversent le processus de compression (récupération des informations et décompression). L'empreinte des données paginées est réduite par le processus de compression et la mémoire RAM libérée est renvoyée dans le pool de mémoire physique disponible. Dans le cas où les pages compressées sont conservées dans la mémoire RAM, les pages compressées utilisent évidemment moins d'espace que les pages originales. Dans le cas où les pages compressées sont conservées dans un stockage auxiliaire, la mémoire RAM est complètement libérée et les opérations d'écriture et de lecture sur la mémoire auxiliaire sont plus rapides que si les pages n'avaient pas été compressées[1],[2].

Dans certaines implémentations, incluant zswap (en), zRam et Helix de Hurricane Software Company, l'ensemble du processus est implémenté au moyen de logiciel. Dans d'autres systèmes, tels que MXT d'IBM, le processus se fait dans un processeur dédié qui gère les transferts entre un cache local et la mémoire RAM.

En réduisant les activités d'entrée / sortie causées par les demandes de pagination, la compression de la mémoire virtuelle peut entraîner des améliorations globales de performances. Le degré d'amélioration de performances dépend de divers facteurs, notamment la disponibilité de co-processeurs de compression, la bande passante disponible sur le processeur, la vitesse du canal d'entrée-sortie, la vitesse de la mémoire physique et la compressibilité du contenu de la mémoire.

Sur les processeurs multicore et multithread, certains benchmarks montrent des améliorations de performances de plus de 50 %[3],[4].

Dans certaines situations, comme dans les systèmes embarqués, le stockage auxiliaire est limité ou inexistant. Dans ces cas, la compression de la mémoire virtuelle peut permettre à un système de mémoire virtuelle de fonctionner, alors que la mémoire virtuelle devrait sinon être désactivée. Cela permet au système d'exécuter certains logiciels qui seraient autrement incapables de fonctionner dans un environnement sans mémoire virtuelle.

La mémoire flash a certaines limites d'endurance relativement au nombre maximum de cycles d'effacement qu'elle peut subir, qui peut être aussi bas que 100 cycles d'effacement. Dans les systèmes où la mémoire flash est utilisée comme seul système de stockage auxiliaire, la mise en œuvre de la compression de la mémoire virtuelle peut réduire la quantité totale de données écrites dans le stockage auxiliaire, améliorant ainsi la durée de vie du système.

Faiblesses

Histoire

Références

Related Articles

Wikiwand AI