# Выбор размера файла подкачки Если оперативной памяти Вашего компьютера недостаточно (3 Гб и менее), то наиболее простым и быстрым решением проблемы является использование файла/раздела подкачки. В данной инструкции речь пойдёт о файле, так как это наиболее хорошее решение для сборки системы: размер файла очень быстро регулируется, быстро удаляется. В целом, при компиляции базовой системы было занято примерно 3,5-4 Гб памяти. Из этого и рассчитывайте размер swap. Чтобы узнать, существует ли уже подкачка или нет, выполните: ``` swapon --show ``` А чтобы просмотреть использование ОЗУ и Swap: ``` free -m ``` ## Рассчёт размера подкачки (swap) Обычно объём подкачки равен половине объёма ОЗУ/объёму ОЗУ умноженного на 2, но не всегда этого может хватить, особенно на слабых ПК. Поэтому рассчитайте размер файла или раздела так, чтобы обеспечить минимум 4 Гб в общей сложности (ОЗУ+Swap). Для сборки базовой системы этого хватит, а для сборки таких программ, как, например, Pale Moon, этого не хватит - нужно мощное железо. Не проще ли, в таком случае, не компилировать такое "тяжёлое" ПО, а найти бинарные пакеты? ## Создание файла подкачки Чтобы создать файл подкачки, выполнить: ```bash 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 Теперь настройка свопа. Есть параметр, сообщающий ядру, как часто использовать подкачку. Параметр имеет значения от 0 до 100, чем выше значение, тем чаще будет использоваться swap. Для того, чтобы проверить, какой параметр используется, выполнить: ``` cat /proc/sys/vm/swappiness ``` Если хотите изменить это значение, выполните: ``` sudo sysctl vm.swappiness=X ``` Где X - нужное значение. ## Сохранение изменений после перезагрузки Как только система перезагрузится, придётся опять включать подкачку и выставлять 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 ``` ## Удаление файла подкачки После сборки и настройки системы, вероятно, swap вам больше не понадобится. Поэтому лучше его удалить. Напоминаю, что все действия из этой инструкции выполняются ТОЛЬКО на хост-системе. Выполнить: ``` sudo swapoff /swapfile sudo rm /swapfile ``` И удалить записи в `/etc/fstab` и `/etc/sysctl.conf`. **Объяснение новых команд** * **sudo swapoff...** - отключить подкачку * **sudo rm /swapfile** - удалить подкачку ### ВАЖНО!!! !> *Когда полностью отключить подкачку, то ОС будет использовать только ОЗУ и в случае его нехватки система может просто зависнуть.* Ну и пару нужных вещей: * Подкачка нужна для ровного и эффективного высвобождения оперативной памяти и использовать swap в качестве "экстренной памяти" не рекомендуется в принципе. * Отключение swap не спасает от проблемы дискового ввода/вывода при конкуренции за память - дисковый I/O перемещается с анонимных страниц на файловые, что не только может быть менее эффективным, поскольку остаётся меньший пул страниц, доступных для высвобождения, но и само по себе может способствовать появлению этой высокой конкуренции. Так же, вместо swap можно использовать zram/zswap. Больше о подкачке смотреть [здесь](https://habr.com/ru/company/flant/blog/348324/). О работе с `Zram` смотреть [здесь](additional/zram.md).