- ¿Qué demonios son ellos? en qué se diferencian (he escrito mi entendimiento en una respuesta a continuación)
- En el sistema Zswap, cuando una página se desaloja del zswap al intercambio real, ¿se almacena en un archivo comprimido? (¿o está descomprimido antes de almacenarlo? AFAICT todavía está comprimido pero no puedo estar seguro)
- ¿Cuál es el estado actual de zcache? aparentemente fue eliminado o algo en 3.11. ¿Qué significa esto? ( http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=96256460487387d28b8398033928e06eb9e428f7 )
kernel
performance
ram
swap
estático
fuente
fuente
Respuestas:
Con respecto a 2., zswap parece descomprimir las páginas en reescritura, confirmando el comentario de @ Cbhihe.
mm / zswap.c , línea 828:
Por lo tanto, zswap es útil para situaciones en las que es probable que se olvide el caché comprimido en la memoria RAM poco antes de volver a escribirse en el disco. No es para aplicaciones con montones grandes y duraderos que eventualmente necesitarán ser respaldados por el dispositivo de intercambio real.
fuente
Hay un montón de cosas sobre estos tres sistemas, pero nada de eso hace una comparación simple entre ellos y mucho menos explicarlos bien. Traté de darle sentido, pero mi cabeza explotó. Entonces pensé que lo tenía, así que intenté escribirlo y mi cabeza explotó nuevamente. (vea el resumen de implementaciones). Pensé que sería útil publicar esto aquí ya que había muchas preguntas de intercambio de pila que preguntaban sobre comparaciones por pares entre ellas.
Resumen de qué usar cuando:
Resumen de sus implementaciones:
Detalles:
ZRAM: hace un dispositivo de intercambio en la RAM. Las páginas enviadas aquí se comprimen a medida que se almacenan. Tiene una prioridad más alta que otros dispositivos de intercambio: las páginas que se intercambian se envían preferentemente al dispositivo zram hasta que esté lleno, solo entonces se utilizan otros dispositivos de intercambio.
ZSWAP: el
frontswap
sistema engancha los intentos de intercambiar páginas y utiliza zswap como caché de reescritura para un dispositivo de intercambio de HDD / SSD: se intenta comprimir la página y, si contiene datos poco compresibles, se escribe directamente en el disco. Si los datos están comprimidos, se almacenan en el conjunto de memoria zswap. Si las páginas se intercambian de la memoria cuando el total de páginas comprimidas en la RAM excede un cierto tamaño, la página comprimida menos utilizada recientemente (LRU) se escribe en el disco, ya que es poco probable que se requiera pronto.ZCache: es un back-end para el sistema de memoria Trascendent. La memoria trascendente proporciona una memoria tipo RAM a la que solo se puede acceder una página a la vez utilizando
put
yget
llamadas. Esto es diferente a la memoria normal a la que se puede acceder un byte a la vez. El enlacefrontswap
y loscleancache
sistemas intentan intercambiar y reclamar cachés de página del sistema de archivos respectivamente y enviarlos a los backends de memoria trascendentes. Cuando se usa zcache como back-end, los datos se comprimen y almacenan en la RAM. Cuando se llena, las páginas comprimidas se expulsan al intercambio. (un backend alternativo es RAMster, que comparte un grupo de RAM entre las computadoras en red). Usar solo elfrontswap
frontend con elzcache
backend funciona igual quezswap
. (De hecho, zswap es un subconjunto simplificado de zcache)Los mejores recursos que encontré fueron:
fuente
zswap
? Aquí detalles askubuntu.com/a/361321/25388zram
es unswap
es totalmente incorrecta.zram
NO ES aswap
. Elswap
único PUEDE ser almacenado enzram
. ¡Pero este es uno de los muchos casos de uso posibles! Aquí hay un ejemplo: "Algunos de los casos de uso incluyen / tmp storage, uso como discos de intercambio, varios cachés en / var y quizás muchos más :)" kernel.org/doc/Documentation/blockdev/zram.txt Por ejemplo, lo uso para almacenamiento temporal que formateo y monto como cualquier otro dispositivo de bloque normal.