cgroups

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

Історія

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

Починаючи з версії 2.6.24 ядра Linux технологія включена в офіційні версії ядра[2]. З цього моменту розробка значно активізувалася, в механізм додано багато додаткових можливостей, механізм істотно використовується в технології ініціалізації systemd, а також є ключовим елементом у реалізації системи віртуалізації на рівні операційної системи LXC.

Можливості

Одна з цілей механізму cgroups — надати єдиний програмний інтерфейс до цілого спектру засобів управління процесами, починаючи з контролю одиничного процесу (таких як, наприклад, утиліта nice) аж до повної віртуалізації на рівні системи (як у OpenVZ, Linux-VServer, 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].

Виноски

  1. Jonathan Corbet (29 травня 2007). Process containers. LWN.net.
  2. Jonathan Corbet (29 жовтня 2007). Notes from a container. LWN.net.
  3. Jonathan Corbet (31 липня 2007). Controlling memory use in containers. LWN.
  4. Jonathan Corbet (23 жовтня 2007). Kernel space: Fair user scheduling for Linux. Network World. Архів оригіналу за 19 жовтня 2013. Процитовано 22 серпня 2012.
  5. Kamkamezawa Hiroyu (19 листопада 2008). Cgroup and Memory Resource Controller (PDF presentation slides). Japan Linux Symposium. Архів оригіналу за 22 липня 2011. Процитовано 8 червня 2014.
  6. Dave Hansen. Resource Management (PDF presentation slides). Linux Foundation. Архів оригіналу за 9 жовтня 2011. Процитовано 8 червня 2014.
  7. Matt Helsley (3 лютого 2009). LXC: Linux container tools. IBM developerWorks.
  8. Grid Engine cgroups Integration. Scalable Logic. 05-22-2012. Архів оригіналу за 26 січня 2013. Процитовано 8 червня 2014.
  9. cgroups. kernel.org. Архів оригіналу за 6 вересня 2012. Процитовано 8 червня 2014.

Посилання

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.