logo

Настройка и установка файла подкачки (SWAP) в Ubuntu

Разместил , . Последнее изменение: 2018-01-28. / 2 комментария

файл подкачки (swap)

  1. Для чего нужен файл подкачки?
  2. Размер файла подкачки.
  3. Добавляем SWAP на Ubuntu.
  4. SWAP и перезагрузка.
  5. Улучшаем работу (SWAP) Ubuntu.

Файл подкачки или SWAP (с англ. обмен) — это файл обеспечивающий механизм виртуализации памяти, при котором некорректный объем данных из оперативной памяти сохраняется на жестком диске (или SSD). В последующем будет происходить обмен данными между оперативной памятью и файлом подкачки.

Для чего нужен файл подкачки?

Если на вашем компьютере заканчивается оперативная память, то часть данных, содержащихся в ней, будет скинута в SWAP. Зачастую эти данные неактивны и их отсутствие в оперативной памяти не должно существенно влиять на производительность. Этот нехитрый механизм не дает оперативке полностью забиться и тем самым предупреждает тормоза, подвисание и даже прекращение работы различных программ.

Размер файла подкачки. Больше не всегда лучше

"Больше не всегда лучше" - это правило отлично описывает принцип выбора размера файла подкачки. В интернете можно найти много рекомендаций по выбору размера файла, но каково-то универсального ответа нет, все очень индивидуально и будет зависеть от:

  1. Размера оперативной памяти.
  2. Используемых приложений.
  3. Используется ли режим сна?

Для машин с маленькой оперативной памятью (до 2 гигабайт) рекомендовано создать SWAP примерно равный оперативке. Если на машине стоит от 2 гигабайта памяти, то файл подкачки разумно ставить 1/2 от оперативной памяти, но не превышая 4 гигабайт. Эти рекомендации подходят только для систем не использующих сон/гибернацию и не работающих с секретными данными. Если вы использует сон/гибернацию, то размер файла следует брать равный размеру оперативной памяти, если вы работает с секретными данными, то возможно, следует отказаться от такого файла. Советую следить иногда за нагрузкой на оперативную память и SWAP при полной забитости можно расширить файл подкачки или установить больше памяти.

Добавляем файл подкачки (SWAP) на Ubuntu

Открываем наш терминал или подключаемся к машине по ssh и убеждаемся в отсутствии SWAP:

sudo swapon --show
или
free -h

Убеждаемся в наличии свободного места на диске:

df -h

Создаем файл подкачки утилиту fallocate, где 1 это размер файла в гигобайтах:

sudo fallocate -l 1G /swapfile

Проверим действительно ли зарегистрирован файл:

ls -lh /swapfile

Позаботимся о безопасности файла:

chown root:root /swapfile
chmod 0600 /swapfile 
ls -lh /swapfile

Такой нехитрый ход позволяет читать и записывать только пользователю root. Затем создаем swap пространство командой:

sudo mkswap /swapfile

Включаем файл командной:

sudo swapon /swapfile

Теперь файл подкачки подключен и работает. Убедиться в этом можно командами указаными выше.

Команды для отключения и проверки состояния отключения (если вы решите отказаться от файла или изменить его размер):

swapoff /swapfile
swapon -s

находим файл подкачки ubuntu

SWAP и перезагрузка

После перезагрузки системы файл подкачки отваливается, а это нам совсем не надо. Чтобы предупредить эту проблему редактируем файл /etc/fstab:

nano /etc/fstab 
В конце добавить /swapfile none swap sw 0 0

Так же можно воспользоваться такой командой

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Теперь после перезагрузки системы SWAP никуда не пропадет и продолжит свою работу.

Улучшаем работу файла подкачки (SWAP) Ubuntu

Улучшать работу файла мы будем с помощью контроля использования пространства файла подкачки. Существует такой параметр, как "swappiness", чем выше это значение тем больше система будет пытаться сохранить оперативной памяти и тем больше будет скидываться в файл подкачки, при значениях близких к 0 система не будет использовать SWAP без крайней необходимости.

По умолчанию swappiness 60%, а это значит что после того как оперативная память заполнится на 40%, Ubuntu будет пытаться скинуть "излишки" на жёсткий диск. Это не очень, особенно если у вас достаточно много памяти, снизив этот значение можно добиться повышения производительности. Понизим это значение до 20.

sudo sysctl vm.swappiness=20

Теперь файл подкачки будет задействован только после того, как будет использовано 80% оперативной памяти. Если система начала работать лучше и никаких нареканий не выбывает, то ставим это значение как постоянное, чтобы после перезагрузки значение не пришло к стандартному.

sudo sysctl -w vm.swappiness=20

Существует ещё один интересный параметр vfs_cache_pressure. Он указывает размер выделяемой памяти для кэширования операций на жёстком диске. По умолчанию значение 100, предельных значений я, к сожалению, не знаю. 0 - ничего не кэшировать. >100 - агрессивно кэшировать операции на жёстком диске. Тут предлагаю экспериментальным путём найти нужное значение.

Изменим параметр до 50:

echo 50> /proc/sys/vm/vfs_cache_pressure

Для работы после перезагрузки добавить в конце файла /etc/sysctl.conf такую строку:

vm.vfs_cache_pressure=50

Просмотр текущего значения:

cat /proc/sys/vm/vfs_cache_pressure

Подведём итоги: мы создали файл подкачки для Ubuntu, настроили его, защити, урегулировали отношения между оперативной памятью и SWAP. На этом все, умственно трудитесь и хорошо питайте.

2 комментария Добавить комментарий

  • Только укажи, что твой предложенный вариант работает только на KVM или XEN виртуализациях - для тех кто сидит на VPS/VDS. На OpenVZ другой файл подкачки - VSwap.

    С практики стоит отметить, что на SSD дисках, при 1Gb оперативы, добавить еще 2Gb самое оно. Особенно если у вас современные SSD которые херачат на запись и чтение с гигабайтными скоростями.

    • Спасибо за корректировки и советы )

Оставить комментарий

* Возможна анонимная отправка комментария.

Согласен с политикой конфиденциальности *