Lx4U-book/docs/additional/swap.md
2021-04-22 21:26:30 +03:00

89 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Выбор размера файла подкачки
Если оперативной памяти Вашего компьютера недостаточно (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).