Сегодня рассмотрим пример установки zRam на систему с Debian и Ubuntu.
Я испробовал данный пакет на MX Linux (Debian 10) и Ubuntu 18.04/20.04 LTS.
zRam хорошо поможет тем, у кого на компьютерах установлен небольшой объем оперативной памяти и возникают проблемы с производительностью и «отзывчивостью» операционной системы.
zRam — увеличивает производительность путем предотвращения подкачки страниц на диск, используя сжатое блочное устройство в оперативной памяти, пока не появится необходимость использовать файл подкачки на жёстком диске. Скорость обмена с оперативной памятью быстрее, чем с жёстким диском, следовательно zRam позволяет Linux производить большее число операций подкачки, особенно на старых компьютерах с малым объёмом оперативной памяти.
Использование zRam рекомендуется для нетбуков, старых компьютеров, виртуальных систем (н.р. на VPS от Amazon или DigitalOcean и других) или в различных встраиваемых системах.
Вообще способов применения zRam не ограничиваются только сжатием и уменьшением сбрасываемых в swap
данных. Вообще zRam создает блочные устройства в оперативной памяти. При этом, все данные попадающие в данные блочные устройства сжимаются. В общем, что вы поместите в эти блочные устройства зависит только от вас. Но в большинстве случаев этот модуль и эту технологию применяют именно для swap
.
Приступим к настройке.
Установка zRam для Debian
Проверяем свап раздел перед установкой.
swapon -s
Filenam Type Size Used Priority
/dev/sda2 partition 2097148 469248 -2
Устанавливаем zRam:
sudo apt install zram-tools
Открываем файл:
sudo nano /etc/default/zramswap
Редактируем, снимаем комментарии. Должно получится что-то вроде этого:
# Specifies amount of zram devices to create.
# By default, zramswap-start will use all available cores.
CORES=1
# Specifies the amount of RAM that should be used for zram
# based on a percentage the total amount of available memory
PERCENTAGE=10
# Specifies a static amount of RAM that should be used for
# the ZRAM devices, this is in MiB
ALLOCATION=256
# Specifies the priority for the swap devices, see swapon(2)
# for more details.
PRIORITY=100
Параметр CORES
для каждого свой. У меня одно ядро поэтому значение равно единице.
Создаем скрипт запуска zram
sudo nano /etc/init.d/zram
Добавляем листинг:
# Author: Antonio Galea <antonio.galea@gmail.com>
#
# Thanks to Przemysław Tomczyk for suggesting swapoff parallelization
# Distributed under the GPL version 3 or later, see terms at
# https://gnu.org/licenses/gpl-3.0.txt
### BEGIN INIT INFO
# Provides: zram
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: S
# Default-Stop: 0 1 6
# Short-Description: Use compressed RAM as in-memory swap
# Description: Use compressed RAM as in-memory swap
### END INIT INFO
FRACTION=75
MEMORY=$(perl -ne '/^MemTotal:\s+(\d+)/ && print $1*1024' < /proc/meminfo)
CPUS=$(nproc)
SIZE=$((MEMORY * FRACTION / 100 / CPUS))
case "$1" in
start)
param=$(modinfo zram | grep num_devices | cut -f2 -d: | tr -d ' ')
modprobe zram $param=$CPUS
for n in $(seq $CPUS)
do
i=$((n - 1))
echo $SIZE > /sys/block/zram$i/disksize
mkswap /dev/zram$i
swapon /dev/zram$i --priority 10
done
;;
stop)
for n in $(seq $CPUS)
do
i=$((n - 1))
swapoff /dev/zram$i && echo "zram: disabled disk $n of $CPUS" &
done
wait
sleep .5
modprobe --remove zram
;;
*)
echo "Usage: $(basename $0) (start | stop)"
exit 1
;;
esac
# End of file
Делаем файл исполняемым:
sudo chmod +x /etc/init.d/zram
Запускаем скрипт:
sudo /etc/init.d/zram start
Проверяем swap разделы
swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 2097148 494848 -2
/dev/zram0 partition 1505464 0 10
Как видим zRam запустился и работает.
Установка zRam на Ubuntu
Для активизации zRam достаточно установить пакет zram-config:
sudo apt install zram-config
После установки можно проверить работоспособность:
swapon -s
Если вы видите что-то похожее, то все нормально:
Filename Type Size Used Priority
/dev/sda2 partition 2097148 494848 -2
/dev/zram0 partition 1505464 0 10
Если же zRAM автоматически не запустился, то необходимо сделать следующее:
sudo apt install linux-image-generic -y
sudo reboot
sudo systemctl start zram-config
sudo systemctl enable zram-config
Так как разделы создаются в оперативной памяти, то я не советую вам изменять параметр vm.swappines (изменяется в файле /etc/sysctl.conf
), который часто рекомендуют выставить в значение 10 или вообще 0.
Swappines — это параметр, контролирующий тенденцию ядра перемещать процессы из физической памяти в swap-раздел. По умолчанию в Ubuntu выставлено значение 60, т.е. когда ваша система начинает задействовать более 40% оперативной памяти, то система начинает сбрасывать страницы в swap.
Другими словами. Если параметр vm.swappines выставлен в значение 0, то система не будет использовать swap до тех пор, пока не заполнится вся оперативная память. Если же значение выставлено в 100, то все процессы будут перемещаться в swap, что создаст сильную нагрузку на дисковую подсистему и будут проявляться явные задержки в работе самой ОС и приложений.
Вас по каким-либо причинам не устраивает автоматическое создание zRam-разделов? Вы можете выполнить конфигурирование вручную.
- /sbin/modprobe zram num_devices=4
- echo 1073741824 > /sys/block/zram0/disksize
- echo 1073741824 > /sys/block/zram1/disksize
- echo 1073741824 > /sys/block/zram2/disksize
- echo 1073741824 > /sys/block/zram3/disksize
- /sbin/mkswap /dev/zram0
- /sbin/mkswap /dev/zram1
- /sbin/mkswap /dev/zram2
- /sbin/mkswap /dev/zram3
- /sbin/swapon /dev/zram0 -p 10
- /sbin/swapon /dev/zram1 -p 10
- /sbin/swapon /dev/zram2 -p 10
- /sbin/swapon /dev/zram3 -p 10
Первая строка — определяем сколько разделов нужно создать. Обычно создают столько разделов, сколько ядер процессора. В моем случае это 4. Разделы нумеруются от 0. Поэтому номера создаваемых разделов: 0-3.
Строки 2-5, определяют какого размера (в байтах) должны быть zRam разделы. Я определи для всех равный объем (в данном случае 1Гб).
Строки 6-9, создают swap-раздел в созданных блочных устройствах.
Строки 10-11, активируют swap с приоритетом 10. Чем выше приоритет, тем раньше будет использоваться данный раздел. Для дискового swap желательно выставить приоритет значительно ниже чем у zRam разделов.
После всего этого проверяем результат с помощью команды swapon
sudo swapon -s
Установка ZRam на Rosa, Fedora
все то же самое, но для установки в консоле вместо zram-config
набираем:
sudo dnf install zram
или
sudo dnf install zramstart
После установки запускаем службу:
sudo systemctl enable zram-swap.service
или
sudo systemctl enable zramstart
Если в выводе команды:
swapon -s
Отсутствует zram область, то будет необходимо перезагрузить вашу машину:
sudo reboot
Вывод
Диск zram фактически сжимает данные, используя очень быстрый алгоритм сжатия (например, LZO или LZ4) . Это означает, что когда данные “выгружаются” в zram, они все еще находятся в оперативной памяти, но сжаты. Это позволяет выполнять подкачку очень быстро по сравнению с подкачкой на диск.
Системы, которые выиграют от этого больше всего — это одноплатные компьютеры (например, Raspberry pi и т. д.), виртуальные машины KVM с малым количеством памяти, бездисковые системы и гипервизоры.
На этом все, всем удачи!
[endtxt]
. . . .
- Тест скорости дисков в Linux
- Как запустить команду в фоне в Linux
- Ошибка несоответствие размеров GPT PMBR
- nginx: [warn] protocol options redefined
- Как включить поддержку linux в windows 11