cgroups

Поделись знанием:
Перейти к: навигация, поиск

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





История

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

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

Возможности

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

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

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

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

Управление в cgroups возможно различными способами:

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

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

Напишите отзыв о статье "Cgroups"

Примечания

  1. Jonathan Corbet. [lwn.net/Articles/236038/ Process containers], LWN.net (29 мая 2007).
  2. 1 2 3 Jonathan Corbet. [lwn.net/Articles/256389/ Notes from a container], LWN.net (29 октября 2007).
  3. Jonathan Corbet. [lwn.net/Articles/243795/ Controlling memory use in containers], LWN (31 июля 2007).
  4. Jonathan Corbet. [www.networkworld.com/news/2007/101207-kernel.html Kernel space: Fair user scheduling for Linux], Network World (23 октября 2007). Проверено 22 августа 2012.
  5. Kamkamezawa Hiroyu (2008-11-19). "[www.linuxfoundation.jp/jp_uploads/seminar20081119/CgroupMemcgMaster.pdf Cgroup and Memory Resource Controller]" (PDF presentation slides)., Japan Linux Symposium. 
  6. 1 2 Dave Hansen. "[events.linuxfoundation.org/slides/lfcs09_hansen2.pdf Resource Management]" (PDF presentation slides)., Linux Foundation. 
  7. Matt Helsley. [www.ibm.com/developerworks/linux/library/l-lxc-containers/ LXC: Linux container tools], IBM developerWorks (3 февраля 2009).
  8. [blogs.scalablelogic.com/2012/05/grid-engine-cgroups-integration.html Grid Engine cgroups Integration]. Scalable Logic (05-22-2012). [www.webcitation.org/6DxHdkfZo Архивировано из первоисточника 26 января 2013].
  9. [www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt cgroups], kernel.org, <www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt> 

Ссылки

  • [www.kernel.org/doc/Documentation/cgroup-v1/ Linux kernel documentation on cgroups]

Отрывок, характеризующий Cgroups

– Il les fera marcher les lapins… [Он их проберет…] – со смехом сказал другой. Оба замолкли, вглядываясь в темноту на звук шагов Долохова и Пети, подходивших к костру с своими лошадьми.
– Bonjour, messieurs! [Здравствуйте, господа!] – громко, отчетливо выговорил Долохов.
Офицеры зашевелились в тени костра, и один, высокий офицер с длинной шеей, обойдя огонь, подошел к Долохову.
– C'est vous, Clement? – сказал он. – D'ou, diable… [Это вы, Клеман? Откуда, черт…] – но он не докончил, узнав свою ошибку, и, слегка нахмурившись, как с незнакомым, поздоровался с Долоховым, спрашивая его, чем он может служить. Долохов рассказал, что он с товарищем догонял свой полк, и спросил, обращаясь ко всем вообще, не знали ли офицеры чего нибудь о шестом полку. Никто ничего не знал; и Пете показалось, что офицеры враждебно и подозрительно стали осматривать его и Долохова. Несколько секунд все молчали.
– Si vous comptez sur la soupe du soir, vous venez trop tard, [Если вы рассчитываете на ужин, то вы опоздали.] – сказал с сдержанным смехом голос из за костра.
Долохов отвечал, что они сыты и что им надо в ночь же ехать дальше.
Он отдал лошадей солдату, мешавшему в котелке, и на корточках присел у костра рядом с офицером с длинной шеей. Офицер этот, не спуская глаз, смотрел на Долохова и переспросил его еще раз: какого он был полка? Долохов не отвечал, как будто не слыхал вопроса, и, закуривая коротенькую французскую трубку, которую он достал из кармана, спрашивал офицеров о том, в какой степени безопасна дорога от казаков впереди их.
– Les brigands sont partout, [Эти разбойники везде.] – отвечал офицер из за костра.
Долохов сказал, что казаки страшны только для таких отсталых, как он с товарищем, но что на большие отряды казаки, вероятно, не смеют нападать, прибавил он вопросительно. Никто ничего не ответил.
«Ну, теперь он уедет», – всякую минуту думал Петя, стоя перед костром и слушая его разговор.
Но Долохов начал опять прекратившийся разговор и прямо стал расспрашивать, сколько у них людей в батальоне, сколько батальонов, сколько пленных. Спрашивая про пленных русских, которые были при их отряде, Долохов сказал:
– La vilaine affaire de trainer ces cadavres apres soi. Vaudrait mieux fusiller cette canaille, [Скверное дело таскать за собой эти трупы. Лучше бы расстрелять эту сволочь.] – и громко засмеялся таким странным смехом, что Пете показалось, французы сейчас узнают обман, и он невольно отступил на шаг от костра. Никто не ответил на слова и смех Долохова, и французский офицер, которого не видно было (он лежал, укутавшись шинелью), приподнялся и прошептал что то товарищу. Долохов встал и кликнул солдата с лошадьми.
«Подадут или нет лошадей?» – думал Петя, невольно приближаясь к Долохову.
Лошадей подали.
– Bonjour, messieurs, [Здесь: прощайте, господа.] – сказал Долохов.
Петя хотел сказать bonsoir [добрый вечер] и не мог договорить слова. Офицеры что то шепотом говорили между собою. Долохов долго садился на лошадь, которая не стояла; потом шагом поехал из ворот. Петя ехал подле него, желая и не смея оглянуться, чтоб увидать, бегут или не бегут за ними французы.
Выехав на дорогу, Долохов поехал не назад в поле, а вдоль по деревне. В одном месте он остановился, прислушиваясь.
– Слышишь? – сказал он.
Петя узнал звуки русских голосов, увидал у костров темные фигуры русских пленных. Спустившись вниз к мосту, Петя с Долоховым проехали часового, который, ни слова не сказав, мрачно ходил по мосту, и выехали в лощину, где дожидались казаки.
– Ну, теперь прощай. Скажи Денисову, что на заре, по первому выстрелу, – сказал Долохов и хотел ехать, но Петя схватился за него рукою.
– Нет! – вскрикнул он, – вы такой герой. Ах, как хорошо! Как отлично! Как я вас люблю.
– Хорошо, хорошо, – сказал Долохов, но Петя не отпускал его, и в темноте Долохов рассмотрел, что Петя нагибался к нему. Он хотел поцеловаться. Долохов поцеловал его, засмеялся и, повернув лошадь, скрылся в темноте.

Х
Вернувшись к караулке, Петя застал Денисова в сенях. Денисов в волнении, беспокойстве и досаде на себя, что отпустил Петю, ожидал его.
– Слава богу! – крикнул он. – Ну, слава богу! – повторял он, слушая восторженный рассказ Пети. – И чег'т тебя возьми, из за тебя не спал! – проговорил Денисов. – Ну, слава богу, тепег'ь ложись спать. Еще вздг'емнем до утг'а.