vm:ubuntu:02-swapv2

Оптимизация Ubuntu: Настройка swap и параметров памяти

Алерт: High swap space usage (less than 50% free) - обычно возникает при отсутствии или неправильной настройке swap.

Проверяем текущее состояние системы:

# Проверить наличие и использование swap
free -h
 
# Текущее значение swappiness
cat /proc/sys/vm/swappiness
 
# Топ процессов по памяти
ps aux --sort=-%mem | head -15
# Создать swap файл 2GB
sudo fallocate -l 2G /swapfile
 
# Установить права доступа
sudo chmod 600 /swapfile
 
# Создать swap
sudo mkswap /swapfile
 
# Активировать swap
sudo swapon /swapfile
 
# Проверить результат
free -h
swapon --show
# Добавить в fstab для автоматической активации при загрузке
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
 
# Проверить что добавилось
grep swapfile /etc/fstab
# Добавить параметры оптимизации
sudo tee -a /etc/sysctl.conf <<EOF
vm.swappiness=10
vm.vfs_cache_pressure=50
vm.dirty_ratio=10
vm.dirty_background_ratio=5
EOF
 
# Применить настройки без перезагрузки
sudo sysctl -p
 
# Проверить применение параметров
cat /proc/sys/vm/swappiness
grep "vm.swappiness\|vm.vfs_cache_pressure\|vm.dirty" /etc/sysctl.conf
Параметр Значение Описание
vm.swappiness 10 Система будет использовать swap только при необходимости (по умолчанию 60)
vm.vfs_cache_pressure 50 Баланс между кэшированием файлов и освобождением памяти
vm.dirty_ratio 10 Процент памяти для грязных страниц перед записью на диск
vm.dirty_background_ratio 5 Фоновая запись грязных страниц
# Итоговая проверка
free -h
swapon --show
cat /proc/sys/vm/swappiness

Ожидаемый результат:

  • Swap 2GB создан и активен
  • 100% swap свободен (0B используется)
  • swappiness = 10
  • Все параметры сохранены для автозагрузки

Для систем с малым объемом RAM (менее 2GB):

# Редактировать конфигурацию journald
sudo nano /etc/systemd/journald.conf

Раскомментировать и установить:

SystemMaxUse=50M
RuntimeMaxUse=50M
# Перезапустить службу
sudo systemctl restart systemd-journald

Внимание: Может временно подтормозить систему

# Выгрузить и загрузить swap заново
sudo swapoff -a && sudo swapon -a
# Посмотреть какие процессы используют swap
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | head -15
 
# Статистика использования памяти
vmstat 1 5
  • vm/ubuntu/02-swapv2.txt
  • Последнее изменение: 2025/12/16 19:02
  • admin