zram vs zswap vs zcache Окончательное руководство: когда использовать какой

39
  1. Какого черта они? как они отличаются (я написал свое понимание в ответе ниже).
  2. В системе Zswap, когда страница выведена из zswap в фактический swap, она хранится в сжатом формате? (или он распакован перед сохранением ?, AFAICT он все еще сжат, но я не могу быть уверен)
  3. Каково текущее состояние zcache? он был, по-видимому, удален или что-то в 3.11. Что это значит? ( Ссылка )
задан staticd 25.05.2014 в 15:29
источник

2 ответа

55

В этих трех системах много всего, но ничто из этого не делает простого сравнения между ними, не говоря уже об их объяснении. Я попытался понять это, но голова взорвалась. Затем я подумал, что у меня есть это, поэтому я попытался записать его, и моя голова снова взорвалась. (см. краткое изложение реализаций). Я подумал, что было бы полезно опубликовать это здесь, поскольку было много вопросов, связанных с stackexchange, которые спрашивали о попарных сравнениях между ними.

Краткое описание использования:

  1. ZRAM , если у вас нет устройства подкачки на HDD / SSD.
  2. ZSWAP , если у вас есть устройство подкачки на HDD / SSD.
  3. ZCACHE . Он делает то, что делает ZSWAP, и ТАКЖЕ сжимает и ускоряет кеширование страницы файловой системы. (Он намного сложнее и не находится в основном ядре, поскольку он все еще находится в разработке).

Краткое изложение их реализации:

  1. ZRAM - это сжатое ОЗУ на основе устройства подкачки
  2. ZSWAP - сжатый Cache , если у вас уже есть своп.
  3. ZCache - это бэкэнд для специального типа виртуальной оперативной памяти (трансцендентная память), которая может использоваться для кэширования страниц файловой системы или обмена данными.

Детали:

  • ZRAM: Создает своп-устройство в ОЗУ. Страницы, отправленные здесь, сжимаются при их сохранении. Он имеет более высокий приоритет, чем другие устройства подкачки: страницы, которые были заменены, предпочтительно отправляются на устройство zram до его полного заполнения, только тогда используются любые другие устройства подкачки.

    • Преимущества: Независимо от других (физических) устройств подкачки. Он может использоваться, когда нет раздела подкачки для расширения доступной памяти.
    • Недостатки: Если присутствуют другие устройства подкачки (HDD / SSD), они не используются оптимально. Поскольку zram-устройство является независимым устройством подкачки, как только оно заполнено, все новые страницы, которые необходимо поменять, отправляются прямому следующему устройству подкачки, следовательно:
      1. Существует реальная вероятность использования LRU (наименее недавно использованной) инверсии: это самые последние данные об обмене данными на медленном диске, в то время как неактивные страницы, которые были заменены давно, останутся в быстром ZRAM
      2. Данные, отправленные и считываемые с диска, будут потреблять большую полосу пропускания, поскольку она несжата.
    • Статус: . Слияние с основным ядром 3.14. После включения в системе требуется настройка пользовательского пространства для настройки устройств подкачки и их использования.
  • ZSWAP: . Система frontswap пытается переустановить страницы и использует zswap как write-back-cache для устройства подкачки HDD / SSD: делается попытка сжать страницу, и если она содержит плохо сжимаемые данные, она непосредственно записывает два диска. Если данные сжаты, они сохраняются в пуле памяти zswap. Если страницы обрываются из памяти, когда общая сжатая страница в ОЗУ превышает определенный размер, на диск записывается страница с наименьшим последним использованием (LRU) с сжатой , поскольку она вряд ли понадобится в ближайшее время.

    • Преимущества: Очень эффективное использование оперативной памяти и дискового подкачки. Минимизирует дисковый ввод-вывод, уменьшая количество требуемых записей и чтений (данные сжимаются и сохраняются в ОЗУ) и уменьшая пропускную способность этих операций ввода-вывода, поскольку данные находятся в сжатой форме.
    • Ограничения: Это усовершенствование систем подкачки на основе дисков и, следовательно, зависит от раздела подкачки на жестком диске.
    • Статус: Слияние с ядром linux 3.11 mainline.
  • ZCache: Это бэкэнд для системы Transcendent. Трансцендентная память обеспечивает RAM-подобную память, к которой можно получить доступ только к странице за раз, используя вызовы put и get . Это не похоже на обычную память, к которой можно получить доступ к байту за раз. Ключи frontswap и cleancache пытаются обменивать и возвращать кеши страницы файловой системы соответственно и отправлять их в трансцендентные серверы памяти. Когда zcache используется в качестве бэкэнд, данные сжимаются и сохраняются в ОЗУ. Когда он заполняется, сжатые страницы вытесняются. (альтернативный бэкэнд - RAMster, который разделяет пул ОЗУ через сетевые компьютеры). Использование только интерфейса frontswap с бэкэндом zcache работает так же, как zswap . (На самом деле zswap является упрощенным подмножеством zcache)

    • Преимущества Обеспечивает сжатое кэширование как для подкачки, так и для кэшей файловой системы.
    • Статус: Все еще не поддерживается, поскольку он очень сложный и работает.

Лучшие ресурсы, которые я нашел, были:

ответ дан staticd 26.05.2014 в 06:29
3

Относительно 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 <[email protected]>
Date:   Tue Oct 11 23:59:07 2016 -0700

Так что zswap полезен для ситуаций, когда сжатый кеш в-ram скорее всего, будет забыт вскоре, прежде чем записать обратно на диск. Это не для приложений с большими, длинными живые кучи, которые в конечном итоге должны быть подкреплены фактическим устройством подкачки.

    
ответ дан mnish 12.10.2016 в 14:18