~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ DB31C6037E1B49A174F9B0822FD56145__1716619200 ✰
Заголовок документа оригинал.:
✰ cgroups - Wikipedia ✰
Заголовок документа перевод.:
✰ cgroups — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Cgroups ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/db/45/db31c6037e1b49a174f9b0822fd56145.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/db/45/db31c6037e1b49a174f9b0822fd56145__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 07:40:52 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 25 May 2024, at 09:40 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

cgroups — Википедия Jump to content

группы

Из Википедии, бесплатной энциклопедии

группы
Оригинальный автор(ы) v1: Пол Менадж, Рохит Сет, контроллер памяти Бальбира Сингха, контроллер ЦП Шриватса Ваддагири
v2: Теджун Хо
Разработчики) Теджун Хео, Йоханнес Вайнер, Михал Хоко, Вайман Лонг, Роман Гущин, Крис Даун и др.
Начальная версия 2007 г .; 17 лет назад ( 2007 )
Написано в С
Операционная система Линукс
Тип Программное обеспечение
Лицензия Лицензия GPL и LGPL
Веб-сайт Cгруппа v1 , Cгруппа v2

cgroups (сокращенно от control groups ) — это функция ядра Linux , которая ограничивает, учитывает и изолирует использование ресурсов (ЦП, память, дисковый ввод-вывод и т. д.). [1] ) набора процессов .

Инженеры Google начали работу над этой функцией в 2006 году под названием «контейнеры процессов». [2] В конце 2007 года номенклатура была изменена на «группы управления», чтобы избежать путаницы, вызванной множеством значений термина « контейнер » в контексте ядра Linux, а функциональность групп управления была объединена с основной линией ядра Linux в версии ядра 2.6.24. который был выпущен в январе 2008 года. [3] С тех пор разработчики добавили множество новых функций и контроллеров, например, поддержку kernfs в 2014 году. [4] брандмауэр , [5] и единая иерархия. [6] cgroup v2 была объединена с ядром Linux 4.5. [7] со значительными изменениями интерфейса и внутреннего функционала. [8]

Версии [ править ]

Существует две версии cgroups.

Cgroups изначально была написана Полом Менажем и Рохитом Сетом и объединена с основным ядром Linux в 2007 году. Впоследствии она стала называться cgroups версии 1. [9]

Затем разработку и поддержку групп взял на себя Теджун Хео . Теджун Хо переработал и переписал контрольные группы. Эта переписанная версия теперь называется версией 2, документация по cgroup-v2 впервые появилась в ядре Linux 4.5, выпущенном 14 марта 2016 года. [7]

В отличие от версии 1, cgroup v2 имеет только одну иерархию процессов и различает процессы, а не потоки.

Особенности [ править ]

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

Ограничение ресурсов
группы могут быть настроены так, чтобы они не превышали настроенный предел памяти , который также включает в себя кэш файловой системы , [10] [11] Ограничение пропускной способности ввода-вывода, [12] ограничение квоты процессора, [13] Установленный лимит ЦП, [14] или максимальное количество открытых файлов . [15]
Расстановка приоритетов
некоторые группы могут получить большую долю использования процессора [16] или пропускная способность дискового ввода-вывода [17]
Бухгалтерский учет
измеряет использование ресурсов группой, что может использоваться, например, для целей выставления счетов [18]
Контроль
заморозка групп процессов, их контрольная точка и перезапуск [18]

Используйте [ править ]

В качестве примера косвенного использования: systemd предполагает монопольный доступ к функции cgroups.

Группа управления (сокращенно cgroup) — это совокупность процессов, связанных одними и теми же критериями и связанными с набором параметров или ограничений. Эти группы могут быть иерархическими, то есть каждая группа наследует ограничения своей родительской группы. Ядро обеспечивает доступ к множеству контроллеров (также называемых подсистемами) через интерфейс cgroup; [3] например, контроллер «памяти» ограничивает использование памяти, «cpuacct» учитывает использование ЦП и т. д.

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

  • Доступ к виртуальной файловой системе cgroup вручную.
  • Создавая группы и управляя ими на лету с помощью таких инструментов, как cgcreate, cgexec, и cgclassify (от libcgroup).
  • Через «демон механизма правил», который может автоматически перемещать процессы определенных пользователей, групп или команд в контрольные группы, как указано в его конфигурации.
  • Косвенно через другое программное обеспечение, использующее cgroups, такое как Docker , Firejail , LXC , [19] libvirt , systemd , Open Grid Scheduler/Grid Engine , [20] от Google и прекративший свое существование lmctfy .

Документация ядра Linux содержит некоторые технические подробности установки и использования групп управления версии 1. [21] и версия 2. [22] systemd-cgtop[23] Команда может использоваться для отображения верхних групп управления по использованию ими ресурсов.

Редизайн [ править ]

Редизайн групп начался в 2013 году. [24] с дополнительными изменениями, внесенными версиями ядра Linux 3.15 и 3.16. [25] [26] [27]

Изоляция пространства имен [ править ]

Хотя технически это не является частью работы cgroups, связанной особенностью ядра Linux является изоляция пространства имен , при которой группы процессов разделяются так, что они не могут «видеть» ресурсы в других группах. Например, пространство имен PID обеспечивает отдельное перечисление идентификаторов процессов в каждом пространстве имен. Также доступны пространства имен монтирования, пользователя, UTS, сети и SysV IPC.

  • Пространство имен PID обеспечивает изоляцию для выделения идентификаторов процессов (PID), списков процессов и их сведений. Хотя новое пространство имен изолировано от других родственных ему пространств, процессы в его «родительском» пространстве имен по-прежнему видят все процессы в дочерних пространствах имен, хотя и с другими номерами PID. [28]
  • Пространство сетевых имен изолирует контроллеры сетевых интерфейсов (физические или виртуальные), правила брандмауэра iptables , таблицы маршрутизации и т. д. Сетевые пространства имен можно соединить друг с другом с помощью виртуального Ethernet-устройства «veth». [29]
  • Пространство имен «UTS» позволяет изменить имя хоста .
  • монтирования Пространство имен позволяет создать другую структуру файловой системы или сделать определенные точки монтирования доступными только для чтения. [30]
  • Пространство имен IPC System V изолирует межпроцессное взаимодействие между пространствами имен.
  • Пространство имен пользователей изолирует идентификаторы пользователей между пространствами имен. [31]
  • Пространство имен Cgroup [32]

Пространства имен создаются с помощью команды «unshare» или системного вызова или как «новые» флаги в системном вызове «клонирования». [33]

Подсистема «ns» была добавлена ​​на ранних стадиях разработки cgroups для интеграции пространств имен и групп управления. Если контрольная группа «ns» была смонтирована, каждое пространство имен также создало бы новую группу в иерархии контрольных групп. Это был эксперимент, который позже был признан неподходящим для API cgroups и удален из ядра.

Пространства имен Linux были созданы на основе более общей функциональности пространств имен, широко используемой в Plan 9 от Bell Labs . [34]

Единая иерархия [ править ]

Kernfs был введен в ядро ​​Linux с версией 3.14 в марте 2014 года, основным автором является Теджун Хео. [35] Одним из основных мотиваторов создания отдельной kernfs является файловая система cgroups. Kernfs в основном создается путем выделения части логики sysfs в независимый объект, что упрощает для других подсистем ядра реализацию их собственной виртуальной файловой системы с обработкой подключения и отключения устройств, динамического создания и удаления и других атрибутов. Редизайн продолжился и в версии 3.15 ядра Linux. [36]

Группы управления памятью ядра (kmemcg) [ править ]

Группы управления памятью ядра ( kmemcg ) были объединены в версию 3.8 (18 февраля 2013 г.; 11 лет назад ( 18 февраля 2013 г. ) ) основной ветки ядра Linux . [37] [38] [39] Контроллер kmemcg может ограничивать объем памяти, которую ядро ​​может использовать для управления своими внутренними процессами.

осведомленность cgroup об убийце OOM [ править ]

В Linux Kernel 4.19 (октябрь 2018 г.) реализована осведомленность cgroup о реализации OOM killer , которая добавляет возможность уничтожать cgroup как единое целое и таким образом гарантировать целостность рабочей нагрузки. [40]

Принятие [ править ]

В качестве основы cgroups используют различные проекты, включая CoreOS , Docker (в 2013 году), Hadoop , Jelastic , Kubernetes , [41] lmctfy (позволь мне сохранить это для вас), LXC (контейнеры Linux), systemd , Mesos и Mesphere, [41] и HTCondor .

Его также приняли основные дистрибутивы Linux, такие как Red Hat Enterprise Linux (RHEL) 6.0, в ноябре 2010 года, за три года до принятия основным ядром Linux. [42]

29 октября 2019 года проект Fedora изменил Fedora 31 для использования CgroupsV2 по умолчанию. [43]

См. также [ править ]

Ссылки [ править ]

  1. ^ «Группа управления v2 — Документация по ядру Linux» . www.kernel.org . Проверено 24 июня 2023 г.
  2. ^ Джонатан Корбет (29 мая 2007 г.). «Технологические контейнеры» . LWN.net.
  3. ^ Перейти обратно: а б Джонатан Корбет (29 октября 2007 г.). «Записки из контейнера» . LWN.net . Проверено 14 апреля 2015 г. Исходное название «контейнеров» было сочтено слишком общим — этот код является важной частью контейнерного решения, но это далеко не все. Таким образом, контейнеры теперь переименованы в «группы управления» (или «cgroups») и объединены в версию 2.6.24.
  4. ^ «cgroup: преобразовать в kernfs» . Список рассылки ядра Linux . 28 января 2014 г.
  5. ^ «netfilter: x_tables: сопоставление облегченной группы управления процессами» . 23 апреля 2014 г. Архивировано из оригинала 24 апреля 2014 г.
  6. ^ «cgroup: подготовиться к использованию единой иерархии по умолчанию» . 13 марта 2014 г.
  7. ^ Перейти обратно: а б «Документация/cgroup-v2.txt, появившаяся в ядре Linux 4.5» . 14 марта 2016 г.
  8. ^ «cgroup v2: несколько иерархий» .
  9. ^ «разница между ядром Linux 4.4 и 4.5» . 14 марта 2016 г.
  10. ^ Джонатан Корбет (31 июля 2007 г.). «Контроль использования памяти в контейнерах» . ЛВН.
  11. ^ Бальбир Сингх, Вайдинатан Шринивасан (июль 2007 г.). «Контейнеры: проблемы с контроллером ресурсов памяти и его производительностью» (PDF) . Оттавский симпозиум по Linux.
  12. ^ Карвальо, Андре. «Использование cgroups для ограничения ввода-вывода» . andrestc.com . Проверено 12 сентября 2022 г.
  13. ^ Луу, Дэн. «Проблема регулирования контейнера» . danluu.com . Проверено 12 сентября 2022 г.
  14. ^ Дерр, Саймон (2004). «ЦПУСЕТЫ» . Проверено 12 сентября 2022 г.
  15. ^ «setrlimit(2) — Страницы руководства Arch» . man.archlinux.org . Проверено 27 ноября 2023 г.
  16. ^ Джонатан Корбет (23 октября 2007 г.). «Пространство ядра: справедливое планирование пользователей для Linux» . Сетевой мир. Архивировано из оригинала 19 октября 2013 года . Проверено 22 августа 2012 г.
  17. ^ Камкамедзава Хирою (19 ноября 2008 г.). Cgroup и контроллер ресурсов памяти (PDF) . Японский симпозиум по Linux. Архивировано из оригинала (слайды презентации в формате PDF) 22 июля 2011 года.
  18. ^ Перейти обратно: а б Дэйв Хансен. Управление ресурсами (слайды презентации в формате PDF) . Фонд Linux.
  19. ^ Мэтт Хелсли (3 февраля 2009 г.). «LXC: Контейнерные инструменты Linux» . IBM DeveloperWorks.
  20. ^ «Интеграция групп Grid Engine» . Масштабируемая логика. 22 мая 2012 г.
  21. ^ "cгруппы" . ядро.org.
  22. ^ «Торвальдс/Линукс» . Гитхаб . 13 февраля 2022 г.
  23. ^ «Системд-cgtop» .
  24. ^ «Все о ядре Linux: редизайн Cgroup» . Linux.com . 15 августа 2013 года. Архивировано из оригинала 28 апреля 2019 года . Проверено 19 мая 2014 г.
  25. ^ «Единая иерархия групп управления в версии 3.16» . LWN.net . 11 июня 2014 г.
  26. ^ «Получить обновления cgroup для 3.15 от Tejun Heo» . ядро.орг . 3 апреля 2014 г.
  27. ^ «Получить обновления cgroup для 3.16 от Tejun Heo» . ядро.орг . 9 июня 2014 г.
  28. ^ Павел Емельянов, Кир Колышкин (19 ноября 2007 г.). «Пространства имен PID в ядре 2.6.24» . LWN.net.
  29. ^ Джонатан Корбет (30 января 2007 г.). «Сетевые пространства имен» . LWN.net.
  30. ^ Серж Э. Халлин, Рам Пай (17 сентября 2007 г.). «Применение пространств имен монтирования» . IBM DeveloperWorks.
  31. ^ Майкл Керриск (27 февраля 2013 г.). «Пространства имен в работе, часть 5: Пользовательские пространства имен» . lwn.net Информация о Linux из источника.
  32. ^ «LKML: Линус Торвальдс: Linux 4.6-rc1» .
  33. ^ Джанак Десаи (11 января 2006 г.). «Документация ядра Linux по unshare» .
  34. ^ «Использование пространств имен в Plan 9» . 1992. Архивировано из оригинала 6 сентября 2014 года . Проверено 15 февраля 2015 г.
  35. ^ «kernfs, sysfs, driver-core: реализовать синхронное самоудаление» . LWN.net . 3 февраля 2014 года . Проверено 7 апреля 2014 г.
  36. ^ «Дерево исходного кода ядра Linux: kernel/git/torvalds/linux.git: cgroups: преобразовать в kernfs» . ядро.орг . 11 февраля 2014 года . Проверено 23 мая 2014 г.
  37. ^ «memcg: инфраструктура контроллера kmem» . kernel.org Исходный код . 18 декабря 2012 г.
  38. ^ «memcg: базовая инфраструктура учета kmem» . kernel.org Исходный код . 18 декабря 2012 г.
  39. ^ «memcg: добавить документацию о контроллере kmem» . ядро.орг . 18 декабря 2012 г.
  40. ^ «Linux_4.19 — новички в ядре Linux» .
  41. ^ Перейти обратно: а б «Мезосфера перенесет Google Kubernetes в Месос» . Мезосфера.io. 10 июля 2014 года. Архивировано из оригинала 6 сентября 2015 года . Проверено 13 июля 2014 г.
  42. ^ «Примечания к выпуску 6.0» (PDF) . redhat.com . Проверено 12 сентября 2023 г.
  43. ^ «1732114 – Измените Fedora 31, чтобы использовать CgroupsV2 по умолчанию» .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: DB31C6037E1B49A174F9B0822FD56145__1716619200
URL1:https://en.wikipedia.org/wiki/Cgroups
Заголовок, (Title) документа по адресу, URL1:
cgroups - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)