Interested Article - Контрольная группа (Linux)

Унифицированная иерархия на основе контрольных групп и systemd

Контрольная группа ( англ. control group , cgroups , cgroup ) — группа процессов в Linux , для которой механизмами ядра наложена изоляция и установлены ограничения на некоторые (процессорные, сетевые, ресурсы памяти, ресурсы ввода-вывода). Механизм позволяет образовывать иерархические группы процессов с заданными ресурсными свойствами и обеспечивает программное управление ими.

История

Разработка была начата инженерами Google Полом Менэджем ( Paul Menage ) и Рохитом Сетом ( Rohit Seth ) в 2006 году и первоначально называлась «контейнеры процессов» ( англ. process containers ) . В 2007 году проект был переименован в сgroups (от англ. control groups ) по причине неоднозначности значения термина «контейнер» в ядре Linux.

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

Возможности

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

  • ограничение ресурсов ( англ. resource limiting ): использование памяти , в том числе виртуальной ;
  • приоритизацию: разным группам можно выделить разное количество процессорного ресурса и пропускной способности подсистемы ввода-вывода ;
  • учёт: подсчёт затрат тех либо иных ресурсов группой ;
  • изоляцию: разделение пространств имён для групп таким образом, что одной группе недоступны процессы, сетевые соединения и файлы другой ;
  • управление: приостановку ( freezing ) групп, создание контрольных точек ( checkpointing ) и их перезагрузку .

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

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

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

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

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

Примечания

  1. Сокращение справедливо для версии 1
  2. Сокращение справедливо для версии 2
  3. Jonathan Corbet (2007-05-29). . LWN.net. из оригинала 12 июня 2017 . Дата обращения: 29 декабря 2012 .
  4. Jonathan Corbet (2007-10-29). . LWN.net. из оригинала 22 июня 2012 . Дата обращения: 29 декабря 2012 .
  5. Jonathan Corbet (2007-07-31). . LWN. из оригинала 29 января 2018 . Дата обращения: 29 декабря 2012 .
  6. Jonathan Corbet (2007-10-23). . Network World. Архивировано из 19 октября 2013 . Дата обращения: 22 августа 2012 .
  7. Kamkamezawa Hiroyu (2008-11-19). (PDF) . Japan Linux Symposium. Архивировано из (PDF presentation slides) 22 июля 2011 . Дата обращения: 29 декабря 2012 . . Дата обращения: 29 декабря 2012. Архивировано 22 июля 2011 года.
  8. Dave Hansen. (PDF) . Linux Foundation. Архивировано из (PDF presentation slides) 9 октября 2011 . Дата обращения: 29 декабря 2012 .
  9. Matt Helsley (2009-02-03). . IBM developerWorks. из оригинала 29 октября 2012 . Дата обращения: 29 декабря 2012 .
  10. . Scalable Logic (22 мая 2012). Архивировано из 26 января 2013 года.

Ссылки

  • . kernel.org.
  • . kernel.org.
Источник —

Same as Контрольная группа (Linux)