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

  1. Что, черт возьми, они? чем они отличаются (я написал свое понимание в ответе ниже)
  2. В системе Zswap, когда страница выгружается из zswap в реальный своп, сохраняется ли она в сжатом виде? (или это распаковано перед сохранением?, AFAICT это все еще сжато, но я не уверен)
  3. Каково текущее состояние zcache? это было очевидно удалено или кое-что в 3.11. Что это значит? ( http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=96256460487387d28b8398033928e06eb9e428f7)

2 ответа

Решение

Что касается 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 полезен в ситуациях, когда сжатый встроенный кэш-память, скорее всего, будет забыт незадолго до обратной записи на диск. Это не для приложений с большими, долго живущими кучами, которые в конечном счете должны будут быть поддержаны фактическим устройством подкачки.

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

Краткое изложение того, что использовать, когда:

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

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

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

Подробности:

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

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

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

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

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


Другие вопросы по тегам