Перейти к содержанию

Выбор размера файла подкачки⚓︎

Если оперативной памяти Вашего компьютера недостаточно (3 Гб и менее), то наиболее простым и быстрым решением проблемы является использование файла/раздела подкачки. В данной инструкции речь пойдёт о файле, так как это наиболее хорошее решение для сборки системы: размер файла очень быстро регулируется, быстро удаляется.

В целом, при компиляции базовой системы было занято примерно 3,5-4 Гб памяти.

Из этого и рассчитывайте размер swap.

Чтобы узнать, существует ли уже подкачка или нет, выполните:

swapon --show

А чтобы просмотреть использование ОЗУ и Swap:

free -m

Рассчёт размера подкачки (swap)⚓︎

Обычно объём подкачки равен половине объёма ОЗУ/объёму ОЗУ, умноженному на 2, но не всегда этого может хватить, особенно на слабых ПК. Поэтому рассчитайте размер файла или раздела так, чтобы обеспечить минимум 4 Гб в общей сложности (ОЗУ+Swap). Для сборки базовой системы этого хватит, а для сборки таких программ, как, например, Pale Moon, этого не хватит - нужно мощное железо. Не проще ли, в таком случае, не компилировать такое "тяжёлое" ПО, а найти бинарные пакеты?

Создание файла подкачки⚓︎

Чтобы создать файл подкачки, выполните:

sudo fallocate -l 1G /swapfile &&
sudo chmod 600 /swapfile       &&
sudo mkswap /swapfile          &&
sudo swapon /swapfile

Значения новых команд

  • sudo fallocate -l 1G /swapfile - создать файл /swapfile, размером 1 Гб. Чтобы выбрать другой размер, замените "1G" на желаемое значение.
  • sudo chmod 600 /swapfile - в целях безопасности, выставить нужные права на файл. О правах на файлы читать в интернете.
  • sudo mkswap /swapfile - создать файловую систему swap.
  • sudo swapon /swapfile - включение подкачки.

Настройка vm.swappiness⚓︎

Теперь настройка свопа. Есть параметр, сообщающий ядру, как часто использовать подкачку.

Для того чтобы проверить, какой параметр используется, выполните:

cat /proc/sys/vm/swappiness

Если хотите изменить это значение, выполните:

sudo sysctl vm.swappiness=X

Либо же:

sudo vim /etc/sysctl.conf
vm.swappiness=X

Где X - нужное значение. Swappiness может иметь значение от 0 до 100, значение по умолчанию = 60. Низкое значение заставляет ядро избегать подкачки, высокое значение позволяет ядру использовать подкачку активнее. Использование низкого значения на достаточном количестве памяти улучшает отзывчивость системы. Ну и жёсткий диск будет использоваться не так часто.

Сохранение изменений после перезагрузки⚓︎

Как только система перезагрузится, придётся опять включать подкачку и выставлять vm.swappiness, что, конечно, неудобно. Чтобы этого избежать, нужно сделать соответствующую запись в /etc/fstab:

echo '/swapfile none swap sw 0 0' |sudo tee -a /etc/fstab

И записать в /etc/sysctl.conf нужное значение swappiness:

echo 'vm.swappiness=X' |sudo tee -a /etc/sysctl.conf

Где X - нужное значение.

Удаление файла подкачки⚓︎

После сборки и настройки системы, вероятно, swap вам больше не понадобится. Поэтому лучше его удалить. Напоминаю, что все действия из этой инструкции выполняются ТОЛЬКО на хост-системе.

Выполните:

sudo swapoff /swapfile
sudo rm /swapfile

И удалите записи в /etc/fstab и /etc/sysctl.conf.

Значение новых команд

  • sudo swapoff... - отключить подкачку
  • sudo rm /swapfile - удалить подкачку

ВАЖНО!!!⚓︎

Важно

Если полностью отключить подкачку, то ОС будет использовать только ОЗУ и в случае его нехватки система может просто зависнуть.

Ну и пару нужных вещей:

  • Подкачка нужна для ровного и эффективного высвобождения оперативной памяти, и использовать swap в качестве "экстренной памяти" не рекомендуется в принципе;
  • Отключение swap не спасает от проблемы дискового ввода/вывода при конкуренции за память - дисковый I/O перемещается с анонимных страниц на файловые, что не только может быть менее эффективным, поскольку остаётся меньший пул страниц, доступных для высвобождения, но и само по себе может способствовать появлению этой высокой конкуренции.

Также вместо swap можно использовать zram/zswap.

Больше о подкачке смотреть здесь.

О работе с Zram смотреть здесь.

Back to top