Download - Обзор Linux Control Groups
![Page 1: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/1.jpg)
Kirill Krinkin, March 2015
1
Linux Control Groups (краткое введение)
![Page 2: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/2.jpg)
Kirill Krinkin, March 2015
2
Темы
● Подсистемы Linux (немного истории)● Иерархия ресурсов и контрольные группы● Обзор контроллеров● Примеры
![Page 3: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/3.jpg)
Kirill Krinkin, March 2015
3
Подсистема и контрольная группа
● Подсистема (subsystem) – модуль предоставляющий возможности для группировки и управления (ограничение, подсчет использования,...) определенными ресурсами процессов.
● Контрольная группа (Control Group, cgroup) – множество параметров, ассоциированное с одной или более подсистем.
![Page 4: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/4.jpg)
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
Процесс: - память - процессор - устройства - ввод-вывод - ...
Процесс: - память - процессор - устройства - ввод-вывод - ...
![Page 5: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/5.jpg)
Kirill Krinkin, March 2015
5
Подсистемы = контроллеры
● blkio – управление вводом выводом блочных устройств● cpu – управление доступом к процессору● cpuacc – отчеты по использованию процессора● cpuset – приязка к процессорам и банкам памяти● devices – доступ к устройствам● freezer – останов/возобновление работы группы● memory – ограничения и учет использования памяти● net_cls – маркировка пакетов для контроллера трафика
![Page 6: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/6.jpg)
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 – путь к агенту разрушения
![Page 7: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/7.jpg)
Kirill Krinkin, March 2015
7
Подсистемы и точки монтирования
![Page 8: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/8.jpg)
Kirill Krinkin, March 2015
8
cgcreate: cоздание группы
● cgcreate
-t uid:gid – пользователи получающие права на перемещение заданий в(из) группу
-a uid:gid – пользователи получающие права на управление параметрами группы
-g список подсистем (контроллеров):путь
● Пример
cgcreate -t kkv:kkv -g memory,cpu:/mycgroup
![Page 9: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/9.jpg)
Kirill Krinkin, March 2015
9
cgdelete: удаление группы
● cgdelete
-g список подсистем (контроллеров):путь
● Пример
cgdelete -g memory,cpu:/mycgroup
(*) при удалении группы, входящие в нее задачи перемещаются в родительскую группу
![Page 10: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/10.jpg)
Kirill Krinkin, March 2015
10
Перемещение процессов в группу
● cgclassify
-g список подсистем (контроллеров):путь
PID [PID PID …]
Примеры:$cgclassify -g cpu:/mycgroup 6433 3662
$echo 6433 >/sys/fs/cgroup/cpu/mucgroup/tasks
![Page 11: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/11.jpg)
Kirill Krinkin, March 2015
11
Выполнение процесса в группе
● cgexec
-g список подсистем (контроллеров):путь
имя_приложения
● Пример
cgexec -g memory:/mycgroup google-chrome
![Page 12: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/12.jpg)
Kirill Krinkin, March 2015
12
Группы процесса
![Page 13: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/13.jpg)
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
![Page 14: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/14.jpg)
Kirill Krinkin, March 2015
14
cgset – установка параметров
● cgset
-r параметр=значение
Пример:
$cgset -r cpu.shares=8 /mycgroup
$echo 9 >/sys/fs/cgroup/cpu/mycgroup/cpu.shares
![Page 15: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/15.jpg)
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
![Page 16: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/16.jpg)
Kirill Krinkin, March 2015
16
cpuset.sched_relax_domain_level
● -1 – не менять внешние правила● 0 – периодическая балансировка● 1 – немедленная между потоками одного ядра● 2 – немедленная между ядрами пакета ● 3 – немедленная в рамках узла● 4 – немедленная между процессорами на NUMA
системе● 5 – немедленная по всей системе
try: cat /proc/self/status
![Page 17: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/17.jpg)
Kirill Krinkin, March 2015
17
Контроллер cpu
● Назначение: управление распределеним нагрузки на процессоры
cpu.shares – доля использования процессора по отношению к другим группам
cpu.rt_runtime_us – максимальноый период монопольного использования процессора в микросекундах
cpu.rt_period_us – максимальное время ожидания процессора группой
![Page 18: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/18.jpg)
Kirill Krinkin, March 2015
18
Контроллер cpuacct
● Назначение: сбор статистики по использованию процессора
cpuacct.stat – число циклов процессора
cpuacct.usage – суммарное время
cpuacct.usage_percpu – число циклов процессора, включая задания подгрупп
![Page 19: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/19.jpg)
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
![Page 20: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/20.jpg)
Kirill Krinkin, March 2015
20
Контроллер freezer
● Назначение: заморозка/разморозка исполнения группы процессов
←/→freezer.state – состояние заморозки● FROZEN — задания приостановлены● FREEZING – в стадии приостановки (включая группы-потомки)● THAWED – возобновление работы
● ←freezer.self_freezing собственное состояние заморозки
● ←freezer.parent_freezing родительское состояние состояние заморозки
![Page 21: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/21.jpg)
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
![Page 22: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/22.jpg)
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 – число запросов в очереди ввода вывода группы
![Page 23: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/23.jpg)
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
![Page 24: Обзор Linux Control Groups](https://reader033.vdocuments.us/reader033/viewer/2022042607/55ab61371a28ab652f8b46f7/html5/thumbnails/24.jpg)
Kirill Krinkin, March 2015
24
Примеры для изучения
● Элементы:– создание группы
– перемещение и запуск процесса
– изменение параметров группы
● cpuset– привязка cpu
● memory– установка лимита памяти и oom-killer
● cpu– разделение веса использования процессора между группами
● freezer– заморозка/разморозка группы