La risposta breve è che non è una copia; è solo "diverso".
La risposta lunga è che SwapCache è in realtà pagine che vengono estratte dallo swap (usando il termine "swap" genericamente, indipendentemente dal backing store, dove zram e HDD swap sono due esempi di backing store) e vengono temporaneamente decompressi mentre sono necessari per accedere attivamente. Ricorda: non è possibile accedere direttamente alle pagine nella RAM compressa , poiché i dati sono compressi ed è quindi illeggibile (bene, illeggibile se si desidera leggere i dati originali). Quindi deve essere conservato da qualche partequando il sistema dice "OK, ora ho bisogno di una pagina dalla cache compressa!". Se lo decomprimi "al volo" ogni volta che hai bisogno di qualcosa da Zram, ciò richiederebbe un intenso utilizzo della CPU e probabilmente comporterebbe un rallentamento generale del sistema che sarebbe peggio della lettura da swap sul disco rigido. Quindi il sistema mantiene una cache di alcune delle tue pagine scambiate in memoria, dove "alcune" sono definite dalle pagine che sono state necessarie di recente.
Inoltre, nel caso in cui si evidenzi in modo intelligente che le pagine scambiate sul disco rigido non sono compresse: swapcache viene ancora utilizzato lì, perché invece di un elevato sovraccarico della CPU durante l'accesso a tali pagine, si ottiene una latenza elevata durante l'attesa della ricerca dell'HDD e recuperare i settori e riportarli in memoria dove possono essere aggiunti alla cache di scambio.
Questa strategia di gestione consente di ottimizzare per un caso d'uso in cui si avviano molti programmi; spingere alcuni dei set di lavoro dei programmi in scambio compresso all'aumentare della pressione della memoria (zram); quindi decomprimere il gruppo di lavoro dei singoli programmi (un programma alla volta) in swapcache non compresso, quando / se si accede a quel programma in primo piano o se esegue un'attività in background.
Questo non è troppo diverso dal modo in cui lo swap funziona in generale, indipendentemente dal suo archivio di backup (cache compressa nella RAM o nello swap). Se avessi un vero disco rigido lento con molti programmi aperti e molto spazio di swap utilizzato, noteresti i seguenti sintomi:
Generalmente buone prestazioni sul programma "in primo piano" (la finestra con cui stai interagendo in questo momento )
Un lungo ritardo e molta rettifica del disco udibile durante il caricamento di tutti i programmi che sono stati in background per molto tempo
Quindi quello che stai ottenendo con la RAM compressa al posto dello scambio di HDD è che il "lungo ritardo e molta rettifica del disco udibile" viene evitato quando porti in primo piano quel programma in background. Invece, la CPU si scatena con l'esecuzione della decompressione sulle pagine compresse e le memorizza temporaneamente nella cache di swap mentre si accede al programma, in modo che l'accesso alla stessa pagina compressa più volte non comporti una decompressione intensiva della CPU ciascuna tempo. Ma personalmente preferirei avere una maggiore attività della CPU sull'I / O del disco elevato e la latenza di accompagnamento.