Як підключити SWAP для віртуального сервера: плюси та мінуси SWAP
14:29, 04.11.2022
SWAP – важливий механізм, що забезпечує розумне керування пам'яттю віртуального сервера шляхом переміщення частини даних з оперативної пам'яті на твердотільний накопичувач. Технологія актуальна в тих випадках, коли система потребує такої кількості ОЗУ, яким сервер не має в своєму розпорядженні фізично. Активація свопінгу дозволить помістити в спеціальний розділ накопичувача дані, які використовуються найрідше.
Досвідчені користувачі Linux знають, що велика кількість сторінок, які використовуються програмами на етапі запуску, потрібні тільки при ініціалізації, і вони більше не використовуються протягом всієї робочої сесії. SWAP дозволяє вивантажити з ОЗУ ці сторінки, що не використовуються, і перемістити їх в простір накопичувача. Таким чином, swapping є важливим інструментом оптимізації серверних систем.
Плюси SWAP
Основною перевагою цієї технології є те, що вона дозволяє:
- Зменшити витрати на утримання сервера. Тобто ви можете взяти більш дешевий тарифний план віртуального приватного сервера з недостатнім обсягом ОЗП, налаштувати SWAP і таким чином стабілізувати роботу сервера.
- Оптимізувати роботу сервера з допомогою вивільнення сторінок пам'яті.
На серверах без конкуренції або з малою конкуренцією за пам'ять користь від цієї технології буде невеликою – максимум, ви зможете перекинути у своп анонімну пам'ять, яку програми та служби використовують рідко. Це дозволить підвищити коефіцієнт влучень у кеш і загалом звільнити дорогоцінну ОЗУ.
Також технологія буде корисна на VPS, де бувають тимчасові сплески в плані споживання RAM – стійкість до такого роду ресурсних аномалій буде вищою.
Мінуси SWAP
Головний мінус – оперативна пам'ять все одно швидше. Навіть якщо у вас на сервері супер сучасний NVMe-накопичувач, ОЗУ працюватиме з інформацією швидше. Тому зловживати свопінгом не варто, потрібно чітко розуміти, які дані розумно поміщати в цю пам'ять, а які краще залишити для ОЗУ.
Крім того, SWAP може відстрочити виклик Out-Of-Memory Killer вашою операційною системою, а активація цього процесу буває необхідною, коли потрібно завершити програму, яка загрожує збоєм ядра. Такі ситуації рідкість, особливо на сучасних версіях Linux, але вони мають місце.
Створення та підключення файлу підкачки SWAP
Уявимо ситуацію, що у вас є VPS з 2 гігабайтами оперативної пам'яті без розділу під swap. У цьому випадку нам необхідно спочатку створити файл під swap:
sudo fallocate -l 2G /mnt/swapfile
Тепер ми маємо файл підкачки розміром 2 ГБ. Якщо виникнуть проблеми з fallocate, можна вдатися до перевіреної часом команди dd:
sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=2048
Далі необхідно присвоїти права читання та запису для цього файлу:
sudo chmod 600 /mnt /swapfile
І тепер, коли файл створений і права налаштовані під адміністратора, ми можемо вказати системі шлях до файлу підкачки:
sudo mkswap /mnt/swapfile
Тепер Linux буде використовувати даний файл, щоб вивантажувати в нього сторінки, що рідко використовуються. Підключаємо файл:
sudo swapon /mnt/swapfile
Залишається відкрити в режимі редагування файл /etc/fstab і прописати туди рядок:
/mnt/swapfile none swap sw 0 0
Якщо цього не зробити, файл підкачки буде активний тільки до наступного перезавантаження сервера, а потім його потрібно знову активувати вручну.
Як перевірити наявність свопу у системі?
Для цього існує проста команда:
swapon --show
При її активації ви побачите інформацію про файл підкачки, його розмір та кількість задіяних мегабайт.
Якого розміру створити SWAP?
Суть у тому, що оптимальний розмір файлу підкачки визначається індивідуально. Він залежить від таких факторів:
- обсяг ОЗП на VPS;
- типи використовуваних додатків, а також їх «ненажерливість»;
- чи використовується на сервері режим сну.
Якщо у вас віртуальна машина з об'ємом RAM менше 2 ГБ, то оптимальним буде розмір файлу SWAP у півтора-два рази більше. На машинах з 3-4 ГБ у більшості випадків вистачає файлу підкачування розміром на 10-15% більше за обсяг оперативної пам'яті. Якщо ж у вас VPS з 6 ГБ ОЗУ і більше, достатньо буде своп-файлу на 1-2 ГБ.
Пам'ятайте, що при надлишку ОЗУ файл підкачування краще взагалі не активувати – якщо ваша система не використовує на 100% наявні ресурси, то потреби у свопінгу просто немає. Ви тільки нашкодите, адже перенесення сторінок даних у SWAP-файл спричинить уповільнення швидкості обробки даних при зверненні до цих сторінок.