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:
- ZRAM se você não tiver nenhum dispositivo de troca no HDD / SSD.
- ZSWAP se você tiver um dispositivo de troca no HDD / SSD.
- 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:
- ZRAM é um dispositivo de troca baseado em RAM comprimido
- ZSWAP é um Cache compactado se você já tiver uma troca.
- 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:
- 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
- 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
eget
. Isso é diferente da memória normal que pode ser acessada um byte de cada vez. O ganchofrontswap
ecleancache
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 frontendfrontswap
com o backendzcache
funciona comozswap
. (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: