Управление свопом

Дмитрий Корнев
14 октября, 10:16

Память стоит недорого и при её нехватке проще докупить. Но иногда это сделать невозможно, например, во многих современных ноутбуках память распаяна.

На этот случай есть SWAP (своп). Это файл или область на диске, которая используется в качестве резервного места. Когда основная память заканчивается, данные частично переносятся туда.

Есть мнение, что своп — это плохо, особенно для SSD-диска. Может быть так и было на начальном этапе, но сейчас ресурс таких дисков достаточно велик, и они быстрее устаревают, нежели выходят из строя из-за частых операций записи.

Скорость работы современных дисков SSD велика, соответственно своп на них сильно выручает при нехватке памяти, не сказываясь ощутимо на производительности компьютера. Ну, во всяком случае при обычном использовании.

Я убедился в этом на компьютере с 16Гб памяти. Для кого-то может быть и этот объем кажется существенным. Но на самом деле по сегодняшним меркам — это минимум. Это подтверждает и стоимость памяти. Две планки DDR4 суммарной ёмкостью 32Гб можно купить начиная от 6000 руб.

В общем ситуация — компьютер декстоп используется без выключения. На нём Gnome, Firefox, VSCode, Nodejs, ну и всякий другой рабочий софт. После запуска, первые 1-2 дня работает без проблем. Потом память могла кончится. Больше всего съедают память Firefox и VSCode.

Последствия:

С утечками памяти бороться сложно, нет существенного эффекта. Если периодически перезапускать самые тяжелые Firefox и VSCode, то это помогает лишь на какое-то время. Кроме названных программ видимо едят память и другие, т.к. вначале при перезапуске компьютера свободной памяти всегда сильно больше.

В качестве решения, во-первых, для Debian стоит установить пакет earlyoom, чтобы в критической ситуации он мог отстрелить тяжёлые процессы, как это делает Ubuntu. Это лучше, чем просто зависнуть. Установка:

sudo apt install earlyoom

Во-вторых, включаем своп. Я создал своп 32Гб.

Всё, что написано ниже проверенно в Debian 12.

Настройка свопа

Посмотреть текущий своп:

swapon

Просмотр информации о памяти и свопе:

free -m

Создаём файл swapfile для свопа 32Гб в корне, устанавливаем права и активируем:

fallocate -l 32G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

В файл /etc/fstab добавляем строчку:

/swapfile swap swap defaults 0 0

Проверяйте результат командами, которые были вначале.

Удаление или изменение свопа

Если нужно изменить размер свопа, проще всего удалить старый и создать новый.

Отключение свопа:

swapoff -v /swapfile

Если своп вам больше не нужен, то удалите строчку, которую мы прописывали в файле /etc/fstab. Ну и сам файл свопа swapfile после этого можно удалить.

Комментарии