it-swarm.com.de

zram vs zswap vs zcache Ultimativer Leitfaden: Wann soll man welchen verwenden?

  1. Was zur Hölle sind sie? wie unterscheiden sie sich (ich habe mein Verständnis in einer Antwort unten geschrieben)
  2. Wenn im Zswap-System eine Seite aus dem Zswap in den tatsächlichen Swap verschoben wird, wird sie in einem komprimierten Archiv von gespeichert. (oder ist es vor dem Speichern dekomprimiert?, AFAICT es ist immer noch komprimiert, aber ich kann nicht sicher sein)
  3. Wie ist der aktuelle Stand von zcache? es wurde anscheinend entfernt oder so etwas in 3.11. Was bedeutet das? ( http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=96256460487387d28b8398033928e06eb9e428f7 )
55
staticd

In Bezug auf 2. scheint zswap die Seiten beim Zurückschreiben zu dekomprimieren, was den Kommentar von @ Cbhihe bestätigt.

mm/zswap.c , Zeile 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 ist daher in Situationen nützlich, in denen der komprimierte RAM-Cache wahrscheinlich kurz vor dem Zurückschreiben auf die Festplatte vergessen wird. Es ist nicht für Anwendungen mit großen, langlebigen Haufen gedacht, die eventuell vom eigentlichen Swap-Gerät unterstützt werden müssen.

2
mnish

Es gibt eine ganze Menge Dinge über diese drei Systeme, aber keines davon macht einen einfachen Vergleich zwischen ihnen, geschweige denn eine gute Erklärung. Ich versuchte es zu verstehen, aber mein Kopf explodierte. Dann dachte ich, ich hätte es verstanden, also versuchte ich es aufzuschreiben und mein Kopf explodierte erneut. (siehe Zusammenfassung der Implementierungen) Ich dachte, es wäre nützlich, dies hier zu posten, da es viele Stapelaustauschfragen gab, die sich mit paarweisen Vergleichen zwischen ihnen befassten.

Zusammenfassung dessen, was wann verwendet werden soll:

  1. ZRAM wenn Sie kein Swap-Gerät auf der Festplatte/SSD haben.
  2. ZSWAP wenn Sie ein Swap-Gerät auf Festplatte/SSD haben.
  3. ZCACHE: Er erledigt die Aufgaben von ZSWAP und komprimiert und beschleunigt auch den Seitencache des Dateisystems. (Es ist intern viel komplizierter und befindet sich nicht im Hauptkern, da es sich noch in der Entwicklung befindet.).

Zusammenfassung ihrer Implementierungen:

  1. ZRAM ist ein komprimiertes RAM-basiertes Swap-Gerät
  2. ZSWAP ist ein komprimierter Cache , wenn Sie bereits einen Swap haben.
  3. ZCache ist ein Backend für eine spezielle Art von Virtual RAM -Dingy (Transzendenter Speicher), mit dem Dateisystemseiten zwischengespeichert oder Daten ausgetauscht werden können.

Einzelheiten:

  • ZRAM: Erstellt ein Swap-Gerät im RAM. Hier gesendete Seiten werden beim Speichern komprimiert. Es hat eine höhere Priorität als andere Auslagerungsgeräte: Ausgelagerte Seiten werden vorzugsweise an das zram-Gerät gesendet, bis es voll ist. Erst dann werden andere Auslagerungsgeräte verwendet.

    • Vorteile: Unabhängig von anderen (physischen) Swap-Geräten. Es kann verwendet werden, wenn keine Swap-Partition vorhanden ist, um den verfügbaren Speicher zu erweitern.
    • Nachteile: Wenn andere Swap-Geräte (HDD/SSD) vorhanden sind, werden diese nicht optimal genutzt. Da das zram-Gerät ein unabhängiges Auslagerungsgerät ist, werden alle neuen Seiten, die ausgelagert werden müssen, direkt an das nächste Auslagerungsgerät gesendet, und zwar:
      1. Die Wahrscheinlichkeit einer LRU-Inversion (am wenigsten genutzte) ist groß: Es handelt sich um die zuletzt ausgelagerten Daten, die auf die langsame Festplatte übertragen werden, während inaktive Seiten, die vor langer Zeit ausgelagert wurden, im schnellen ZRAM verbleiben
      2. Die Daten, die an die Festplatte gesendet und von dieser gelesen werden, beanspruchen viel Bandbreite, da sie nicht komprimiert sind.
    • Status: Eingefügt in den Mainline-Kernel 3.14. Nach der Aktivierung auf einem System sind einige Benutzerkonfigurationen erforderlich, um die Swap-Geräte einzurichten und zu verwenden.
  • ZSWAP: Das frontswap System versucht, Seiten auszutauschen und verwendet zswap als Write-Back-Cache für Ein HDD/SSD-Auslagerungsgerät: Es wird versucht, die Seite zu komprimieren, und wenn sie schlecht komprimierbare Daten enthält, werden diese direkt auf die Festplatte geschrieben. Wenn die Daten komprimiert sind, werden sie im zswap-Speicherpool gespeichert. Wenn Seiten aus dem Arbeitsspeicher ausgelagert werden, wenn die Summe der komprimierten Seiten in RAM eine bestimmte Größe überschreitet, wird die zuletzt verwendete (LRU) komprimierte Seite in die geschrieben Festplatte, da es unwahrscheinlich ist, dass sie bald benötigt wird.

    • Vorteile: Sehr effizienter Einsatz von RAM und festplattenbasiertem Swap. Minimiert die Festplatten-E/A, indem sowohl die Anzahl der erforderlichen Schreib- und Lesevorgänge (Daten werden komprimiert und im RAM gespeichert) als auch die Bandbreite dieser E/A-Vorgänge reduziert werden, da die Daten in komprimierter Form vorliegen.
    • Einschränkungen: Es handelt sich um eine Verbesserung von festplattenbasierten Auslagerungssystemen und ist daher von einer Auslagerungspartition auf der Festplatte abhängig.
    • Status: Eingefügt in den 3.11 Mainline Linux Kernel.
  • ZCache: Es ist ein Backend für das Transcendent Memory System. Transzendenter Speicher bietet einen RAM-ähnlichen Speicher, auf den nur mit den Aufrufen put und get auf einer Seite gleichzeitig zugegriffen werden kann. Dies ist anders als bei normalem Speicher, auf den jeweils byteweise zugegriffen werden kann. Der Hook frontswap und cleancache versucht, Dateisystem-Seiten-Caches auszutauschen und wiederherzustellen und sie an die Backends des transzendenten Speichers zu senden. Wenn zcache als Backend verwendet wird, werden die Daten komprimiert und im RAM gespeichert. Wenn es voll ist, werden komprimierte Seiten in den Swap verschoben. (Ein alternatives Backend ist RAMster, das einen Pool von RAM auf vernetzten Computern gemeinsam nutzt.) Die Verwendung nur des frontswap Frontends mit dem zcache Backend funktioniert genauso wie die Verwendung von zswap. (Tatsächlich ist zswap eine vereinfachte Teilmenge von zcache.)

    • Vorteile Bietet komprimiertes Caching sowohl für Swap- als auch für Dateisystem-Caches.
    • Status: Da es sehr kompliziert ist und an dem gearbeitet wird, wird es immer noch nicht behandelt.

Die besten Ressourcen, die ich gefunden habe, waren:


75
staticd