Lx4U-book/docs/additional/swap.md
2021-07-08 18:02:47 +03:00

119 lines
6.7 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
Теперь настройка свопа. Есть параметр, сообщающий ядру, как часто использовать подкачку.
Для того чтобы проверить, какой параметр используется, выполните:
```bash
cat /proc/sys/vm/swappiness
```
Если хотите изменить это значение, выполните:
```bash
sudo sysctl vm.swappiness=X
```
Либо же:
```bash
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.
Больше о подкачке смотреть [здесь](https://habr.com/ru/company/flant/blog/348324/).
О работе с `Zram` смотреть [здесь](additional/zram.md).