Управление процессами в Linux: приоритеты и systemd

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

linuxsystemdnice

ℹ️ Работая с сервисами и процессами в Linux, многие ограничиваются запуском сервисов через systemd или простым изменением приоритета процессов через nice. Но что если нужно запускать сервисы с определённым приоритетом, обеспечивая их стабильную работу даже при высокой нагрузке? Можно сделать это через systemd, настроив параметры запуска прямо в конфигурации сервиса.

  1. 1. Настраиваем приоритет для процессов через systemd:

    В Linux есть утилиты nice и renice, которые позволяют задавать приоритет для процессов, где -20 — это наивысший приоритет, а 19 — низший. Чтобы не настраивать это вручную для каждого запуска, можно прописать приоритет в файле systemd для сервиса.

  2. 🔥 2. Конфигурация сервиса в systemd:

    Для примера, допустим, у нас есть сервис myapp.service. Мы можем настроить приоритет его процессов, добавив параметр Nice в конфигурацию systemd.

    🖥 Открываем файл конфигурации сервиса:

    sudo nano /etc/systemd/system/myapp.service

    📑 Добавляем строчку с приоритетом:

    [Service]
    ExecStart=/usr/bin/myapp
    Nice=-10

    ℹ️ Теперь сервис всегда будет запускаться с приоритетом -10, что сделает его менее подверженным вытеснению другими процессами при нагрузке на систему.

  3. 📂 3. Добавляем автозапуск с настройками после перезагрузки:

    Чтобы сервис запускался с заданным приоритетом автоматически при загрузке системы, достаточно включить его автозапуск

    sudo systemctl enable myapp.service
    sudo systemctl start myapp.service
  4. ⭐️ 4. Дополнительные параметры для контроля процесса:

    Если нужно дополнительно ограничить потребление ресурсов, можно также указать параметры CPUShares и MemoryLimit.

    [Service]
    ExecStart=/usr/bin/myapp
    Nice=-10
    CPUShares=1024
    MemoryLimit=500M

    ℹ️ Это обеспечит, что сервис будет использовать не более 500 МБ оперативной памяти и получит приоритетное использование процессорного времени.

✳️ Такой подход позволяет более тонко настраивать поведение процессов и улучшает управление ресурсами в системах с высокой нагрузкой.

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

🧭 @recura_tech

Маскот Linux (Tux) на ярком абстрактном фоне с иконками CPU, памяти и шестерёнок — иллюстрация управления процессами и ресурсами.
Иллюстрация для темы: приоритеты процессов, CPU и память в Linux.

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