zram vs zswap vs zcache Ultimate guide: ne zaman kullanılacağı


55
  1. Onlar da ne? nasıl farklılar (anlayışımı aşağıdaki cevaba yazdım)
  2. Zswap sisteminde, bir sayfa zswap'ten gerçek değiş tokuşa çıkarıldığında, sıkıştırılmış bir konumda mı saklanır? (ya da depolanmadan önce sıkıştırılmış mı ?, AFAICT hala sıkıştırılmış ama emin olamıyorum)
  3. Zcache'nin şu andaki durumu nedir? görünüşe göre 3.11 de kaldırılmış ya da bir şey. Ne anlama geliyor? ( http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=96256460487387d28b8398033928e06eb9e428f7 )

2
Cevap 2. Onay mesajı açıkça (zcache ile ilgili) yamaların 3.11'den kaldırıldığını, ancak ana mm ağacına dahil edileceğini açıkça belirtir.
askb

1
@staticd Neden kendi cevabınızı kabul etmediniz? Bu çok iyi!
Léo Léopold Hertz 준영

Bir sayfa zswap'tan sıkıştırıldığında (sıkıştırılmış takas önbellek) _ sıkıştırılmış_ürülür ve aşağıdaki takas cihazına, aşağıda verilen [ lwn.net/Articles/537422/] ...
Cbhihe

( lwn.net/Articles/537422 - " Devam eden geri yazma işlemi sırasında, zswap sayfayı açar ..."). Aşağıdaki mmin, bunun yetersiz veya hatta bir sunucu için sömürülebilir bir tehlike olabileceğini gösteriyor!
mwfearnley

Yanıtlar:


2

2. ile ilgili olarak, zswap @ cbhihe'nin yorumunu teyit ederek geri yazma üzerine sayfaları açıyor gibi görünüyor.

mm / zww.c.c , satır 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 <torvalds@linux-foundation.org>
Date:   Tue Oct 11 23:59:07 2016 -0700

Bu yüzden, zswap, sıkıştırılmış ram içi önbelleğin diske geri yazılmadan hemen önce unutulması muhtemel durumlar için kullanışlıdır. Sonunda gerçek takas cihazı tarafından desteklenmesi gereken büyük, uzun ömürlü yığınlara sahip uygulamalar için değildir.


7
Zswap'ın potansiyel olarak tehlikeli bir davranışını buldum. Bir uygulama çok sayıda sayfa tahsis ettiğinde ve onlara çok iyi sıkıştıran verileri (bir dizi sıfıra söyler) yazdığında, zswap onları mutlu bir şekilde çekirdek levha belleğinde saklar. Ancak, bir şey gerçek diskin değiştirilmesini tetiklediğinde, depolanan veriler aniden “patlar” - bellekte "yalnızca" gigabayt alan sayfalardaki birçok sıfır, şimdi diskteki yüzlerce gigabaytın üzerine çıkar.
mnish

2
Bir saldırgan, düşük entropi verilerini bir sunucuda depolamayı deneyebilir. Bir şey değişmeyi tetiklediğinde, sunucu ölmüş olur.
mnish

1
Bu durumu rapor ettiniz mi?
Ken Sharp,

Sıkıştırılmamış veri yazmanın bir başka dezavantajı 🤷
Mihail Malostanidis

Veriyi dekompresyonlu bir biçimde boşaltmak uzay ve zamana göre daha iyi olurdu! Gerçekten yapmasını istediğimiz bir şeye benziyor. Bunun için takas alanının yeniden yapılandırılmasının ya mevcut kodun çoğunu yeniden yazmayı içerdiğini ya da daha karmaşık bir tahsis sistemi gerektirdiğini varsayabilirim.
mwfearnley

75

Bu üç sistemle ilgili bir sürü şey var, ancak hiçbiri, bunları iyi açıklayabilmek için aralarında basit bir karşılaştırma yapmıyor. Anlamaya çalıştım ama başım patladı. Sonra aldığımı düşündüm, bu yüzden yazmayı denedim ve başım tekrar patladı. (uygulamaların özetine bakınız) Aralarında ikili karşılaştırmalar hakkında soran çok sayıda yığın değiştirme sorusu olduğu için bunu buraya göndermenin faydalı olacağını düşündüm.

Ne zaman kullanılacağının özeti:

  1. HDD / SSD'de takas cihazınız yoksa ZRAM .
  2. HDD / SSD üzerinde bir takas cihazınız varsa, ZSWAP .
  3. ZCACHE : ZSWAP ne yapar ve ALSO da dosya sistemi sayfa önbelleğini sıkıştırır ve hızlandırır. (Dahili olarak çok daha karmaşık ve hala geliştirilme aşamasında olduğu için ana hat çekirdeğinde değil).

Uygulamalarının özeti:

  1. ZRAM , sıkıştırılmış bir RAM tabanlı bir takas cihazıdır
  2. ZSWAP , zaten bir takasınız varsa , sıkıştırılmış bir Önbellektir .
  3. ZCache , dosya sistemi sayfalarını önbelleğe almak veya verileri değiştirmek için kullanılabilecek özel bir Sanal RAM türü (Transcendent belleği) için bir arka uçtur .

Detaylar:

  • ZRAM: RAM'de bir takas cihazı yapar. Buraya gönderilen sayfalar depolandıkça sıkıştırılır. Diğer takas cihazlarına göre daha yüksek önceliğe sahiptir: takas edilen sayfalar, doluncaya kadar tercihen zram cihazına gönderilir, ancak daha sonra kullanılan diğer takas cihazları vardır.

    • Faydaları: Diğer (fiziksel) takas cihazlarından bağımsız. Kullanılabilir hafızayı genişletmek için bir takma bölüm olmadığında kullanılabilir.
    • Dezavantajları: Başka takas cihazları (HDD / SSD) varsa, en iyi şekilde kullanılmazlar. Zram aygıtı bağımsız bir takas aygıtı olduğundan, bir kez dolduğunda, değiştirilmesi gereken tüm yeni sayfalar doğrudan bir sonraki takas aygıtına doğrudan gönderilir, bu nedenle:
      1. LRU (en az kullanılan) inversiyonun gerçek bir şansı var: Yavaş diske giden en yakın zamanda değiştirilen veriler olacak, uzun zaman önce değiştirilen etkin olmayan sayfalar ise hızlı ZRAM'da kalacak
      2. Diske gönderilen ve okunan veriler sıkıştırılmamış olduğu için çok fazla bant genişliği tüketecektir.
    • Durum: Ana hat çekirdeği 3.14 ile birleştirildi. Bir sistemde etkinleştirildikten sonra, takas aygıtlarını ayarlamak ve bunları kullanmak için bazı kullanıcı alanı yapılandırması gerekir.
  • ZSWAP:frontswap Sistem kancalar sayfaları takas çalışır gibi zswap kullanan geri yazma-cache bir HDD / SSD takas cihaz için: bir girişimde sayfasını sıkıştırmak için yapılmış ve kötü sıkıştırılabilir verileri içeriyorsa doğrudan diske yazılır. Veriler sıkıştırılırsa, zswap belleğinin havuzunda saklanır. RAM'deki toplam sıkıştırılmış sayfalar belirli bir boyutu aştığında sayfalar bellekten çıkarılırsa, en kısa zamanda kullanılması gerekmediğinden , En Son Kullanılan En Az (LRU) sıkıştırılmış sayfa diske yazılır.

    • Faydaları: Çok verimli kullanım RAM ve disk tabanlı takas. Hem yazma hem de gerekli okuma sayısını azaltarak (veri RAM'de tutulur) ve veri sıkıştırılmış bir formdayken bu G / Ç işlemlerinin bant genişliğini azaltarak Disk G / Ç işlemlerini en aza indirir.
    • Sınırlamalar: Disk tabanlı takas sistemlerinin bir geliştirilmesidir ve bu nedenle sabit diskteki bir takas bölümüne bağlıdır.
    • Durum: 3.11 ana hat linux çekirdeği ile birleştirildi.
  • ZCache: Transcendent bellek sistemi için bir arka uç. Aşkın hafıza, bir sayfaya bir defada putve getçağrıları kullanarak erişilebilen RAM benzeri bir hafıza sunar . Bu, bir defada bir byte'a erişilebilen normal belleğe benzemez. frontswapVe cleancachesistemler kanca girişimlerini takas ve sırasıyla dosya sistemi sayfa önbelleklerini geri ve aşkın hafıza backends gönderebilirsiniz. Zcache arka uç olarak kullanıldığında, veriler sıkıştırılır ve RAM'de saklanır. Doldurulduğunda, sıkıştırılmış sayfalar değiş tokuşa çıkarılır. (alternatif bir arka uç, ağdaki bilgisayarlar arasında bir RAM havuzunu paylaşan RAMster'dır). Sadece frontswapön zcacheucu arka uçla kullanmak aynı şekilde çalışır zswap. (Aslında zswap, basitleştirilmiş bir zcache alt kümesidir)

    • Faydaları Hem takas hem de dosya sistemi önbellekleri için sıkıştırılmış önbellekleme sağlar.
    • Durum: Çok karmaşık olduğu ve üzerinde çalıştığı için hala netleştirilmemiştir.

Bulduğum en iyi kaynaklar:



6
Hem zram hem de zswap kullanmak mümkün mü ve / veya makul mü?
Phlya

2
Üç ihtiyaçtan hiçbiri / aynı anda çalıştırılmamalıdır. zswap, tahsis edilmiş bir bölümlendirme gerektirmeyen ZRAM'ın aksine bir arka uç olarak disk tabanlı bir takas alanına ihtiyaç duyar. Bununla birlikte eğer takas yaptıysanız, ZRAM + takas bölümü zswap + takas bölümünden çok daha az etkilidir.
statik

Nasıl aktif hale getireceğinizi burada özetler misiniz zswap? İşte askubuntu.com/a/361321/25388
Léo Léopold Hertz 준영


1
Belirten Her cevap zrambir olduğunu swaptamamen yanlıştır. zramBir DEĞİLDİR swap. swapSadece saklanabilir CAN zram. Ancak bu, olası birçok kullanım durumundan biridir! İşte bir örnek: "Bazı kullanım alanları arasında / tmp saklama alanı, takas diski olarak kullanım, / var altında çeşitli önbellek ve belki daha pek çok şey vardır :)" kernel.org/doc/Documentation/blockdev/zram.txt Örneğin; diğer normal blok aygıtları gibi biçimlendirdiğim ve taktığım geçici depolama.
Victor Yarema
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.