Управление ресурсами — настройка механизмов ОС, которые ограничивают и распределяют CPU, память, дисковые операции и сеть между процессами или группами процессов. Это относится к настройке распределения ресурсов и приоритетов, а не к поиску первопричины: метод чаще используют, чтобы сделать поведение системы более предсказуемым или смоделировать условия.
Состоит из:
- Списка ресурсов, для которых настраивается управление
- Списка целей управления ресурсами
- Списка параметров управления для каждого ресурса
- Списка сценариев регулирования сети
Недостатки:
- Зависимость от реализации и версии ОС
- Сложность из-за большого числа параметров
- Некоторые настройки могут быть опасны, например: некоторые параметры, изменяемые утилитами, например:
hdparm, могут привести к потере данных
Требуемые вычислительные ресурсы:
-
Низкие:
-
Применение базовых настроек управления ресурсами как изменений конфигурации ОС: задания приоритетов и параметров через
nice/renice,chrt,ionice,sysctl, а также настройка параметров через файлы/procи/sys -
Использование средств управления ресурсами для процессов или групп процессов для задания фиксированных ограничений и распределения ресурсов
-
-
Средние:
- Применение профилей настройки, например: Tuned, которые включают несколько подсистем и параметров одновременно
-
Высокие:
- Сетевое моделирование при тестировании производительности: добавление задержки пакетов и использование дисциплин очередей
tcдля управления сетевым трафиком
- Сетевое моделирование при тестировании производительности: добавление задержки пакетов и использование дисциплин очередей
Временные затраты на реализацию:
-
Низкие: точечные действия, например: поменять приоритет процесса, задать лимит
-
Средние: нужно подобрать значения под конкретную нагрузку, добавить мониторинг срабатываний ограничений и прогнать тесты
-
Высокие: требуется политика на несколько сервисов, согласование приоритетов, безопасные дефолты, автоматизация и процедура отката
Применимость:
- Этап эксплуатации
- Этап после первичной диагностики
- Тестирование производительности
Процессор:
-
Инструменты:
nice/renice,chrt, режимы частоты CPU через/sys/devices/system/cpu/cpufreq/policy0/,cpupower,numactl, cpusets, распределение прерываний, управление потреблением через cgroups, параметры загрузки, настройки BIOS -
Типичный эффект: привязка к CPU и cpusets могут повышать производительность за счёт «разогрева кэша» и локализации памяти
-
Риск: исключительные CPU-наборы уменьшают число процессоров, доступных остальной системе
Память:
-
Механизмы: системные параметры памяти через
sysctl, huge pages и transparent huge pages, выбор распределителя памяти в user-space, привязка NUMA numactl, базовые лимиты через ulimit, расширенное управление через cgroups memory, общесистемные лимиты в/etc/security/limits.conf -
Типичный эффект: размещение рабочих наборов в основной памяти и снижение частоты подкачки
-
Риск: изменение параметров
sysctlможет увеличить нагрузку на ядро при нехватке памяти и повлиять на раннее срабатывание OOM
Диски:
-
Механизмы:
ionice, управление дисковым вводом-выводом через cgroups blkio, параметры очередей в/sys/block/*/queue/*, настройка устройства черезhdparm, параметры контроллеров -
Типичный эффект:
ioniceв классе “бездействие” позволяет выполнять длительные фоновые задачи так, чтобы они меньше мешали остальной нагрузке -
Риск:
ioniceв режиме реального времени при неправильном применении может привести к нехватке ресурсов для других процессов
Сеть:
-
Механизмы: общесистемные сетевые параметры через
sysctlи/proc/sys/net, настройки на уровне сокетов через setsockopt(2), дисциплины очередейtc, управление приоритетом через cgroups, использование BPF для классификации, параметры конфигурации, профили Tuned для автоматизации части настроек -
Типичный эффект: дисциплины очередей позволяют планировать трафик
-
Риск: много настраиваемых параметров