A resposta curta é: não é uma cópia; é apenas "diferente".
A resposta longa é que o SwapCache é na verdade páginas retiradas de swap (usando o termo "swap" genericamente, independentemente do repositório de backup, onde zram e HDD swap são dois exemplos de repositórios de apoio) e são temporariamente descompactados enquanto eles precisam ser ativamente acessados. Lembre-se: as páginas na RAM compactada não podem ser acessadas diretamente , porque os dados são compactados e, portanto, não podem ser lidos (bem, ilegíveis se você quiser ler os dados originais). Então tem que ser armazenado em algum lugar quando o sistema diz "OK, agora eu preciso de uma página do cache compactado!". Se você descompactar "on the fly" toda vez que precisar de algo do zram, isso seria extremamente intensivo de CPU e provavelmente resultaria em uma desaceleração geral do sistema que seria pior do que a leitura de um swap no disco rígido. Assim, o sistema mantém um cache de algumas suas páginas trocadas na memória, onde "algumas delas" são definidas pelas páginas que foram necessárias mais recentemente.
Além disso, no caso de você apontar inteligentemente que as páginas trocadas para o disco rígido não estão compactadas: o swapcache ainda é usado lá, porque em vez de uma alta sobrecarga de CPU ao acessar essas páginas, uma alta latência enquanto aguarda o disco rígido procurar e buscar os setores e retorná-los à memória, onde eles podem ser adicionados ao swapcache.
Essa estratégia de gerenciamento permite otimizar um caso de uso em que você inicia vários programas; empurre alguns dos conjuntos de trabalho dos programas para swap comprimido à medida que a pressão da memória aumenta (zram); em seguida, descompacte o conjunto de trabalho de programas individuais (um programa por vez) no swapcache não compactado, quando / se você acessar esse programa em primeiro plano ou se executar alguma atividade em segundo plano.
Isso não é muito diferente de como a troca funciona em geral, independentemente de seu armazenamento de backup (cache compactado na RAM ou no swap). Se você tivesse um disco rígido muito lento com muitos programas abertos e muito espaço de troca usado, observaria os seguintes sintomas:
-
Geralmente bom desempenho no programa "primeiro plano" (a janela com a qual você está interagindo agora )
-
Um longo atraso e muita retificação de disco audível ao carregar todos os programas que estão em segundo plano há muito tempo
Então, o que você está obtendo com a RAM compactada em vez da troca de HDD é que o "atraso longo e a grande quantidade de retificação de disco audível" é evitado quando você traz esse programa em segundo plano para o primeiro plano. Em vez disso, a CPU fica descontrolada ao executar a descompactação sobre as páginas compactadas e as armazena temporariamente no cache de troca enquanto você acessa o programa, portanto, acessar a mesma página compactada várias vezes não resulta em descompactação intensiva da CPU Tempo. Mas, pessoalmente, prefiro ter maior atividade da CPU em relação à alta E / S de disco e à latência associada.