- Que diabos eles são? como eles são diferentes (escrevi meu entendimento em uma resposta abaixo)
- No sistema Zswap, quando uma página é removida do zswap para a troca real, ela é armazenada em um arquivo compactado? (ou é descompactado antes de armazenar ?, AFAICT ainda está compactado, mas não tenho certeza)
- Qual é o estado atual do zcache? aparentemente foi removido ou algo do 3.11. O que isto significa? ( http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=96256460487387d28b8398033928e06eb9e428f7 )
kernel
performance
ram
swap
staticd
fonte
fonte
Respostas:
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:
Portanto, o zswap é útil para situações em que o cache in-ram compactado provavelmente será esquecido logo antes de ser gravado novamente no disco. Não é para aplicativos com pilhas grandes e de longa duração que eventualmente precisarão ser apoiadas pelo dispositivo de troca real.
fonte
Há um monte de coisas sobre esses três sistemas, mas nada disso faz uma comparação simples entre eles e muito menos os explica bem. Eu tentei entender, mas minha cabeça explodiu. Então eu pensei que tinha conseguido, então tentei escrever e minha cabeça explodiu novamente. (veja o resumo das implementações). Pensei que seria útil postar isso aqui, pois havia muitas perguntas sobre troca de pilhas perguntando sobre comparações entre pares.
Resumo do que usar quando:
Resumo de suas implementações:
Detalhes:
ZRAM: cria um dispositivo de troca na RAM. As páginas enviadas aqui são compactadas à medida que são armazenadas. Ele tem uma prioridade mais alta que outros dispositivos de troca: as páginas que são trocadas são enviadas preferencialmente para o dispositivo zram até que esteja cheio, somente então outros dispositivos de troca são usados.
ZSWAP: O
frontswap
sistema conecta as tentativas de trocar as páginas e usa o zswap como cache de write-back para um dispositivo de troca HDD / SSD: É feita uma tentativa de compactar a página e, se ela contém dados pouco compactáveis, ela é gravada diretamente no 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 compactada Menos Utilizadas Recentemente (LRU) será gravada no disco, pois é improvável que seja necessário em breve.ZCache: É um back-end para o sistema de memória Transcendent. A memória transcendente fornece uma memória semelhante à RAM que só pode ser acessada uma página por vez usando
put
eget
chama. Isso é diferente da memória normal que pode ser acessada um byte por vez. O ganchofrontswap
ecleancache
sistemas tenta trocar e recuperar caches de página do sistema de arquivos respectivamente e enviá-los para os back-ends de memória transcendente. Quando o zcache é usado como back-end, os dados são compactados e armazenados na RAM. Quando é preenchida, as páginas compactadas são despejadas para a troca. (um back-end alternativo é o RAMster, que compartilha um pool de RAM entre os computadores em rede). Usar apenas ofrontswap
front-end com ozcache
back - end funciona da mesma maneirazswap
. (De fato, zswap é um subconjunto simplificado do zcache)Os melhores recursos que encontrei foram:
fonte
zswap
. Aqui detalhes askubuntu.com/a/361321/25388zram
é aswap
está totalmente errada.zram
NÃO é umswap
. Oswap
único PODE ser armazenadozram
. Mas este é um dos muitos casos de uso possíveis! Aqui está um exemplo: "Alguns dos casos incluem armazenamento / tmp, usam como discos de troca, vários caches em / var e talvez muito mais :)" kernel.org/doc/Documentation/blockdev/zram.txt Por exemplo, eu o uso para armazenamento temporário que eu formato e montei como qualquer outro dispositivo de bloco normal.