mirror of
https://github.com/Linux4Yourself/book.git
synced 2025-01-24 15:12:18 +08:00
119 lines
6.7 KiB
Markdown
119 lines
6.7 KiB
Markdown
# Выбор размера файла подкачки
|
||
|
||
Если оперативной памяти Вашего компьютера недостаточно (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).
|