zram vs zswap vs zcache Кінцеве керівництво: коли використовувати який


55
  1. Що за чорт вони? чим вони відрізняються (я зрозумів своє розуміння у відповіді нижче)
  2. У системі Zswap, коли сторінка виселяється з zswap на фактичний своп, вона зберігається в стиснутому? (або він декомпресується перед зберіганням ?, АФАКТИВНО, він все ще стискається, але я не можу бути впевнений)
  3. Який сучасний стан zcache? його, мабуть, видалили чи щось у 3.11. Що це значить? ( http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=96256460487387d28b8398033928e06eb9e428f7 )

2
Відповідь 2. Повідомлення фіксації чітко визначає, що патчі (що стосуються zcache) були видалені з 3.11, але вони будуть включені до дерева головного мм.
askb

1
@staticd Чому ти не прийняв власну відповідь? Це дуже добре!
Лео Леопольд Герц 준영

Коли сторінка вилучається з zswap (стиснутого кеша swap), вона _ декомпресується_ та розміщується в резервному пристрої підкачки відповідно до одного з посилань на рік [ lwn.net/Articles/537422/] нижче ...
Cbhihe

( lwn.net/Articles/537422 - "Під час відновленого запису zswap розпаковує сторінку ..."). @mmin нижче припускає, що це може бути неефективною або навіть небезпечною для сервера!
mwfearnley

Відповіді:


2

Щодо 2., zswap, здається, видаляє сторінки під час запису, підтверджуючи коментар @ Cbhihe.

мм / 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 корисний у ситуаціях, коли стислий кеш-пам’ять, ймовірно, буде забутий незабаром перед тим, як записати його на диск. Це не для додатків з великими довгими наборами, які згодом потребують підтримки фактичного пристрою для заміни.


7
Я виявив потенційно небезпечну поведінку zswap. Коли програма виділяє багато сторінок і записує в них дані, які дуже добре стискають (скажімо, послідовність нулів), zswap радісно зберігає їх у пам'яті платів ядра. Однак, коли щось запускає фактичну заміну диска, то збережені дані раптом 'лопаються' - те, що багато нулів на сторінках, які мають «лише» гігабайти в пам’яті, зараз розпаковуються на сотні гігабайт на диску.
mnish

2
Зловмисник може спробувати зберегти дані з низькою ентропією на сервері. Коли щось запускає обмін, сервер буде мертвим.
mnish

1
Ви повідомили про це вище за течією?
Кен Шарп

Ще один недолік написання стислих даних 🤷
Михайло Малостанідіс

Звичайно, було б краще в просторі та вчасно скинути дані в декомпресованому вигляді! Це звучить як щось, що ми дійсно хотіли б це зробити. Я можу лише припустити, що реструктуризація області заміни, щоб дозволити це, або передбачає перезапис багатьох існуючих кодів, або вимагає більш складної системи розподілу.
mwfearnley

75

Про ці три системи є дуже багато матеріалів, але жодна з них не робить просте порівняння між собою, не кажучи вже про їх добре пояснення. Я намагався це зрозуміти, але голова вибухнула. Тоді я подумав, що отримав його, тому спробував записати його і голова знову вибухнула. (див. підсумок реалізацій) Я подумав, що буде корисно опублікувати це тут, оскільки було багато запитань щодо обміну ставками, які задавали питання про парне порівняння між ними.

Короткий огляд того, що потрібно використовувати, коли:

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

Короткий зміст їх реалізації:

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

Деталі:

  • ZRAM: робить пристрій підкачки в оперативній пам'яті. Сторінки, надіслані тут, стискаються в міру їх збереження. Він має більш високий пріоритет, ніж інші пристрої підкачки: сторінки, які заміняються, переважно передаються на пристрій zram до повного заповнення, лише тоді використовуються будь-які інші пристрої для заміни.

    • Переваги: Незалежно від інших (фізичних) пристроїв для заміни. Її можна використовувати, коли немає розділу swap, щоб розширити наявну пам'ять.
    • Недоліки: Якщо є інші пристрої для заміни (HDD / SSD), вони не використовуються оптимально. Оскільки zram-пристрій є незалежним пристроєм підкачки, після його заповнення будь-які нові сторінки, які потрібно замінити, надсилаються безпосередньо на наступний замінний пристрій, отже:
      1. Є реальна ймовірність інверсії LRU (щонайменше використовуваної): це буде останнім часом розміщені дані, які переходять на повільний диск, тоді як неактивні сторінки, які давно були замінені, залишаться у швидкій ZRAM
      2. Дані, що надсилаються та читаються з диска, споживають велику пропускну здатність, оскільки вони не стискаються.
    • Статус: Об'єднано в основне ядро ​​3.14. Після ввімкнення в системі, вона потребує певної конфігурації простору користувачів, щоб налаштувати пристрої для заміни та використовувати їх.
  • ZSWAP: Система підключаєfrontswap спроби заміни сторінок і використовує zswap як кеш-зворотного запису для пристрою підкачки HDD / SSD: Робиться спроба стиснути сторінку, і якщо вона містить погано стислимі дані, вона безпосередньо записується на диск. Якщо дані стиснуті, вони зберігаються в пулі пам'яті zswap. Якщо сторінки вивантажено з пам'яті , коли загальна кількість стислих сторінок в оперативній пам'яті перевищує певний розмір, найменш недавно використовувалися (LRU) стискаються сторінка записується на диск , як це навряд чи буде потрібно в найближчий час .

    • Переваги: Дуже ефективне використання оперативної пам’яті та диска на базі диска. Мінімізує введення / виведення диска за рахунок зменшення кількості необхідних записів і читання (дані стискаються і зберігаються в оперативній пам'яті), а також зменшуючи пропускну здатність цих операцій вводу / виводу, оскільки дані стискаються.
    • Обмеження: Це вдосконалення систем обміну дисками, а отже, залежить від розділу swap на жорсткому диску.
    • Статус: Об’єднано в ядро ​​Linux Linux 3.11.
  • ZCache: це доповнення для системи пам'яті Transcendent. Трансцендентна пам'ять забезпечує пам'ять, схожу на оперативну пам’ять, до якої можна отримати доступ до сторінки лише за один раз за допомогою putта getвикликів. Це на відміну від звичайної пам'яті, до якої можна отримати доступ одночасно. frontswapІ cleancacheсистеми спроб гака поміняти і повернути сторінку кешей файлової системи , відповідно , і відправити їх на позамежні бекенда пам'яті. Коли zcache використовується як бекенд, дані стискаються і зберігаються в ОЗП. Коли вона заповнюється, стислі сторінки видаляються до свопу. (альтернативний резервний сервер - це RAMster, який розділяє пул оперативної пам’яті на комп’ютерних мережах). Використання лише frontswapінтерфейсу із zcacheзаднім числом працює так само zswap. (Насправді zswap - це спрощений підмножина zcache)

    • Переваги Надає стиснене кешування як для swap, так і для кешів файлової системи.
    • Статус: Все ще не підкреслено, оскільки це дуже складно і над ним працює.

Найкращі знайдені нами ресурси:



6
Чи можливо та / або розумно використовувати і zram, і zswap?
Пля

2
Жодна з трьох потреб / повинна бути запущена одночасно. zswap потребує дискового swap як бекенда на відміну від ZRAM, якому не потрібен спеціальний розділ swap. Однак якщо у вас тоді swap, ZRAM + swap-розділ набагато менш ефективний, ніж розділ zswap + swap.
staticd

Чи можете ви коротко тут , як ви активуєте zswap. Тут детальніше askubuntu.com/a/361321/25388
Léo Léopold Hertz 준영


1
Кожна відповідь, яка стверджує, що zramце swap- абсолютно невірна. zramНЕ a swap. swapТільки можуть бути збережені в zram. Але це один із багатьох можливих випадків використання !. Ось приклад: "Деякі з usecases включають / tmp зберігання, використовувати як swap диски, різні кеші під / var і, можливо, багато інших :)" kernel.org/doc/Documentation/blockdev/zram.txt Наприклад, я використовую це для тимчасове сховище, яке я форматую та монтую, як і будь-який інший звичайний блок пристрою.
Віктор Ярема
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.