Основное

» Linux Docker 0.9 - краткое практическое руководство
Установка, настройка, запуск, основные моменты работы.

» Изучаем CGroups
Практический подход к изучению подсистемы ядра Linux

» db2dhcp - DHCP сервер на SQL СУБД
Сборка из исходников, настройка БД, запуск.

Последние записи

» Отличия синтаксиса C++ & Java и некоторые особенности Java
В рамках "заметок на полях" - краткий, очень поверхностный и слабо структурированный набор различий в...

» Восстановление старых разработок
Старые проекты по которым планируется восстановить работы

» Linux Docker 0.9 - краткое практическое руководство
Установка, настройка, запуск, основные моменты работы.

Изучаем CGroups

11 марта 2014

Совсем кратко о Linux Control Groups

Control Groups ("Контрольные группы") - механизм ядра Linux для объединения/разделения наборов задач (процессов/потоков) и их (потенциальных) потомков в иерархические группы со строго определённым поведением по отношению к использованию системных ресурсов. Более подробно с терминологией и механизмами cgroups, можно ознакомиться в официальной документации производителя.

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

В "классической ситуации" мы должны контролировать потребление ресурсов каждым процессом по отдельности. CGroups даёт нам возможность использовать централизованное управление ресурсами системы на основании разделения процессов по группам поддерживающим иерархии.

Говоря о "группе процессов" подразумевается, что ничего не мешает создать "группу" из одного процесса и ограничить его каким угодно образом в индивидуальном порядке, например поместив в неё сервис потребляющий все ресурсы процессора, или браузер, норовящий съесть всю память в системе.

С практической точки зрения это даёт следующие возможности:

  • Установка жёстких ограничений потребления памяти группами процессов, включая подсистемы ядра. Все потомки процесса автоматически помещаются в ту же группу что и их родитель.
  • Привязка группы процессов к наборам CPU, установку приоритетов доступа к ресурсу процессора, жёсткое лимитирование использования процессорного времени.
  • Ограничение скорости ввода/вывода для сети и блочных устройств.
  • "Заморозка процессов" - можно применить к особо буйным процессам "до выяснения".
  • Ограничение прямого доступа к устройствам.
  • Удобные и быстрые счётчики потребления ресурсов процессами в группах.

В связи с объёмностью, материал разбит на несколько частей, публикуемых по мере изучения и оформления статей.

В изложении я постарался сделать упор на последовательность в изучении и разбор "подводных камней" с которыми сталкиваются начинающие использовать cgroups.

Примечание: для возможностей нормальной работы с утилитами cgroup-bin пришлось пересобрать Debian пакет.

Содержание

  1. Вводная. Базовые практические примеры
Прочее

comments powered by Disqus