Минимизация использования Swap на Linux для ускорения сервера

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

swaplinuxzram

ℹ️ Большинство Linux-систем используют Swap как резервный источник памяти, когда оперативная память (RAM) заканчивается. Но Swap гораздо медленнее RAM, особенно если он расположен на HDD. Вот несколько трюков, которые помогут вам минимизировать использование Swap и повысить производительность:

  1. 👨‍💻 1. Уменьши "swappiness"

    "Swappiness" регулирует, как агрессивно ядро Linux использует Swap. Значение по умолчанию (обычно 60) подходит не всем. Чтобы система реже обращалась к Swap, уменьшите этот параметр:

    # Посмотреть текущее значение
    cat /proc/sys/vm/swappiness
    
    # Временно изменить на 10 (эффективно при высоких нагрузках на RAM)
    sudo sysctl vm.swappiness=10
    
    # Для постоянного изменения добавьте в /etc/sysctl.conf
    echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
    
  2. 📊 2. Следи за потреблением памяти

    Если вы используете слишком много памяти, проблема может быть в "утечках" в приложениях. Используйте smem для визуализации использования памяти (включая Swap):

    sudo apt install smem
    smem -tk | sort -nk6
    

    ℹ️ Это покажет, какие процессы занимают больше всего виртуальной, реальной и swap-памяти.

  3. 🖥 3. Ограничь Swap для конкретных процессов

    С помощью cgroups можно установить лимиты на использование Swap конкретными процессами. Пример с использованием systemd:

    - Создайте новый сервисный файл:

    sudo nano /etc/systemd/system/limit-swap.service
    

    - Добавьте в него:

    [Service]
    ExecStart=/path/to/your/app
    MemorySwapMax=1G
    

    - Затем включите и запустите:

    sudo systemctl daemon-reload
    sudo systemctl start limit-swap.service
    
  4. ⚡️ 4. Включи ZRAM вместо классического Swap

    ZRAM сжимает данные, записываемые в Swap, позволяя экономить место и ускорять операции. Установить ZRAM можно с помощью zram-tools:

    sudo apt install zram-tools
    

    Конфигурация ZRAM на 50% от объема RAM:

    echo "ALGO=zstd" | sudo tee /etc/default/zramswap
    echo "PERCENT=50" | sudo tee -a /etc/default/zramswap
    sudo systemctl restart zramswap
    

✳️ Минимизация использования Swap не только ускорит работу ваших серверов, но и продлит срок службы SSD. А с ZRAM вы получите лучший компромисс между производительностью и надежностью.

tags: #полезно #linux #swap

🧭 @recura_tech

Скриншот терминала в тёмной теме с примерами команд для уменьшения использования Swap: sysctl, systemd и настройка ZRAM.
Скриншот терминала с командами настройки swappiness, cgroups/systemd и ZRAM.

Читайте так же