cgroups () — механізм ядра Linux, який обмежує і ізолює обчислювальні ресурси (процесорні, мережні, ресурси пам'яті, ресурси вводу-виводу) для груп процесів. Механізм дозволяє утворювати ієрархічні групи процесів із заданими ресурсними властивостями і забезпечує програмне керування ними.
Історія Розробка була розпочата інженерами Google Полом Менеджем (Paul Menage) і Рохітом Сетом (Rohit Seth) в 2006 році і спочатку називалася «контейнери процесів» (). У 2007 році проект був перейменований в cgroups (від ) з причини неоднозначності значення терміна «контейнер» в ядрі Linux.
Починаючи з версії 2.6.24 ядра Linux технологія включена в офіційні версії ядра. З цього моменту розробка значно активізувалася, в механізм додано багато додаткових можливостей, механізм істотно використовується в технології ініціалізації systemd, а також є ключовим елементом у реалізації системи віртуалізації на рівні операційної системи LXC.
Можливості Одна з цілей механізму cgroups — надати єдиний програмний інтерфейс до цілого спектра засобів управління процесами, починаючи з контролю одиничного процесу (таких як, наприклад, утиліта nice) аж до повної віртуалізації на рівні системи (як у OpenVZ, Linux-VServer, LXC).
Механізм надає такі можливості: обмеження ресурсів (): використання пам'яті, в тому числі віртуальної пріоритезацію: різним групам можна виділити різну кількість процесорного ресурсу та пропускної спроможності підсистеми вводу-виводу облік: підрахунок витрат тих чи інших ресурсів групою ізоляцію: поділ просторів імен для груп таким чином, що одній групі недоступні процеси, мережні з'єднання і файли іншої управління: призупинення () груп, створення контрольних точок () та їхнє перезавантаження
Використання Контрольна група (cgroup) — набір процесів, об'єднаних за деякими ознаками, угруповання може бути ієрархічним з успадкуванням обмежень і параметрів батьківського групи. Ядро Linux надає доступ до множини так званих контролерів (підсистем) через інтерфейс cgroup, наприклад, контролер «memory» обмежує використання оперативної пам'яті, контролер «cpuacct» враховує використання процесорного часу.
Керування в cgroups можливе різними способами: через доступ до віртуальної файлової системи cgroup (по типу /proc) безпосередньо; утилітами cgcreate, cgexec, cgclassify (з libcgroup); використовуючи демон механізму правил (), який автоматично переміщує процеси певних користувачів, груп або команд в cgroups згідно конфігурації; побічно через інші програмні засоби, що використовують cgroups, наприклад, через систему віртуалізації LXC, бібліотеку libvirt, технологію ініціалізації systemd, кластерне управляюче програмне забезпечення Grid Engine.
Опис установки і використання механізму включено в документацію ядра Linux .
Виноски
Посилання Linux kernel documentation on cgroups