Публикации
Мониторинг системы контрольных групп процессов в ОС Альт
Всероссийский сборник статей и публикаций института развития образования, повышения квалификации и переподготовки.
Скачать публикацию
Язык издания: русский
Периодичность: ежедневно
Вид издания: сборник
Версия издания: электронное сетевое
Публикация: Мониторинг системы контрольных групп процессов в ОС Альт
Автор: Крайнов Павел Алексеевич, Пашина Софья Александровна
Периодичность: ежедневно
Вид издания: сборник
Версия издания: электронное сетевое
Публикация: Мониторинг системы контрольных групп процессов в ОС Альт
Автор: Крайнов Павел Алексеевич, Пашина Софья Александровна
Крайнов Павел АлексеевичПашина Софья АлександровнаСтудентыг. Москва, РГУ Нефти и Газа им. И.М. ГубкинаМониторинг системы контрольных групп процессов в ОС АльтMonitoring the process control group system in OS AltОсновы работы с cgroupsКонтрольные группы (cgroups) представляют собой встроенный механизм Linux, предназначенный для управления системными ресурсами. С его помощью можно выделять и ограничивать ресурсы, доступные отдельным процессам или их группам. Эта технология особенно актуальна для повышения производительности, обеспечения безопасности и рационального использования ресурсов системы.Для работы с cgroups можно использовать как специальные утилиты, так и воспользоваться базовыми средствами, такими как команды mount и mkdir. Например, смонтируем виртуальную файловую систему tmpfs, которая далее нам понадобится для создания и управления иерархии cgroups:# Монтируем файловую систему tmpfsmount -t tmpfs cgroup_root /sys/fs/cgroupДалее создадим каталоги для подсистем cpu, memory, и cpuset внутри /sys/fs/cgroup, чтобы можно было отдельно настраивать эти ресурсы# Создаем подкаталоги для различных подсистем cgroupmkdir -p /sys/fs/cgroup/{cpu,memory,cpuset}После, смонтируем виртуальную файловую систему типа cgroup, указав в параметре -o команды mount список имен подсистем, которые будут приписаны иерархии контрольных групп. Например, для подсистемы cpuset код должен быть:# Монтируем систему cgroup с подсистемой cpusetmount -t cgroup -o cpuset mycgroup /sys/fs/cgroup/cpusetСоздание и настройка контрольной группыПосле того как система cgroup смонтирована, можно создавать иерархии cgroups. Например, для создания группы mycgroup и ограничения ее ресурсов выполним команду:# Создаем каталог для новой контрольной группыmkdir /sys/fs/cgroup/cpuset/mycgroupДля того, чтобы убедиться, что cgroup успешно смонтирована и доступна для дальнейшей настройки, выведем список всех смонтированных cgroups:# Проверяем смонтированные cgroupsmount | grep cgroupВ результате выполнения команды mkdir автоматически создаются псевдофайлы, которые позволяют задавать параметры ресурсов для этой группы. Например, чтобы разрешить группе mycgroup использовать только логические процессоры 2 и 3 и узел памяти 0, пропишем команды:# Настройка процессоров и памяти для группыecho 2-3 > /sys/fs/cgroup/cpuset/mycgroup/cpuset.cpusecho 0 > /sys/fs/cgroup/cpuset/mycgroup/cpuset.memsДля того чтобы добавить процесс в данную группу, достаточно передать его идентификатор (PID) в соответствующий псевдофайл:# Добавляем процесс с ID myPID в группу mycgroupecho myPID > /sys/fs/cgroup/cpuset/mycgroup/tasksПроверка работоспособности настроекЧтобы убедиться, что mycgroup корректно создана и применяет ограничения, используем следующие шаги:Создание тестового процесса:Для проверки создадим процесс, который будет занимать процессорное время. Например, воспользуемся командой sleep:sleep 1000 &Добавление процесса в группу:Добавим полученный PID в группу mycgroup, подставив его в команду:echo 3635 > /sys/fs/cgroup/cpuset/mycgroup/tasksПроверка параметров cpuset для группы:Чтобы убедиться, что ограничения на процессоры и память установлены правильно, выполним следующие команды:cat /sys/fs/cgroup/cpuset/mycgroup/cpuset.cpuscat /sys/fs/cgroup/cpuset/mycgroup/cpuset.memsЕсли значения 2-3 и 0 отображаются, то параметры настроены корректно.Проверка добавления процесса в группу:Далее убедимся, что процесс находится в группе, просмотрев файл tasks:cat /sys/fs/cgroup/cpuset/mycgroup/tasksPID 3635 отображается в этом файле, что подтверждает его принадлежность к mycgroup.Рисунок 1 – Создание и настройка контрольной группыОграничение нагрузки процессора и памяти с использованием cgroupsС помощью утилиты можно проверить эффективность ограничения ресурсов процессора и памяти. Для эксперимента были взяты показатели 20% и 50 Мб соответственно. В ходе проведения эксперимента можно оценить, как ограничения влияют на выполнение тестового процесса, который пытается использовать больше ресурсов, чем ему разрешено. Благодаря этому можно наглядно увидеть, что система способна сохранять стабильность работы при высоких нагрузках, предотвращая монополизацию ресурсов отдельными процессами.Создание тестовой группы: Выполняются команды для создания контрольной группы и задания ограничений:mkdir /sys/fs/cgroup/testgroupecho "+cpu +memory" > /sys/fs/cgroup/cgroup.subtree_control# Ограничение процессора до 20%:echo "20000 100000" > /sys/fs/cgroup/testgroup/cpu.max# Ограничение памяти до 50 МБ:echo $((50 * 1024 * 1024)) > /sys/fs/cgroup/testgroup/memory.maxРисунок 4 – Создание тестовой группы для проведения экспериментаЗапуск тестового процесса:Запускается процесс, который генерирует высокую нагрузку на процессор и память:# Генерация высокой нагрузки:dd if=/dev/zero of=/dev/shm/testfile bs=10M count=1024 &# Добавление процесса в группу:echo $! > /sys/fs/cgroup/testgroup/cgroup.procsМониторинг: Выполняется мониторинг использования ресурсов с помощью утилит top и htop. Сравниваются фактические показатели нагрузки процессора и памяти с установленными лимитами.Рисунок 8 – Показатели при нагрузке 20% (ограничение) Таблица 1 – Показатели тестового процесса при мониторинге Таблица сравнения показателей при разном ограниченииТаблица 2 – Сравнение показателей при разном ограниченииЗаключениеИспользование cgroups в Linux дает возможность более гибкого управления и распределения ресурсов, как на серверных системах, так и на стационарных рабочих компьютерах. Данный процесс включает в себя взаимодействие cgroups с разнообразными утилитами мониторинга, такими как top, htop. Это помогает администраторам и простым пользователям получать актуальную информацию о состоянии системы и эффективно использовать ресурсы для выполнения сложных задач, оптимизации нагрузки и улучшения стабильности работы.Список использованных источниковБорьба за ресурсы, часть 1: Основы Cgroups [Электронный ресурс]. – URL: (дата обращения: 12.11.2024). Качалов, В. А. Что такое «мониторинг» и «измерение процесса»? // Методы менеджмента качества. – 2008. – № 1-2. Контрольная группа (Linux) [Электронный ресурс]. – URL: (дата обращения: 12.11.2024). Матяш, Д. В. Организация системы мониторинга в процессе управления проектами компании // Материалы конференции. Механизмы контейнеризации: cgroups [Электронный ресурс]. – URL: (дата обращения: 12.11.2024). Уймин, А. Г. Цифровые двойники сетевых инфраструктур: точность, методы и практические решения / А. Г. Уймин // Радиотехнические и телекоммуникационные системы. – 2023. – № 3(51). – С. 44-52. – DOI 10.24412/2221-2574-2023-3-44-52. – EDN QUSITK.
