- Для чего нужен файл подкачки?
- Размер файла подкачки.
- Добавляем SWAP на Ubuntu.
- SWAP и перезагрузка.
- Улучшаем работу (SWAP) Ubuntu.
Файл подкачки или SWAP (с англ. обмен) — это файл обеспечивающий механизм виртуализации памяти, при котором некорректный объем данных из оперативной памяти сохраняется на жестком диске (или SSD). В последующем будет происходить обмен данными между оперативной памятью и файлом подкачки.
Для чего нужен файл подкачки?
Если на вашем компьютере заканчивается оперативная память, то часть данных, содержащихся в ней, будет скинута в SWAP. Зачастую эти данные неактивны и их отсутствие в оперативной памяти не должно существенно влиять на производительность. Этот нехитрый механизм не дает оперативке полностью забиться и тем самым предупреждает тормоза, подвисание и даже прекращение работы различных программ.
Размер файла подкачки. Больше не всегда лучше
"Больше не всегда лучше" - это правило отлично описывает принцип выбора размера файла подкачки. В интернете можно найти много рекомендаций по выбору размера файла, но каково-то универсального ответа нет, все очень индивидуально и будет зависеть от:
- Размера оперативной памяти.
- Используемых приложений.
- Используется ли режим сна?
Для машин с маленькой оперативной памятью (до 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
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. На этом все, умственно трудитесь и хорошо питайте.
Только укажи, что твой предложенный вариант работает только на KVM или XEN виртуализациях - для тех кто сидит на VPS/VDS. На OpenVZ другой файл подкачки - VSwap.
С практики стоит отметить, что на SSD дисках, при 1Gb оперативы, добавить еще 2Gb самое оно. Особенно если у вас современные SSD которые херачат на запись и чтение с гигабайтными скоростями.
Спасибо за корректировки и советы )