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 )
55
задан 26 May 2014 в 08:38

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

2
ответ дан 26 May 2014 в 08:38
  • 1
    Хотя Ваш ответ на 100% корректен, это могло бы также стать 100%, бесполезными, если та ссылка перемещена, изменена, объединена в другой, или основной сайт просто исчезает... :-( Поэтому редактирование Ваш ответ и копия соответствующие шаги от ссылки в Ваш ответ, таким образом, гарантируя Ваш ответ в течение 100% времени жизни этого сайта! ;-) можно всегда оставлять ссылку внутри в нижней части ответа как источник для материала... – Fabby 29 March 2016 в 08:35

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

Сводка того, что использовать когда:

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

Сводка их реализаций:

  1. ZRAM является сжатым основанным на RAM устройством свопинга
  2. ZSWAP является сжатый Кэш, если у Вас уже есть подкачка.
  3. ZCache является бэкендом для специального типа Виртуальной штуки RAM (Трансцендентная память), который может использоваться для кэширования страниц файловой системы или данных подкачки.

Подробнее:

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

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

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

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

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


76
ответ дан 26 May 2014 в 08:38

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

Похожие вопросы: