Skip to content

Мало оперативной памяти?

nightloli edited this page Jul 8, 2020 · 2 revisions

Zram

Если из-за постоянного использования swap-файла страдает отзывчивость системы, то, возможно, стоит попробовать zram. Zram создает сжатое блочное устройство в оперативной памяти, которое можно использовать как swap-файл, т.е. выгружаемые страницы будут храниться не на "медленном" диске, а в оперативной памяти в сжатом виде, что требует некоторых затрат процессорного времени.

На что обратить внимание при использовании zram
  • На параметр --priority у комманды swapon
  • На параметр vm.swappiness

Пример: Для создания одного zram-устройства емкостью 2GiB с алгоритмом сжатия lz4:

# modprobe zram
# echo lz4 > /sys/block/zram0/comp_algorithm
# echo 2G > /sys/block/zram0/disksize
# mkswap --label zram0 /dev/zram0
# swapon --priority 100 /dev/zram0

Примечание: # - означает выполнение под root

UKSM

Также для получения небольшого количества оперативной памяти из воздуха можно использовать UKSM. Это улучшенный вариант обычного KSM, который занимается сканированием памяти в поисках одинаковых страниц памяти в разных страницах, для их объединения. В сравнении с KSM, он использует более щадящие процессор алгоритмы поиска страниц.

Он по-умолчанию включён в Calculate Linux, на большинство других дистрибутивов для его установки понадобится патчить ядро и собирать своё собственное.

  1. Скачайте патч UKSM под свою версию ядра из его репозитория гитхаба

  2. Примените патч на ядро при помощи команды patch -p1 < ../UKSM-x.y.patch, где x,y - версия UKSM

  3. Выполните от рута make menuconfig или любую другую команду для вызова меню настроек ядра, например, make nconfig

  4. Выберите Memory management options > Enable KSM for page merging и затем выставите Choose UKSM/KSM strategy на Ultra-KSM for page merging

Для мониторинга работы UKSM существует UKSMTools. У него есть готовые пакеты для части дистров и ебилд для генты.

Также обратите внимание на статью про DE и WM.

И можете попробовать собрать ядро под себя.