Русская Википедия:Контрольная группа (Linux)

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:О

Файл:Linux kernel unified hierarchy cgroups and systemd.svg
Унифицированная иерархия на основе контрольных групп и systemd

Контрольная группа (Шаблон:Lang-en, Шаблон:Lang-en2[1], Шаблон:Lang-en2[2]) — группа процессов в Linux, для которой механизмами ядра наложена изоляция и установлены ограничения на некоторые вычислительные ресурсы (процессорные, сетевые, ресурсы памяти, ресурсы ввода-вывода). Механизм позволяет образовывать иерархические группы процессов с заданными ресурсными свойствами и обеспечивает программное управление ими.

История

Разработка была начата инженерами Google Полом Менэджем (Шаблон:Lang-en2) и Рохитом Сетом (Шаблон:Lang-en2) в 2006 году и первоначально называлась «контейнеры процессов» (Шаблон:Lang-en)[3]. В 2007 году проект был переименован в сgroups (от Шаблон:Lang-en) по причине неоднозначности значения термина «контейнер» в ядре Linux.

Начиная с версии 2.6.24 ядра Linux технология включена в официальные версии ядра[4]. С этого момента разработка значительно активизировалась, в механизм добавлено много дополнительных возможностей, механизм существенным образом используется в технологии инициализации systemd, а также является ключевым элементом в реализации системы виртуализации на уровне операционной системы LXC.

Возможности

Одна из целей механизма — предоставить единый программный интерфейс к целому спектру средств управления процессами, начиная с контроля единичного процесса (таких как, например, утилита nice) вплоть до полной виртуализации на уровне системы (как у OpenVZ, Шаблон:Iw, LXC). Механизм предоставляет следующие возможности:

  • ограничение ресурсов (Шаблон:Lang-en): использование памяти, в том числе виртуальной[5];
  • приоритизацию: разным группам можно выделить разное количество процессорного ресурса[6] и пропускной способности подсистемы ввода-вывода[7];
  • учёт: подсчёт затрат тех либо иных ресурсов группой[8];
  • изоляцию: разделение пространств имён для групп таким образом, что одной группе недоступны процессы, сетевые соединения и файлы другой[4];
  • управление: приостановку (Шаблон:Lang-en2) групп, создание контрольных точек (Шаблон:Lang-en2) и их перезагрузку[8].

Использование

Контрольная группа (Шаблон:Lang-en2) — набор процессов, объединённых по некоторым признакам, группировка может быть иерархической с наследованием ограничений и параметров родительской группы. Ядро Linux предоставляет доступ ко множеству так называемых контроллеров (подсистем) через интерфейс cgroup[4], например, контроллер «memory» ограничивает использование оперативной памяти, контроллер «cpuacct» учитывает использование процессорного времени.

Управление контрольными группами возможно различными способами:

  • через доступ к виртуальной файловой системе cgroup (по типу /proc) напрямую;
  • утилитами cgcreate, cgexec, cgclassify (из libcgroup);
  • используя демон механизма правил (Шаблон:Lang-en), который автоматически перемещает процессы определённых пользователей, групп или команд в cgroups согласно конфигурации;
  • косвенно через другие программные средства, использующие контрольные группы, например, через системы контейнеризации LXC[9] и Docker, библиотеку libvirt, технологию инициализации systemd, кластерное управляющее программное обеспечение Grid Engine[10].

Описание установки и использования механизма включено в документацию ядра Linux.

Примечания

Шаблон:Примечания

Ссылки