zram vs zswap vs zcache Guide ultime: quand utiliser lequel

42
  1. Qu'est-ce qu'ils sont? Comment sont-ils différents (j'ai écrit ma compréhension dans une réponse ci-dessous)
  2. Dans le système Zswap, lorsqu'une page est expulsée de zswap vers le swap réel, est-elle stockée dans un fichier compressé? (ou est-il décompressé avant de stocker?, AFAICT est toujours compressé mais je ne peux pas en être sûr)
  3. Quel est l'état actuel de zcache? il a apparemment été enlevé ou quelque chose dans 3.11. Qu'est-ce que ça veut dire? ( lien )
posée staticd 25.05.2014 - 15:29
la source

2 réponses

60

Il y a beaucoup de choses sur ces trois systèmes mais rien ne permet de les comparer facilement, encore moins de les expliquer. J'ai essayé de comprendre, mais ma tête a explosé. Alors j'ai pensé que je l'avais eu alors j'ai essayé de l'écrire et ma tête a explosé à nouveau. (voir le résumé des implémentations) Je pensais qu'il serait utile de poster ceci ici, car il y avait beaucoup de questions sur le stackexchange demandant des comparaisons par paires entre elles.

Résumé de ce qu'il faut utiliser quand:

  1. ZRAM si vous n’avez pas de périphérique de swap sur disque dur / SSD.
  2. ZSWAP si vous disposez d’un périphérique de swap sur disque dur / SSD.
  3. ZCACHE : il fait ce que fait ZSWAP et compresse et accélère le cache des pages du système de fichiers. (Il est beaucoup plus compliqué en interne et ne figure pas dans le noyau principal, car il est encore en développement).

Résumé de leurs implémentations:

  1. ZRAM est un périphérique d'échange de mémoire RAM compressé
  2. ZSWAP est un cache compressé si vous disposez déjà d’un échange.
  3. ZCache est un backend pour un type spécial de Thème virtuel RAM (mémoire transcendantale) pouvant être utilisé pour mettre en cache des pages de système de fichiers ou des données d'échange.

Détails:

  • ZRAM: crée un périphérique de swap dans la mémoire vive. Les pages envoyées ici sont compressées lorsqu'elles sont stockées. Sa priorité est supérieure à celle des autres périphériques de swap: les pages échangées sont envoyées préférentiellement au périphérique zram jusqu’à ce qu’elles soient pleines, seuls les autres périphériques de swap sont utilisés.

    • Avantages: Indépendant des autres périphériques de swap (physiques). Il peut être utilisé en l’absence de partition de swap pour étendre la mémoire disponible.
    • Inconvénients: Si d'autres périphériques de swap (HDD / SSD) sont présents, ils ne sont pas utilisés de manière optimale. Le périphérique zram étant un périphérique de swap indépendant, une fois qu'il est plein, toutes les nouvelles pages à échanger sont envoyées directement au périphérique de swap suivant:
      1. Il y a une chance réelle d'inversion LRU (moins récemment utilisée): ce sont les données les plus récemment échangées qui vont sur le disque lent, alors que les pages inactives qui ont été interverties il y a longtemps resteront dans la ZRAM rapide
      2. Les données envoyées et lues sur le disque consomment beaucoup de bande passante car elles ne sont pas compressées.
    • Statut: Fusion dans le noyau principal 3.14. Une fois activé sur un système, il nécessite une configuration de l'espace utilisateur pour configurer les périphériques de swap et les utiliser.
  • ZSWAP: Le système frontswap connecte les tentatives de remplacement des pages et utilise zswap comme write-back-cache pour un périphérique d'échange HDD / SSD: une tentative de compression de la page est effectuée et si elle contient des données peu compressibles, elle est directement écrite sur le disque. Si les données sont compressées, elles sont stockées dans le pool de la mémoire zswap. Si les pages sont supprimées de la mémoire lorsque le nombre total de pages compressées dans la RAM dépasse une certaine taille, la page LRU ( recemment utilisée) est écrite sur le disque. / p>

    • Avantages: Utilisation très efficace de la RAM et du swap sur disque. Minimise les E / S de disque en réduisant le nombre d'écritures et de lectures requises (les données sont compressées et conservées dans la RAM) et en réduisant la bande passante de ces opérations d'E / S, les données étant sous une forme compressée.
    • Limitations : il s’agit d’une amélioration des systèmes de swap sur disque et dépend donc d’une partition de swap sur le disque dur.
    • Status: Fusion dans le noyau Linux 3.11.
  • ZCache: c'est un backend pour le système de mémoire transcendant. La mémoire transcendante fournit une mémoire de type RAM qui ne peut être consultée qu'une page à la fois en utilisant les appels put et get . Ceci est différent de la mémoire normale accessible à un octet à la fois. Le hook frontswap et cleancache systems tente de permuter et de récupérer respectivement les caches de page du système de fichiers et de les envoyer aux backends de la mémoire transcendante. Lorsque zcache est utilisé comme backend, les données sont compressées et stockées dans la RAM. Quand il se remplit, les pages compressées sont expulsées du swap. (Un backend alternatif est RAMster qui partage un pool de RAM sur des ordinateurs en réseau). En utilisant uniquement le frontend frontswap avec le backend zcache fonctionne exactement comme zswap . (En fait, zswap est un sous-ensemble simplifié de zcache)

    • Avantages : fournit une mise en cache compressée à la fois pour le swap et pour les caches de système de fichiers.
    • État: toujours pas détaillé, car très complexe et en cours de développement.

Les meilleures ressources que j'ai trouvées étaient:

réponse donnée staticd 26.05.2014 - 06:29
la source
3

Concernant 2., zswap semble décompresser les pages en écriture, confirmant le commentaire de @ Cbhihe.

mm / zswap.c , ligne 828:

/*
 * Attempts to free an entry by adding a page to the swap cache,
 * decompressing the entry data into the page, and issuing a
 * bio write to write the page back to the swap device.
 * ...
 */
static int zswap_writeback_entry(struct zpool *pool, unsigned long handle)
{
    ...

    case ZSWAP_SWAPCACHE_NEW: /* page is locked */
        /* decompress */
        ...

        ret = crypto_comp_decompress(tfm, src, entry->length,
                         dst, &dlen);
        ...
        kunmap_atomic(dst);    


$ git show
commit 1573d2caf713874cfe0d1336c823d0fb548d8bed
Merge: 4cdf8db 0a86248
Author: Linus Torvalds <[email protected]>
Date:   Tue Oct 11 23:59:07 2016 -0700

zswap est donc utile dans les situations où le cache in-ram compressé est susceptibles d'être oubliés peu de temps avant réécrit sur le disque. Ce n'est pas pour les applications avec de grandes, longues des tas vivants qui devront éventuellement être soutenus par le dispositif de swap proprement dit.

    
réponse donnée mnish 12.10.2016 - 14:18
la source

Lire d'autres questions sur les étiquettes