zram vs zswap vs zcache Guia final: quando usar qual

42
  1. O que diabos eles são? como eles são diferentes (eu escrevi meu entendimento em uma resposta abaixo)
  2. No sistema Zswap, quando uma página é despejada do zswap para a troca real, ela é armazenada em um arquivo compactado? (ou é descompactado antes de armazenar ?, AFAICT ainda está comprimido, mas não tenho certeza)
  3. Qual é o estado atual do zcache? foi aparentemente removido ou algo em 3.11. O que isto significa? ( link )
por staticd 25.05.2014 / 15:29

2 respostas

59

Há um monte de coisas sobre esses três sistemas, mas nada disso faz uma simples comparação entre eles, quanto mais explicá-los bem. Eu tentei entender, mas minha cabeça explodiu. Então eu pensei que tinha entendido, então tentei escrever e minha cabeça explodiu novamente. (veja o resumo das implementações) Eu pensei que seria útil postar isso aqui, pois havia muitas perguntas do stackexchange perguntando sobre comparações entre pares.

Resumo do que usar quando:

  1. ZRAM se você não tiver nenhum dispositivo de troca no HDD / SSD.
  2. ZSWAP se você tiver um dispositivo de troca no HDD / SSD.
  3. ZCACHE : Ele faz o que o ZSWAP faz e TAMBÉM compacta e acelera o cache de páginas do sistema de arquivos. (É internamente muito mais complicado e não está no kernel da linha principal, pois ainda está em desenvolvimento).

Resumo de suas implementações:

  1. ZRAM é um dispositivo de troca baseado em RAM comprimido
  2. ZSWAP é um Cache compactado se você já tiver uma troca.
  3. O ZCache é um back-end para um tipo especial de Coisa de RAM Virtual (Memória Transcendente) que pode ser usada para armazenar em cache páginas do sistema de arquivos ou trocar dados.

Detalhes:

  • ZRAM: Cria um dispositivo de troca na RAM. As páginas enviadas aqui são compactadas conforme são armazenadas. Ele tem uma prioridade mais alta que outros dispositivos de troca: as páginas que são trocadas são preferencialmente enviadas para o dispositivo zram até que ele esteja cheio, só então são usados outros dispositivos de troca.

    • Benefícios: Independente de outros dispositivos de troca (físicos). Pode ser usado quando não há partição swap para expandir a memória disponível.
    • Desvantagens: Se outros dispositivos de troca (HDD / SSD) estiverem presentes, eles não serão usados de maneira ideal. Como o dispositivo zram é um dispositivo de troca independente, uma vez que ele está cheio, qualquer nova página que precise ser trocada é enviada para o próximo dispositivo de troca diretamente, portanto:
      1. Existe uma chance real de inversão de LRU (menos usada recentemente): serão os dados trocados mais recentemente que vão para o disco lento, enquanto as páginas inativas que foram trocadas há muito tempo permanecerão no ZRAM rápido
      2. Os dados enviados e lidos do disco consomem muita largura de banda quando são descompactados.
    • Status: Fundido no kernel da linha principal 3.14. Uma vez ativado em um sistema, é necessária alguma configuração do espaço do usuário para configurar os dispositivos de troca e usá-los.
  • ZSWAP: O sistema frontswap captura tentativas de trocar páginas e usa o zswap como write-back-cache para um dispositivo de troca HDD / SSD: É feita uma tentativa de compactar a página e, se ela contiver dados mal compactados, gravará diretamente o disco. Se os dados forem compactados, eles serão armazenados no pool de memória zswap. Se as páginas forem trocadas sem memória quando o total de páginas compactadas na RAM exceder um determinado tamanho, a página menos compactada (LRU) compactada será gravada no disco, já que é improvável que seja necessária em breve. / p>

    • Benefícios: Utilização muito eficiente de RAM e troca baseada em disco. Minimiza a E / S do disco reduzindo o número de gravações e leituras necessárias (os dados são compactados e mantidos na RAM) e reduzindo a largura de banda dessas operações de E / S, pois os dados estão em uma forma compactada.
    • Limitações: É um aprimoramento dos sistemas de troca baseados em disco e, portanto, depende de uma partição de troca no disco rígido.
    • Status: Fundido no kernel linux mainline 3.11.
  • ZCache: É um back-end para o sistema de memória Transcendente. A memória transcendente fornece uma memória semelhante à RAM que só pode ser acessada uma página por vez usando as chamadas put e get . Isso é diferente da memória normal que pode ser acessada um byte de cada vez. O gancho frontswap e cleancache systems tenta trocar e recuperar caches de páginas do sistema de arquivos, respectivamente, e enviá-los para os backends de memória transcendente. Quando o zcache é usado como backend, os dados são compactados e armazenados na RAM. Quando ele é preenchido, as páginas compactadas são despejadas no swap. (um backend alternativo é o RAMster que compartilha um pool de RAM através de computadores em rede). Usar apenas o frontend frontswap com o backend zcache funciona como zswap . (Na verdade, o zswap é um subconjunto simplificado do zcache)

    • Benefícios Fornece armazenamento em cache compactado para caches de swap e de sistema de arquivos.
    • Status: Ainda não é mainlined, pois é muito complicado e está sendo trabalhado.

Os melhores recursos que encontrei foram:

por staticd 26.05.2014 / 06:29
3

Em relação ao 2., o zswap parece descomprimir as páginas no write-back, confirmando o comentário de @Cbhihe.

mm / zswap.c , linha 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

Assim, o zswap é útil para situações em que o cache in-ram compactado é provavelmente será esquecido em breve antes de ser gravado de volta no disco. Não é para aplicações com grandes, longas heaps vivos que eventualmente precisarão ser suportados pelo dispositivo de troca real.

    
por mnish 12.10.2016 / 14:18