Сегодня рассмотрим пример установки 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-разделов? Вы можете выполнить конфигурирование вручную.

  1. /sbin/modprobe zram num_devices=4
  2. echo 1073741824 > /sys/block/zram0/disksize
  3. echo 1073741824 > /sys/block/zram1/disksize
  4. echo 1073741824 > /sys/block/zram2/disksize
  5. echo 1073741824 > /sys/block/zram3/disksize
  6. /sbin/mkswap /dev/zram0
  7. /sbin/mkswap /dev/zram1
  8. /sbin/mkswap /dev/zram2
  9. /sbin/mkswap /dev/zram3
  10. /sbin/swapon /dev/zram0 -p 10
  11. /sbin/swapon /dev/zram1 -p 10
  12. /sbin/swapon /dev/zram2 -p 10
  13. /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]

. . . .

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

5 2 голоса
Рейтинг статьи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов cookie) с использованием трекеров "Google Analytics" и "Yandex.Metrics". Порядок обработки Ваших персональных данных, а также реализуемые требования к их защите, содержатся в Политике конфиденциальности.
Принять