Относительно 2., zswap, действительно кажется, распаковывает страницы на обратной записи, подтверждая комментарий @Cbhihe.
mm/zswap.c, строка 828:
/*
* Attempts to free an entry by adding a page to the swap cache,
* decompressing the entry data into the page, and issuing a
* bio write to write the page back to the swap device.
* ...
*/
static int zswap_writeback_entry(struct zpool *pool, unsigned long handle)
{
...
case ZSWAP_SWAPCACHE_NEW: /* page is locked */
/* decompress */
...
ret = crypto_comp_decompress(tfm, src, entry->length,
dst, &dlen);
...
kunmap_atomic(dst);
$ git show
commit 1573d2caf713874cfe0d1336c823d0fb548d8bed
Merge: 4cdf8db 0a86248
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date: Tue Oct 11 23:59:07 2016 -0700
, Таким образом, zswap полезен для ситуаций, где о сжатом кэше в поршне, вероятно, забудут скоро, прежде чем записано обратно к диску. Это не для приложений с большой, длинной живущей "кучей", которая должна будет в конечном счете быть поддержана фактическим устройством свопинга.
Существует много материала об этих трех системах, но ни один из него не делает простое сравнение между ними уже не говоря о, объясняют их хорошо. Я пытался понять его, но моя взорванная голова. Затем я думал, что у меня был он так, я пытался записать его и моя голова, взорванная снова. (см. сводку реализаций), я думал, что будет полезно отправить это здесь, поскольку было много stackexchange вопросов, спрашивающих о попарных сравнениях между ними.
ZRAM: Делает устройство свопинга в RAM. Страницы, отправленные здесь, сжаты, поскольку они хранятся. Это имеет более высокий приоритет, чем другие устройства свопинга: страницы, которые выгружаются, преимущественно отправляются на zram устройство, пока это не полно, только затем является любыми другими используемыми устройствами свопинга.
ZSWAP: frontswap
системные рычаги пытаются выгрузить страницы и используют zswap в качестве кэша с обратной записью для устройства свопинга жесткого диска/SSD: попытка предпринята для сжатия страницы и если она содержит плохо сжимаемые данные, она непосредственно записана в диск. Если данные сжаты, они хранятся в пуле zswap памяти. Если страницы подкачиваются из памяти, когда общие сжатые страницы в RAM превышают определенный размер, Последняя использованная (LRU) сжатая страница записана в диск, поскольку это вряд ли будет скоро требоваться.
ZCache: Это - бэкенд для Трансцендентной системы памяти. Трансцендентная память обеспечивает подобную RAM память, к которой можно только получить доступ страница за один раз при помощи put
и get
вызовы. Это непохоже на нормальную память, к которой можно получить доступ байт за один раз. frontswap
и cleancache
системный рычаг пытается подкачать и исправить кэши страницы файловой системы соответственно и отправить их в трансцендентные бэкенды памяти. Когда zcache используется в качестве бэкенда, данные сжимаются и хранятся в RAM. Когда это заполняется, сжатые страницы выселены к подкачке. (альтернативный бэкенд является RAMster, который совместно использует пул RAM через подключенные к сети компьютеры). Используя только frontswap
frontend с zcache
работы бэкенда точно так же, как zswap
. (На самом деле zswap является упрощенным подмножеством zcache),
Лучшие ресурсы, которые я нашел, были: