SlideShare a Scribd company logo
1 of 24
Download to read offline
Kirill Krinkin, March 2015 1
Linux Control Groups
(краткое введение)
Kirill Krinkin, March 2015 2
Темы
● Подсистемы Linux (немного истории)
● Иерархия ресурсов и контрольные группы
● Обзор контроллеров
● Примеры
Kirill Krinkin, March 2015 3
Подсистема и контрольная группа
● Подсистема (subsystem) – модуль
предоставляющий возможности для группировки и
управления (ограничение, подсчет использования,...)
определенными ресурсами процессов.
● Контрольная группа (Control Group, cgroup) –
множество параметров, ассоциированное с одной
или более подсистем.
Kirill Krinkin, March 2015 4
Иерархии ресурсов
Процесс:
- память
- процессор
- устройства
- ввод-вывод
- ...
Память(100%):
- процессы пользователей (30%)
- работники
- QA (5%)
- разработчики (15%)
- гости
- системные (10%)
- архиватор
- анализаторы логов
- службы (50%)
- почта (10%)
- продуктовая БД (40%)
Устройства:
- /dev/*
-- /dev/sda
– /dev/snd
CPUs 0-15:
- продуктовые сервисы 0-8
- пользователи: 9-12
- службы: 13-15
Процесс:
- память
- процессор
- устройства
- ввод-вывод
- ...
Процесс:
- память
- процессор
- устройства
- ввод-вывод
- ...
Kirill Krinkin, March 2015 5
Подсистемы = контроллеры
● blkio – управление вводом выводом блочных устройств
● cpu – управление доступом к процессору
● cpuacc – отчеты по использованию процессора
● cpuset – приязка к процессорам и банкам памяти
● devices – доступ к устройствам
● freezer – останов/возобновление работы группы
● memory – ограничения и учет использования памяти
● net_cls – маркировка пакетов для контроллера трафика
Kirill Krinkin, March 2015 6
Файлы cgroup
● /proc/cgroups
● /proc/self/cgroup – группы процесса
● /sys/fs/cgroup/ (/cgroup) – корень иерархии
● */tasks – PIDs участников группы
● */cgroup.procs – список thread groups
● */notify_on_release – флаг вызова агента
разрушения (по-умолчанию 0)
● */release_agent – путь к агенту разрушения
Kirill Krinkin, March 2015 7
Подсистемы и точки
монтирования
Kirill Krinkin, March 2015 8
cgcreate: cоздание группы
● cgcreate
-t uid:gid – пользователи получающие права на
перемещение заданий в(из) группу
-a uid:gid – пользователи получающие права на
управление параметрами группы
-g список подсистем (контроллеров):путь
● Пример
cgcreate -t kkv:kkv -g memory,cpu:/mycgroup
Kirill Krinkin, March 2015 9
cgdelete: удаление группы
● cgdelete
-g список подсистем (контроллеров):путь
● Пример
cgdelete -g memory,cpu:/mycgroup
(*) при удалении группы, входящие в нее задачи
перемещаются в родительскую группу
Kirill Krinkin, March 2015 10
Перемещение процессов в группу
● cgclassify
-g список подсистем (контроллеров):путь
PID [PID PID …]
Примеры:
$cgclassify -g cpu:/mycgroup 6433 3662
$echo 6433 >/sys/fs/cgroup/cpu/mucgroup/tasks
Kirill Krinkin, March 2015 11
Выполнение процесса в группе
● cgexec
-g список подсистем (контроллеров):путь
имя_приложения
● Пример
cgexec -g memory:/mycgroup google-chrome
Kirill Krinkin, March 2015 12
Группы процесса
Kirill Krinkin, March 2015 13
cgget – доступ к параметрам
● cgget
-r параметр группа
Пример:
$cgget -r cpu.shares /mycgroup
>/mycgroup:
>cpu.shares: 1024
cat /sys/fs/cgroup/cpu/mycgroup/cpu.shares
>1024
Kirill Krinkin, March 2015 14
cgset – установка параметров
● cgset
-r параметр=значение
Пример:
$cgset -r cpu.shares=8 /mycgroup
$echo 9 >/sys/fs/cgroup/cpu/mycgroup/cpu.shares
Kirill Krinkin, March 2015 15
Контроллер cpuset
● Назначение: управление привязкой процессоров и
памяти к процессам
● ←/→ cpuset. cpus – список привязанных процессоров
● ←/→ cpuset. mems – список привязанных процессоров
● ←/→ cpuset. cpu_exclusive – флаг эксклюзивного
использования процессора группой
● ←/→ cpuset.sched_load_balance +
cpuset.sched_relax_domain_level – управление
балансировкой нагрузки в группе
try: cat /proc/self/status
Kirill Krinkin, March 2015 16
cpuset.sched_relax_domain_level
● -1 – не менять внешние правила
● 0 – периодическая балансировка
● 1 – немедленная между потоками одного ядра
● 2 – немедленная между ядрами пакета
● 3 – немедленная в рамках узла
● 4 – немедленная между процессорами на NUMA
системе
● 5 – немедленная по всей системе
try: cat /proc/self/status
Kirill Krinkin, March 2015 17
Контроллер cpu
● Назначение: управление распределеним
нагрузки на процессоры
cpu.shares – доля использования процессора по
отношению к другим группам
cpu.rt_runtime_us – максимальноый период
монопольного использования процессора в
микросекундах
cpu.rt_period_us – максимальное время
ожидания процессора группой
Kirill Krinkin, March 2015 18
Контроллер cpuacct
● Назначение: сбор статистики по
использованию процессора
cpuacct.stat – число циклов процессора
cpuacct.usage – суммарное время
cpuacct.usage_percpu – число циклов
процессора, включая задания подгрупп
Kirill Krinkin, March 2015 19
Контроллер devices
● Назначение: управление доступом к устройствам
из группы
→devices.allow – устройства доступные группе
→devices.deny – запрещенные устройства в группе
←devices.list – просмотр устройств в whitelist
Примеры:
echo 'c 1:3 mr' > /sys/fs/cgroup/1/devices.allow
echo a > /sys/fs/cgroup/1/devices.deny
echo a > /sys/fs/cgroup/1/devices.allow
https://www.kernel.org/doc/Documentation/devices.txt
Kirill Krinkin, March 2015 20
Контроллер freezer
● Назначение: заморозка/разморозка исполнения
группы процессов
←/→freezer.state – состояние заморозки
● FROZEN — задания приостановлены
● FREEZING – в стадии приостановки (включая группы-потомки)
● THAWED – возобновление работы
● ←freezer.self_freezing собственное состояние
заморозки
● ←freezer.parent_freezing родительское состояние
состояние заморозки
Kirill Krinkin, March 2015 21
Контроллер memory
● Назначение: управление и мониторинг использования памяти
←memory.stat – получение статистики по использованию памяти
– total_ – текущая группа и подгруппы
←memory.[memsw.]usage_in_bytes – используемая память в байтах
(в подкачке)
←/→memory.[memsw.]limit_in_bytes
←memory.[memsw.].failcnt – счетчик числа достижений лимита
памяти
←/→memory.oom_control — флаг разрешения OOM-killer
(*) ←/→memory.soft_limit_in_bytes — флаг разрешения OOM-killer
см https://www.kernel.org/doc/Documentation/cgroups/memory.txt
Kirill Krinkin, March 2015 22
Контроллер blkio
● → blkio.weight – [100-1000], относительный вес ввода вывода в
группе
● → blkio.weight – [100-1000], относительный вес ввода вывода в
группе для конкретного устройства
● ← blkio.time – время доступа ввода-вывода в группе
● ← blkio.sectors – количество перемещенных между устройствами
секторов в группе
● ← blkio.io_service_bytes – количество перемещенных между
устройствами байт в группе
● ← blkio.io_service_time – время между выдачей запроса и его
завершением
● ← blkio.io_queued – число запросов в очереди ввода вывода группы
Kirill Krinkin, March 2015 23
Для чтения
● RHEL System resources management guide
● https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt
● https://www.kernel.org/doc/Documentation/cgroups/memory.txt
Kirill Krinkin, March 2015 24
Примеры для изучения
● Элементы:
– создание группы
– перемещение и запуск процесса
– изменение параметров группы
● cpuset
– привязка cpu
● memory
– установка лимита памяти и oom-killer
● cpu
– разделение веса использования процессора между группами
● freezer
– заморозка/разморозка группы

More Related Content

What's hot

Docker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоватьсяDocker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоватьсяСергей Ладыгин
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandexaviatakz
 
Docker с чем едят и для чего используют
Docker с чем едят и для чего используютDocker с чем едят и для чего используют
Docker с чем едят и для чего используютITCrowd Almaty
 
Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?Ruslan Sharipov
 
Непрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в ЯндексеНепрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в ЯндексеAndrey Kazarinov
 
Docker - быстро, просто, наглядно
Docker - быстро, просто, наглядноDocker - быстро, просто, наглядно
Docker - быстро, просто, наглядноFallenKain
 
RHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и DockerRHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и DockerAndrey Markelov
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupBadoo Development
 
Многопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиМногопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиDotNetConf
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET CoreDotNetConf
 
Депрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасДепрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасRuslan Sharipov
 
My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25Alex Chistyakov
 
Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революцияGetDev.NET
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»WrikeTechClub
 
Teach your dockers to use CRanes
Teach your dockers to use CRanesTeach your dockers to use CRanes
Teach your dockers to use CRanesPavel Emelyanov
 
Ci на базе docker
Ci на базе dockerCi на базе docker
Ci на базе dockerIvan Grishaev
 
Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков" Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков" Fwdays
 
Инфраструктура распределенных приложений на Node.js
Инфраструктура распределенных приложений на Node.jsИнфраструктура распределенных приложений на Node.js
Инфраструктура распределенных приложений на Node.jsStanislav Gumeniuk
 

What's hot (20)

Docker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоватьсяDocker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоваться
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
 
Docker for JS people
Docker for JS peopleDocker for JS people
Docker for JS people
 
Docker с чем едят и для чего используют
Docker с чем едят и для чего используютDocker с чем едят и для чего используют
Docker с чем едят и для чего используют
 
Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?
 
Непрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в ЯндексеНепрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в Яндексе
 
Docker - быстро, просто, наглядно
Docker - быстро, просто, наглядноDocker - быстро, просто, наглядно
Docker - быстро, просто, наглядно
 
RHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и DockerRHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и Docker
 
Docker. Основы
Docker. ОсновыDocker. Основы
Docker. Основы
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
 
Многопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиМногопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметки
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET Core
 
Депрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасДепрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчас
 
My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25
 
Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революция
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
 
Teach your dockers to use CRanes
Teach your dockers to use CRanesTeach your dockers to use CRanes
Teach your dockers to use CRanes
 
Ci на базе docker
Ci на базе dockerCi на базе docker
Ci на базе docker
 
Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков" Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков"
 
Инфраструктура распределенных приложений на Node.js
Инфраструктура распределенных приложений на Node.jsИнфраструктура распределенных приложений на Node.js
Инфраструктура распределенных приложений на Node.js
 

Viewers also liked

Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxConAnatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxConJérôme Petazzoni
 
[MDBCI] Mariadb continuous integration tool
[MDBCI] Mariadb continuous integration tool[MDBCI] Mariadb continuous integration tool
[MDBCI] Mariadb continuous integration toolOSLL
 
Обзор файловой системы GlusterFS
Обзор файловой системы GlusterFSОбзор файловой системы GlusterFS
Обзор файловой системы GlusterFSOSLL
 
MOOCs Virtual Lab in Modern Education
MOOCs Virtual Lab in Modern EducationMOOCs Virtual Lab in Modern Education
MOOCs Virtual Lab in Modern EducationOSLL
 
OLPC Mesh networking improvements
OLPC Mesh networking improvementsOLPC Mesh networking improvements
OLPC Mesh networking improvementsOSLL
 
N8xx olpc connectivity
N8xx olpc connectivityN8xx olpc connectivity
N8xx olpc connectivityOSLL
 
Обзор Btrfs
Обзор BtrfsОбзор Btrfs
Обзор BtrfsOSLL
 
Implementation of the new REST API for Open Source LBS-platform Geo2Tag
Implementation of the new REST API for Open Source LBS-platform Geo2TagImplementation of the new REST API for Open Source LBS-platform Geo2Tag
Implementation of the new REST API for Open Source LBS-platform Geo2TagOSLL
 
SVG-player plugin for ns2 simulations
SVG-player plugin for ns2 simulationsSVG-player plugin for ns2 simulations
SVG-player plugin for ns2 simulationsOSLL
 
E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...
E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...
E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...OSLL
 
Fruct4 n8xx olpc-connectivity
Fruct4 n8xx olpc-connectivityFruct4 n8xx olpc-connectivity
Fruct4 n8xx olpc-connectivityOSLL
 
Обзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы CephОбзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы CephOSLL
 
Работа с геоданными в MongoDb
Работа с геоданными в MongoDbРабота с геоданными в MongoDb
Работа с геоданными в MongoDbOSLL
 
Open Source implementation of ZigBee
Open Source implementation of ZigBeeOpen Source implementation of ZigBee
Open Source implementation of ZigBeeOSLL
 
Virtual-HSM: Virtualization of Hardware Security Modules in Linux Containers
Virtual-HSM: Virtualization of Hardware Security Modules in Linux ContainersVirtual-HSM: Virtualization of Hardware Security Modules in Linux Containers
Virtual-HSM: Virtualization of Hardware Security Modules in Linux ContainersOSLL
 
Understanding and building Your Own Docker
Understanding and building Your Own DockerUnderstanding and building Your Own Docker
Understanding and building Your Own DockerMotiejus Jakštys
 
Docker 原理與實作
Docker 原理與實作Docker 原理與實作
Docker 原理與實作kao kuo-tung
 
Geo2tag LBS platform training at FRUCT12
Geo2tag LBS platform training at FRUCT12Geo2tag LBS platform training at FRUCT12
Geo2tag LBS platform training at FRUCT12OSLL
 
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015OSLL
 
Студентам и не только. Как выступить с докладом по своей научной работе
Студентам и не только. Как выступить с докладом по своей научной работеСтудентам и не только. Как выступить с докладом по своей научной работе
Студентам и не только. Как выступить с докладом по своей научной работеOSLL
 

Viewers also liked (20)

Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxConAnatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
 
[MDBCI] Mariadb continuous integration tool
[MDBCI] Mariadb continuous integration tool[MDBCI] Mariadb continuous integration tool
[MDBCI] Mariadb continuous integration tool
 
Обзор файловой системы GlusterFS
Обзор файловой системы GlusterFSОбзор файловой системы GlusterFS
Обзор файловой системы GlusterFS
 
MOOCs Virtual Lab in Modern Education
MOOCs Virtual Lab in Modern EducationMOOCs Virtual Lab in Modern Education
MOOCs Virtual Lab in Modern Education
 
OLPC Mesh networking improvements
OLPC Mesh networking improvementsOLPC Mesh networking improvements
OLPC Mesh networking improvements
 
N8xx olpc connectivity
N8xx olpc connectivityN8xx olpc connectivity
N8xx olpc connectivity
 
Обзор Btrfs
Обзор BtrfsОбзор Btrfs
Обзор Btrfs
 
Implementation of the new REST API for Open Source LBS-platform Geo2Tag
Implementation of the new REST API for Open Source LBS-platform Geo2TagImplementation of the new REST API for Open Source LBS-platform Geo2Tag
Implementation of the new REST API for Open Source LBS-platform Geo2Tag
 
SVG-player plugin for ns2 simulations
SVG-player plugin for ns2 simulationsSVG-player plugin for ns2 simulations
SVG-player plugin for ns2 simulations
 
E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...
E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...
E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...
 
Fruct4 n8xx olpc-connectivity
Fruct4 n8xx olpc-connectivityFruct4 n8xx olpc-connectivity
Fruct4 n8xx olpc-connectivity
 
Обзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы CephОбзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы Ceph
 
Работа с геоданными в MongoDb
Работа с геоданными в MongoDbРабота с геоданными в MongoDb
Работа с геоданными в MongoDb
 
Open Source implementation of ZigBee
Open Source implementation of ZigBeeOpen Source implementation of ZigBee
Open Source implementation of ZigBee
 
Virtual-HSM: Virtualization of Hardware Security Modules in Linux Containers
Virtual-HSM: Virtualization of Hardware Security Modules in Linux ContainersVirtual-HSM: Virtualization of Hardware Security Modules in Linux Containers
Virtual-HSM: Virtualization of Hardware Security Modules in Linux Containers
 
Understanding and building Your Own Docker
Understanding and building Your Own DockerUnderstanding and building Your Own Docker
Understanding and building Your Own Docker
 
Docker 原理與實作
Docker 原理與實作Docker 原理與實作
Docker 原理與實作
 
Geo2tag LBS platform training at FRUCT12
Geo2tag LBS platform training at FRUCT12Geo2tag LBS platform training at FRUCT12
Geo2tag LBS platform training at FRUCT12
 
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015
 
Студентам и не только. Как выступить с докладом по своей научной работе
Студентам и не только. Как выступить с докладом по своей научной работеСтудентам и не только. Как выступить с докладом по своей научной работе
Студентам и не только. Как выступить с докладом по своей научной работе
 

Similar to Обзор Linux Control Groups

Cgroup и их использование в бк
Cgroup и их использование в бкCgroup и их использование в бк
Cgroup и их использование в бкYandex
 
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Dev_Party
 
MIPT Course - DAC and MAC
MIPT Course - DAC and MACMIPT Course - DAC and MAC
MIPT Course - DAC and MACAlexey Vasyukov
 
5.1. Flashback [hacking AD]
5.1. Flashback [hacking AD]5.1. Flashback [hacking AD]
5.1. Flashback [hacking AD]defconmoscow
 
Применение фреймворка GStreamer в системе видеонаблюдения
Применение фреймворка GStreamer в системе видеонаблюденияПрименение фреймворка GStreamer в системе видеонаблюдения
Применение фреймворка GStreamer в системе видеонаблюденияcorehard_by
 
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON
 
Александр Баяндин
Александр БаяндинАлександр Баяндин
Александр БаяндинCodeFest
 
Консервация процессов в домашних условиях
Консервация процессов в домашних условияхКонсервация процессов в домашних условиях
Консервация процессов в домашних условияхOpenVZ
 
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхПромышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхNikolay Samokhvalov
 
Симаков Алексей - Системы управления кластерами
 Симаков Алексей - Системы управления кластерами   Симаков Алексей - Системы управления кластерами
Симаков Алексей - Системы управления кластерами Yandex
 
Организация процесса регулярной обработки больших объемов данных
Организация процесса регулярной обработки больших объемов данныхОрганизация процесса регулярной обработки больших объемов данных
Организация процесса регулярной обработки больших объемов данныхCodeFest
 
Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Alexey Lesovsky
 
Организация защищенного доступа к данным
Организация защищенного доступа к даннымОрганизация защищенного доступа к данным
Организация защищенного доступа к даннымIvan Ignatyev
 
Role based access-control
Role based access-controlRole based access-control
Role based access-controlAlex Frolov
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...DrupalCamp MSK
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к AnsibleIvan Grishaev
 

Similar to Обзор Linux Control Groups (20)

Cgroup и их использование в бк
Cgroup и их использование в бкCgroup и их использование в бк
Cgroup и их использование в бк
 
Git for you
Git for youGit for you
Git for you
 
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
 
MIPT Course - DAC and MAC
MIPT Course - DAC and MACMIPT Course - DAC and MAC
MIPT Course - DAC and MAC
 
5.1. Flashback [hacking AD]
5.1. Flashback [hacking AD]5.1. Flashback [hacking AD]
5.1. Flashback [hacking AD]
 
Применение фреймворка GStreamer в системе видеонаблюдения
Применение фреймворка GStreamer в системе видеонаблюденияПрименение фреймворка GStreamer в системе видеонаблюдения
Применение фреймворка GStreamer в системе видеонаблюдения
 
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
 
Александр Баяндин
Александр БаяндинАлександр Баяндин
Александр Баяндин
 
Git presentation
Git presentationGit presentation
Git presentation
 
Консервация процессов в домашних условиях
Консервация процессов в домашних условияхКонсервация процессов в домашних условиях
Консервация процессов в домашних условиях
 
M18 backups
M18 backupsM18 backups
M18 backups
 
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхПромышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
 
Симаков Алексей - Системы управления кластерами
 Симаков Алексей - Системы управления кластерами   Симаков Алексей - Системы управления кластерами
Симаков Алексей - Системы управления кластерами
 
Организация процесса регулярной обработки больших объемов данных
Организация процесса регулярной обработки больших объемов данныхОрганизация процесса регулярной обработки больших объемов данных
Организация процесса регулярной обработки больших объемов данных
 
Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)
 
Linux Kernel Processes
Linux Kernel ProcessesLinux Kernel Processes
Linux Kernel Processes
 
Организация защищенного доступа к данным
Организация защищенного доступа к даннымОрганизация защищенного доступа к данным
Организация защищенного доступа к данным
 
Role based access-control
Role based access-controlRole based access-control
Role based access-control
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 

More from OSLL

SLAM Constructor Framework for ROS
SLAM Constructor Framework for ROSSLAM Constructor Framework for ROS
SLAM Constructor Framework for ROSOSLL
 
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...Full Automated Continuous Integration and Testing Infrastructure for Maxscale...
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...OSLL
 
Microservice architecture for Geo2Tag
Microservice architecture for Geo2TagMicroservice architecture for Geo2Tag
Microservice architecture for Geo2TagOSLL
 
Block-level compression in Linux. Pro et contra
Block-level compression in Linux. Pro et contraBlock-level compression in Linux. Pro et contra
Block-level compression in Linux. Pro et contraOSLL
 
Raspberry Pi robot with ROS
Raspberry Pi robot with ROSRaspberry Pi robot with ROS
Raspberry Pi robot with ROSOSLL
 
Source code analyzer
Source code analyzer Source code analyzer
Source code analyzer OSLL
 
Fruct14 sholokhova
Fruct14 sholokhovaFruct14 sholokhova
Fruct14 sholokhovaOSLL
 
SECR'13 Lightweight linux shared libraries profiling
SECR'13 Lightweight linux shared libraries profilingSECR'13 Lightweight linux shared libraries profiling
SECR'13 Lightweight linux shared libraries profilingOSLL
 
Smart-M3 and Geo2Tag integration
Smart-M3 and Geo2Tag integrationSmart-M3 and Geo2Tag integration
Smart-M3 and Geo2Tag integrationOSLL
 
HTML5 Intro and Tizen Web API
HTML5 Intro and Tizen Web APIHTML5 Intro and Tizen Web API
HTML5 Intro and Tizen Web APIOSLL
 
Fruct13 geo2tag-training
Fruct13 geo2tag-trainingFruct13 geo2tag-training
Fruct13 geo2tag-trainingOSLL
 
Json protocol, Geo2tag REST API fundamentals
Json protocol, Geo2tag REST API fundamentalsJson protocol, Geo2tag REST API fundamentals
Json protocol, Geo2tag REST API fundamentalsOSLL
 
Introduction to geo-tagging and geo2tag platform
Introduction to geo-tagging and geo2tag platformIntroduction to geo-tagging and geo2tag platform
Introduction to geo-tagging and geo2tag platformOSLL
 
Detection pulse by video
Detection pulse by video Detection pulse by video
Detection pulse by video OSLL
 
Using Intel NAS-PT for testing NAS disks
Using Intel NAS-PT for testing NAS disksUsing Intel NAS-PT for testing NAS disks
Using Intel NAS-PT for testing NAS disksOSLL
 
Geo2Tag LBS Platform Architecture Overview
Geo2Tag LBS Platform Architecture OverviewGeo2Tag LBS Platform Architecture Overview
Geo2Tag LBS Platform Architecture OverviewOSLL
 

More from OSLL (16)

SLAM Constructor Framework for ROS
SLAM Constructor Framework for ROSSLAM Constructor Framework for ROS
SLAM Constructor Framework for ROS
 
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...Full Automated Continuous Integration and Testing Infrastructure for Maxscale...
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...
 
Microservice architecture for Geo2Tag
Microservice architecture for Geo2TagMicroservice architecture for Geo2Tag
Microservice architecture for Geo2Tag
 
Block-level compression in Linux. Pro et contra
Block-level compression in Linux. Pro et contraBlock-level compression in Linux. Pro et contra
Block-level compression in Linux. Pro et contra
 
Raspberry Pi robot with ROS
Raspberry Pi robot with ROSRaspberry Pi robot with ROS
Raspberry Pi robot with ROS
 
Source code analyzer
Source code analyzer Source code analyzer
Source code analyzer
 
Fruct14 sholokhova
Fruct14 sholokhovaFruct14 sholokhova
Fruct14 sholokhova
 
SECR'13 Lightweight linux shared libraries profiling
SECR'13 Lightweight linux shared libraries profilingSECR'13 Lightweight linux shared libraries profiling
SECR'13 Lightweight linux shared libraries profiling
 
Smart-M3 and Geo2Tag integration
Smart-M3 and Geo2Tag integrationSmart-M3 and Geo2Tag integration
Smart-M3 and Geo2Tag integration
 
HTML5 Intro and Tizen Web API
HTML5 Intro and Tizen Web APIHTML5 Intro and Tizen Web API
HTML5 Intro and Tizen Web API
 
Fruct13 geo2tag-training
Fruct13 geo2tag-trainingFruct13 geo2tag-training
Fruct13 geo2tag-training
 
Json protocol, Geo2tag REST API fundamentals
Json protocol, Geo2tag REST API fundamentalsJson protocol, Geo2tag REST API fundamentals
Json protocol, Geo2tag REST API fundamentals
 
Introduction to geo-tagging and geo2tag platform
Introduction to geo-tagging and geo2tag platformIntroduction to geo-tagging and geo2tag platform
Introduction to geo-tagging and geo2tag platform
 
Detection pulse by video
Detection pulse by video Detection pulse by video
Detection pulse by video
 
Using Intel NAS-PT for testing NAS disks
Using Intel NAS-PT for testing NAS disksUsing Intel NAS-PT for testing NAS disks
Using Intel NAS-PT for testing NAS disks
 
Geo2Tag LBS Platform Architecture Overview
Geo2Tag LBS Platform Architecture OverviewGeo2Tag LBS Platform Architecture Overview
Geo2Tag LBS Platform Architecture Overview
 

Обзор Linux Control Groups

  • 1. Kirill Krinkin, March 2015 1 Linux Control Groups (краткое введение)
  • 2. Kirill Krinkin, March 2015 2 Темы ● Подсистемы Linux (немного истории) ● Иерархия ресурсов и контрольные группы ● Обзор контроллеров ● Примеры
  • 3. Kirill Krinkin, March 2015 3 Подсистема и контрольная группа ● Подсистема (subsystem) – модуль предоставляющий возможности для группировки и управления (ограничение, подсчет использования,...) определенными ресурсами процессов. ● Контрольная группа (Control Group, cgroup) – множество параметров, ассоциированное с одной или более подсистем.
  • 4. Kirill Krinkin, March 2015 4 Иерархии ресурсов Процесс: - память - процессор - устройства - ввод-вывод - ... Память(100%): - процессы пользователей (30%) - работники - QA (5%) - разработчики (15%) - гости - системные (10%) - архиватор - анализаторы логов - службы (50%) - почта (10%) - продуктовая БД (40%) Устройства: - /dev/* -- /dev/sda – /dev/snd CPUs 0-15: - продуктовые сервисы 0-8 - пользователи: 9-12 - службы: 13-15 Процесс: - память - процессор - устройства - ввод-вывод - ... Процесс: - память - процессор - устройства - ввод-вывод - ...
  • 5. Kirill Krinkin, March 2015 5 Подсистемы = контроллеры ● blkio – управление вводом выводом блочных устройств ● cpu – управление доступом к процессору ● cpuacc – отчеты по использованию процессора ● cpuset – приязка к процессорам и банкам памяти ● devices – доступ к устройствам ● freezer – останов/возобновление работы группы ● memory – ограничения и учет использования памяти ● net_cls – маркировка пакетов для контроллера трафика
  • 6. Kirill Krinkin, March 2015 6 Файлы cgroup ● /proc/cgroups ● /proc/self/cgroup – группы процесса ● /sys/fs/cgroup/ (/cgroup) – корень иерархии ● */tasks – PIDs участников группы ● */cgroup.procs – список thread groups ● */notify_on_release – флаг вызова агента разрушения (по-умолчанию 0) ● */release_agent – путь к агенту разрушения
  • 7. Kirill Krinkin, March 2015 7 Подсистемы и точки монтирования
  • 8. Kirill Krinkin, March 2015 8 cgcreate: cоздание группы ● cgcreate -t uid:gid – пользователи получающие права на перемещение заданий в(из) группу -a uid:gid – пользователи получающие права на управление параметрами группы -g список подсистем (контроллеров):путь ● Пример cgcreate -t kkv:kkv -g memory,cpu:/mycgroup
  • 9. Kirill Krinkin, March 2015 9 cgdelete: удаление группы ● cgdelete -g список подсистем (контроллеров):путь ● Пример cgdelete -g memory,cpu:/mycgroup (*) при удалении группы, входящие в нее задачи перемещаются в родительскую группу
  • 10. Kirill Krinkin, March 2015 10 Перемещение процессов в группу ● cgclassify -g список подсистем (контроллеров):путь PID [PID PID …] Примеры: $cgclassify -g cpu:/mycgroup 6433 3662 $echo 6433 >/sys/fs/cgroup/cpu/mucgroup/tasks
  • 11. Kirill Krinkin, March 2015 11 Выполнение процесса в группе ● cgexec -g список подсистем (контроллеров):путь имя_приложения ● Пример cgexec -g memory:/mycgroup google-chrome
  • 12. Kirill Krinkin, March 2015 12 Группы процесса
  • 13. Kirill Krinkin, March 2015 13 cgget – доступ к параметрам ● cgget -r параметр группа Пример: $cgget -r cpu.shares /mycgroup >/mycgroup: >cpu.shares: 1024 cat /sys/fs/cgroup/cpu/mycgroup/cpu.shares >1024
  • 14. Kirill Krinkin, March 2015 14 cgset – установка параметров ● cgset -r параметр=значение Пример: $cgset -r cpu.shares=8 /mycgroup $echo 9 >/sys/fs/cgroup/cpu/mycgroup/cpu.shares
  • 15. Kirill Krinkin, March 2015 15 Контроллер cpuset ● Назначение: управление привязкой процессоров и памяти к процессам ● ←/→ cpuset. cpus – список привязанных процессоров ● ←/→ cpuset. mems – список привязанных процессоров ● ←/→ cpuset. cpu_exclusive – флаг эксклюзивного использования процессора группой ● ←/→ cpuset.sched_load_balance + cpuset.sched_relax_domain_level – управление балансировкой нагрузки в группе try: cat /proc/self/status
  • 16. Kirill Krinkin, March 2015 16 cpuset.sched_relax_domain_level ● -1 – не менять внешние правила ● 0 – периодическая балансировка ● 1 – немедленная между потоками одного ядра ● 2 – немедленная между ядрами пакета ● 3 – немедленная в рамках узла ● 4 – немедленная между процессорами на NUMA системе ● 5 – немедленная по всей системе try: cat /proc/self/status
  • 17. Kirill Krinkin, March 2015 17 Контроллер cpu ● Назначение: управление распределеним нагрузки на процессоры cpu.shares – доля использования процессора по отношению к другим группам cpu.rt_runtime_us – максимальноый период монопольного использования процессора в микросекундах cpu.rt_period_us – максимальное время ожидания процессора группой
  • 18. Kirill Krinkin, March 2015 18 Контроллер cpuacct ● Назначение: сбор статистики по использованию процессора cpuacct.stat – число циклов процессора cpuacct.usage – суммарное время cpuacct.usage_percpu – число циклов процессора, включая задания подгрупп
  • 19. Kirill Krinkin, March 2015 19 Контроллер devices ● Назначение: управление доступом к устройствам из группы →devices.allow – устройства доступные группе →devices.deny – запрещенные устройства в группе ←devices.list – просмотр устройств в whitelist Примеры: echo 'c 1:3 mr' > /sys/fs/cgroup/1/devices.allow echo a > /sys/fs/cgroup/1/devices.deny echo a > /sys/fs/cgroup/1/devices.allow https://www.kernel.org/doc/Documentation/devices.txt
  • 20. Kirill Krinkin, March 2015 20 Контроллер freezer ● Назначение: заморозка/разморозка исполнения группы процессов ←/→freezer.state – состояние заморозки ● FROZEN — задания приостановлены ● FREEZING – в стадии приостановки (включая группы-потомки) ● THAWED – возобновление работы ● ←freezer.self_freezing собственное состояние заморозки ● ←freezer.parent_freezing родительское состояние состояние заморозки
  • 21. Kirill Krinkin, March 2015 21 Контроллер memory ● Назначение: управление и мониторинг использования памяти ←memory.stat – получение статистики по использованию памяти – total_ – текущая группа и подгруппы ←memory.[memsw.]usage_in_bytes – используемая память в байтах (в подкачке) ←/→memory.[memsw.]limit_in_bytes ←memory.[memsw.].failcnt – счетчик числа достижений лимита памяти ←/→memory.oom_control — флаг разрешения OOM-killer (*) ←/→memory.soft_limit_in_bytes — флаг разрешения OOM-killer см https://www.kernel.org/doc/Documentation/cgroups/memory.txt
  • 22. Kirill Krinkin, March 2015 22 Контроллер blkio ● → blkio.weight – [100-1000], относительный вес ввода вывода в группе ● → blkio.weight – [100-1000], относительный вес ввода вывода в группе для конкретного устройства ● ← blkio.time – время доступа ввода-вывода в группе ● ← blkio.sectors – количество перемещенных между устройствами секторов в группе ● ← blkio.io_service_bytes – количество перемещенных между устройствами байт в группе ● ← blkio.io_service_time – время между выдачей запроса и его завершением ● ← blkio.io_queued – число запросов в очереди ввода вывода группы
  • 23. Kirill Krinkin, March 2015 23 Для чтения ● RHEL System resources management guide ● https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt ● https://www.kernel.org/doc/Documentation/cgroups/memory.txt
  • 24. Kirill Krinkin, March 2015 24 Примеры для изучения ● Элементы: – создание группы – перемещение и запуск процесса – изменение параметров группы ● cpuset – привязка cpu ● memory – установка лимита памяти и oom-killer ● cpu – разделение веса использования процессора между группами ● freezer – заморозка/разморозка группы