Linux ядро ​​- Чем подсистема ЦП (из CGROUPS) отличается от планировщика ЦП? - PullRequest
0 голосов
/ 03 февраля 2020

Linux код ядра здесь предоставляет, Планировщик ЦП , который имеет несколько алгоритмов планирования для планирования процессов (включая docker контейнерные процессы).


Контрольная группа - это конструкция ядра, которая позволяет ограничивать доступ и учет использования физических ресурсов хост-системы группой процессов.

Контрольные группы изначально были реализованы в Linux ядро ​​в 2007 году.

Эта реализация версии 1 была заменена реализацией версии 2 в Linux ядре 4.5. В версии 2 исправлены некоторые ограничения, связанные с реализацией версии 1.

Две из шести подсистем CGROUP в Linux ядре - это подсистема ЦП & подсистема ЦП .

подсистема ЦП контролирует доступ к ЦП системы через планировщик

подсистема ЦП выводит процесс, принадлежащий CGROUPS, для указания c ядер ЦП или узлов памяти.


Чем Планировщик ЦП отличается от Подсистема ЦП (из CGROUPS)? что-то делать с пространством имен по умолчанию против нескольких пространств имен ?

1 Ответ

2 голосов
/ 03 февраля 2020

Трудно дать «короткий ответ» без особого упрощения. Можно было бы написать книгу о «планировании ЦП», а другую - «Linux Контрольные группы».

Вместо «Чем отличается [планировщик ЦП от… Cgroups?», лучше задать вопрос: «Чем Linux Cgroups отличаются от Linux процессов?»

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/resource_management_guide/ch01

Как контрольные группы Организованные

Группы организованы иерархически, подобно процессам, и дочерние группы наследуют некоторые атрибуты своих родителей. Однако между этими двумя моделями есть различия.

Модель процессов Linux

Все процессы в системе Linux являются дочерними процессами общего родителя: процесс init, который выполняется ядром во время загрузки и запускает другие процессы (которые, в свою очередь, могут запускать собственные дочерние процессы). Поскольку все процессы происходят от одного родителя, модель процесса Linux представляет собой единую иерархию или дерево.

Кроме того, каждый Linux процесс, кроме init, наследует среду (например, переменную PATH) [1] и некоторые другие атрибуты (например, дескрипторы открытых файлов) своего родительского процесса.

Модель группы

Группы похожи на процессы в том, что:

  • они являются иерархическими, а
  • дочерние группы наследуют определенные атрибуты от своих родительская группа.

Принципиальное отличие состоит в том, что в системе может одновременно существовать множество различных иерархий групп. Если модель процесса Linux представляет собой одно дерево процессов, то модель cgroup представляет собой одно или несколько отдельных, несвязанных деревьев задач (т. Е. Процессов).

Необходимо несколько отдельных иерархий групп, поскольку каждая иерархия привязана к одной или нескольким подсистемам. Подсистема [2] представляет отдельный ресурс, такой как время процессора или память.

Возвращаясь к исходному вопросу:

  • Процессор Linux планировщик распределяет время между процессами.

  • Расширение планировщика группы CONFIG_CGROUP_SCHED позволяет группировать задачи и справедливо делит время ЦП между такими группами.

Смотрите здесь для получения дополнительной информации:

...