Поиск по сайту:

Как включить Zswap для ПК с Ubuntu 24.04 с ограниченным объемом оперативной памяти

В этом руководстве показано, как включить модуль ядра zswap для увеличения полезной оперативной памяти на вашем компьютере или ноутбуке с Ubuntu.

Как вы знаете, Ubuntu Linux обычно включает в себя пространство подкачки (либо раздел диска, либо файл подкачки) на диске. Его можно использовать для спящего режима и в качестве расширенного пространства памяти. Когда системе требуется больше ресурсов памяти и оперативная память заполняется, неактивные страницы памяти перемещаются в пространство подкачки.

Пространство подкачки может быть полезно для компьютеров с ограниченной оперативной памятью. Но это медленно! Слишком большое использование подкачки замедлит общую производительность системы.

В качестве обходного пути Linux включает два модуля ядра: zram и zswap. Вместо перемещения неактивных страниц из памяти на диск (пространство подкачки) они делают аналогичные вещи, сжимая данные в динамически выделяемое пространство ОЗУ.

Поскольку данные сжимаются, они занимают меньше места в физической памяти, что делает вашу оперативную память еще более удобной. При этом обеспечивается бесперебойная работа системы, поскольку чтение сжатых данных в оперативной памяти обычно происходит быстрее, чем чтение из подкачки на диске.

zram и zswap

zram создает в оперативной памяти блочное устройство, которое действует как пространство подкачки (или RAM-диск общего назначения). Когда системе необходимо заменить неактивные страницы, zram сжимает их в блочное устройство. Никакой замены на диске не требуется.

zswap — это облегченный сжатый кэш оперативной памяти для страниц подкачки. Он пытается сжать страницы, необходимые для выгрузки, и сохранить их в пуле памяти в оперативной памяти. Плохо сжимаемые данные записываются непосредственно на диск (пространство подкачки). А когда пул памяти заполнен или оперативная память исчерпана, наименее использованная страница распаковывается и записывается на диск (подкачка). Требуется место подкачки на диске!

И zram, и zswap изначально НЕ используют оперативную память. Они динамически увеличивают или уменьшают использование оперативной памяти по мере необходимости. Разница в том, что zram работает как пространство подкачки с более высоким приоритетом, поэтому спящий режим не будет работать нормально. Хотя для работы zswap требуется место подкачки на диске.

Использование zram или zswap — хороший выбор для компьютеров с небольшим объемом оперативной памяти или для больших приложений/игр, которым требуется больше памяти, чем физической емкости ОЗУ.

Однако, если у вас много оперативной памяти, которая редко использует пространство подкачки, или вы ограничены ЦП (узким местом ЦП), то вы можете держаться подальше от них, поскольку они потребляют больше ЦП для сжатия/распаковки.

Вариант 1. Включить Zswap во время выполнения

Если вам нужен обмен для функции гибернации, то zswap — лучший выбор. Во всех текущих выпусках Ubuntu по умолчанию загружается модуль ядра, все, что вам нужно сделать, это просто включить функцию и внести несколько изменений в параметры.

1. Сначала нажмите Ctrl+Alt+T на клавиатуре, чтобы открыть окно терминала. Затем запустите команду, чтобы проверить текущие параметры модуля zswap:

systool -v -m zswap

Запустите sudo apt install sysfsutils, если команда не найдена. В выводе терминала должно быть напечатано «enabled=«N»», что означает, что эта функция не включена.

Все параметры модуля можно изменить с помощью файлов конфигурации в каталоге /sys/module/zswap/parameters/. Они включают в себя:

  • accept_threshold_percent — процентный порог, при котором zswap снова начнет принимать страницы после того, как он заполнится. По умолчанию 90% в Ubuntu.
  • compressor — установите алгоритм сжатия. Возможные значения: zstd, deflate, lzo, 842, lz4 и . >lz4hc. Посмотрите сравнение.
  • enabled – включить/выключить функцию, установив значение 0 или 1.
  • exclusive_loads – делает недействительными записи zswap при загрузке страниц. Значения включают 0 или 1.
  • max_pool_percent — максимальный процент физической памяти, который может занять zswap.
  • zpool — контролирует управление пулом сжатой памяти. Значения включают zbud (степень сжатия 2:1 или меньше), z3fold (3:1 или меньше), zsmalloc(более сложный метод, начиная с ядра 6.3).

2. Чтобы включить zswap, просто напишите «1» в файле конфигурации enabled, выполнив команду в терминале:

echo 1 | sudo tee /sys/module/zswap/parameters/enabled

Вы также можете изменить значение zpool на zsmalloc с помощью команды:

echo zsmalloc | sudo tee /sys/module/zswap/parameters/zpool

Вы также можете запустить аналогичные команды, описанные выше, чтобы настроить дополнительные параметры zswap. Чтобы проверить, просто снова запустите команду systool на шаге 1:

3. Чтобы просмотреть статистику zswap, просто запустите в терминале команду ниже:

sudo grep -r . /sys/kernel/debug/zswap

Вариант 2. Включить zswap при запуске.

Предыдущие команды включают zswap во время выполнения, но он не будет сохраняться после перезагрузки системы.

Чтобы сделать его постоянным, вы можете настроить загрузчик Grub на загрузку параметров ядра при запуске.

1. Сначала откройте терминал (Ctrl+Alt+T) и выполните команду для редактирования файла конфигурации Grub:

sudo nano /etc/default/grub

Здесь я использую текстовый редактор командной строки nano, который работает в большинстве сред рабочего стола. Вы можете заменить его на gnome-text-editor для версии 24.04 на GNOME по умолчанию, на gedit для версии 22.04 и более ранних версий или на другие редакторы в зависимости от вашего рабочего стола.

2. Когда файл откроется, добавьте следующие параметры ядра в качестве значения «GRUB_CMDLINE_LINUX_DEFAULT»:

zswap.enabled=1 zswap.zpool=zsmalloc

Вы можете добавлять/удалять дополнительные параметры zswap по своему усмотрению (например, zswap.compressor=lzo) и разделять их пробелом. Наконец, нажмите Ctrl+S, чтобы сохранить, и Ctrl+X, чтобы выйти из текстового редактора nano.

3. После сохранения изменений выполните приведенную ниже команду, чтобы заново создать записи меню загрузки Grub:

sudo update-grub

Советы: Для тех, у кого установлен Grub-customizer, просто запустите приложение и перейдите на страницу «Общие настройки», чтобы добавить параметры ядра, и, наконец, нажмите «Сохранить», чтобы применить изменения.

Статьи по данной тематике