web-dev-qa-db-fra.com

zram vs zswap vs zcache Guide ultime: quand utiliser lequel

  1. Qu'est-ce qu'ils sont? en quoi 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 du transfert zswap vers l'échange 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é supprimé ou quelque chose de ce qui est en 3.11. Qu'est-ce que ça veut dire? ( http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=96256460487d28b8398033928e06eb9e428f7 )
55
staticd

En ce qui concerne 2., zswap semble décompresser les pages lors de l'écriture différée, confirmant ainsi 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

Donc, zswap est utile dans les situations où le cache in-ram compressé est susceptible d'être oublié peu de temps avant d'être réécrit sur le disque. Ce n'est pas pour les applications avec de grands tas de vie longue qui devront éventuellement être supportés par le périphérique d'échange réel.

2
mnish

Il y a beaucoup de choses sur ces trois systèmes, mais rien de tout cela ne permet une simple comparaison, et encore moins une bonne explication. J'ai essayé de comprendre, mais ma tête a explosé. Puis j'ai pensé l'avoir eu alors j'ai essayé de l'écrire et ma tête a explosé à nouveau. (Voir le résumé des implémentations) J'ai pensé qu'il serait utile de poster ceci ici car il y avait beaucoup de questions 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 d'échange sur le disque dur/SSD.
  2. ZSWAP si vous avez un périphérique d'échange sur le disque dur/SSD.
  3. ZCACHE: Il fait ce que ZSWAP fait et AUSSI compresse et accélère le cache de page du système de fichiers. (C'est beaucoup plus compliqué en interne et ne se trouve 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 compressé RAM
  2. ZSWAP est un cache compressé si vous avez déjà un swap.
  3. ZCache est un backend pour un type spécial de Virtual RAM thingy (mémoire transcendantale) pouvant être utilisé pour mettre en cache des pages de système de fichiers ou échanger des données.

Détails:

  • ZRAM: Crée un périphérique de swap dans la RAM. Les pages envoyées ici sont compressées au fur et à mesure de leur stockage. Il a une priorité plus élevée que les autres périphériques de swap: les pages qui sont permutées sont de préférence envoyées au périphérique zram jusqu'à ce qu'il soit plein, puis tous les autres périphériques de swap utilisés.

    • Avantages: Indépendamment des autres périphériques de swap (physiques). Il peut être utilisé lorsqu'il n'y a pas de partition d'échange 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 d'échange indépendant, une fois qu'il est plein, toutes les nouvelles pages à remplacer sont directement envoyées au prochain périphérique d'échange, d'où:
      1. Il existe un risque réel d'inversion de LRU (le moins récemment utilisé): ce seront les dernières données échangées qui iront sur le disque lent, tandis que les pages inactives qui ont été échangées il y a bien longtemps resteront dans la mémoire ZRAM rapide.
      2. Les données envoyées au disque et lues à partir du disque consomment beaucoup de bande passante car elles sont décompressées.
    • Statut: fusionné dans le noyau principal 3.14. Une fois activé sur un système, une configuration de l'espace utilisateur est nécessaire pour configurer les périphériques d'échange et les utiliser.
  • ZSWAP: Le système frontswaptente de permuter les pages et utilise zswap comme cache-retour pour un disque dur/SSD. swap device: une tentative est faite pour compresser la page 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 mémoire zswap. Si les pages sont remplacées par trop de mémoire lorsque le nombre total de pages compressées dans RAM dépasse une certaine taille, la page La moins récemment utilisée (LRU) compressée est écrite dans le fichier disque car il est peu probable qu’il soit nécessaire bientôt.

    • Avantages: Utilisation très efficace RAM et échange sur disque. Minimise les E/S de disque en réduisant à la fois 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 car les données sont sous une forme compressée.
    • Limitations: Il s'agit d'une amélioration des systèmes de swap basés sur disque et dépend donc d'une partition de swap sur le disque dur.
    • Statut: Fondu dans le noyau linux principal 3.11.
  • ZCache: C'est un backend pour le système de mémoire Transcendent. La mémoire transcendante fournit une mémoire de type RAM à laquelle une seule page à la fois est accessible à l'aide d'appels putet getname__. Cela diffère de la mémoire normale à laquelle on peut accéder octet par octet. Les hooks frontswapet cleancachetentent respectivement d'échanger et de récupérer les caches de page de système de fichiers et de les envoyer aux serveurs de mémoire transcendants. Lorsque zcache est utilisé en tant que backend, les données sont compressées et stockées dans la RAM. Quand il se remplit, les pages compressées sont expulsées à l'échange. (un autre serveur est RAMster qui partage un pool de RAM sur des ordinateurs en réseau). L’utilisation exclusive de frontswapavec le zcachefonctionne de la même manière que zswapname__. (En fait, zswap est un sous-ensemble simplifié de zcache)

    • Avantages Fournit une mise en cache compressée pour les caches de swap et de système de fichiers.
    • Statut: Toujours pas en ligne car c'est très compliqué et on y travaille.

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


75
staticd