Чомусь, мабуть, існує багато неправильного тлумачення https://www.kernel.org/doc/Documentation/blockdev/zram.txt
У ньому чітко зазначено:
2) Встановлення максимальної кількості потоків стиснення
Незалежно від значення, переданого цьому атрибуту, ZRAM завжди буде виділяти кілька потоків стиснення - один на онлайнові процесори - таким чином дозволяючи проводити кілька одночасних операцій стиснення. Кількість виділених потоків стиснення зменшується, коли частина центральних процесорів стає в режимі офлайн. Режим потоку з одним стисненням більше не існує, якщо ви не працюєте в системі UP або маєте лише 1 центральний процесор в Інтернеті.
Щоб дізнатися, скільки потокових потоків доступно на даний момент:
cat /sys/block/zram0/max_comp_streams
Але існує загальний, стійкий міський міф, що максимум потоків дорівнює 1.
Це, очевидно, неправда.
Дві ОС, де zram виявив ефективність Chrome OS та Android, ви один пристрій. Також вони підлаштовують page-cluster
:
page-cluster
контролює кількість сторінок, на які читаються послідовні сторінки за допомогою однієї спроби. Це аналог свопінгу для перечитання кешу сторінок.
Згадана послідовність не з точки зору віртуальних / фізичних адрес, а послідовна у просторі своп - це означає, що вони були замінені разом.
Це логарифмічне значення - встановити його в нуль означає "1 сторінку", встановити його на 1 означає "2 сторінки", встановити його на 2 означає "4 сторінки" і т. Д. Нуль повністю відключає swap readadahead повністю.
Значення за замовчуванням - три (вісім сторінок одночасно). Можливо, є кілька невеликих переваг, якщо налаштувати це на інше значення, якщо навантаження на вас буде великою.
Більш низькі значення означають менші затримки для початкових помилок, але в той же час додаткові помилки та затримки вводу / виводу для наступних несправностей, якби вони були частиною цих сторінок, що переглядаються послідовно.
- з документації на ядро для/proc/sys/vm/*
Тому використовуйте echo "0" > /proc/sys/vm/page-cluster
для примусового використання однієї сторінки.
Багато чого, схоже, походить від zram_config пакету debian / ubuntu, який, мабуть, має дуже малу кореляцію з документами ядра для zram і створив серію китайських шепітів, що по суті може бути абсолютно неправильним.
Ви створюєте своп файлів для кожного ядра? Можливо, це може відповісти на ваші запитання. Крім того, щоб створити резервну копію Googles Chrome OS та Android, які успішно працюють із вищевказаним кластером сторінок, оскільки його не відповідає диску, тому затримка може бути покращена, окремі пристрої.
Також для sys-admin важливо фактичне використання пам’яті або використання vm mem? Більшість прикладів показують створення через disk_size і повністю ігнорують mem_limit. disk_size = нестиснений розмір vm. mem_limit = фактична межа пам'яті.
Це щось робить вибір disk_size заплутаним, оскільки його віртуальний максимальний розмір залежить від співвідношення comp_alg та накладних витрат 0,1% від розміру диска, коли він не використовується, і насправді є здогадкою пам’яті mem_limit * (приблизно 2 - 4) зловмисних vs оптимізм.
zram_config навіть не перевіряє попереднє використання сервісу і перезаписує, просту перевірку класу zram sys, як показано нижче.
createZramSwaps () {
totalmem=$(free|awk '/^Mem:/{print $2}')
mem=$((( totalmem * MEM_FACTOR / 100 / BIG_CORES ) * 1024))
# Check Zram Class created
ZRAM_SYS_DIR='/sys/class/zram-control'
if [ ! -d "${ZRAM_SYS_DIR}" ]; then
modprobe zram
RAM_DEV='0'
echo ${COMP_ALG_SWAP} > /sys/block/zram${RAM_DEV}/comp_algorithm
echo ${mem} > /sys/block/zram${RAM_DEV}/disksize
mkswap /dev/zram${RAM_DEV}
swapon -p ${SWAP_PRI} /dev/zram${RAM_DEV}
else
RAM_DEV=$(cat /sys/class/zram-control/hot_add)
echo ${COMP_ALG_SWAP} > /sys/block/zram${RAM_DEV}/comp_algorithm
echo ${mem} > /sys/block/zram${RAM_DEV}/disksize
mkswap /dev/zram${RAM_DEV}
swapon -p ${SWAP_PRI} /dev/zram${RAM_DEV}
fi
if [ "$BIG_CORES" -gt 1 ];then
for i in $(seq $((BIG_CORES - 1))); do
RAM_DEV=$(cat /sys/class/zram-control/hot_add)
echo ${COMP_ALG_SWAP} > /sys/block/zram${RAM_DEV}/comp_algorithm
echo ${mem} > /sys/block/zram${RAM_DEV}/disksize
mkswap /dev/zram${RAM_DEV}
swapon -p ${SWAP_PRI} /dev/zram${RAM_DEV}
done
fi
}