Содержание

Оптимизация 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

Шаг 1: Создание swap файла

# Создать swap файл 2GB
sudo fallocate -l 2G /swapfile
 
# Установить права доступа
sudo chmod 600 /swapfile
 
# Создать swap
sudo mkswap /swapfile
 
# Активировать swap
sudo swapon /swapfile
 
# Проверить результат
free -h
swapon --show

Шаг 2: Добавление в автозагрузку

# Добавить в fstab для автоматической активации при загрузке
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
 
# Проверить что добавилось
grep swapfile /etc/fstab

Шаг 3: Оптимизация параметров памяти

# Добавить параметры оптимизации
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

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

Дополнительная оптимизация

Ограничение размера журналов

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

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

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

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

Очистка swap (опционально)

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

# Выгрузить и загрузить 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