Как проверить, настроен ли cgroup в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии (LabEx) вы узнаете, как проверить, настроены ли cgroups на вашей системе Linux. Cgroups (контрольные группы) - это мощная функция ядра для управления и контроля использования ресурсов процессов.

Вы будете добиваться этого, перечисляя доступные подсистемы cgroups с помощью команды cat /proc/cgroups, исследуя точки монтирования cgroups в каталоге /sys/fs/cgroup и проверяя файл конфигурации cgroups /etc/cgconfig.conf. Эти шаги дадут вам полное представление о настройке cgroups на вашей системе.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") subgraph Lab Skills linux/ls -.-> lab-558700{{"Как проверить, настроен ли cgroup в Linux"}} linux/cat -.-> lab-558700{{"Как проверить, настроен ли cgroup в Linux"}} end

Перечисление cgroups с помощью команды cat /proc/cgroups

На этом шаге вы узнаете, как перечислить доступные подсистемы cgroups на вашей системе Linux. Cgroups (контрольные группы) - это функция ядра Linux, которая позволяет организовать процессы в иерархические группы и контролировать их использование ресурсов (CPU, память, дисковый ввод-вывод, сеть и т.д.).

Представьте себе cgroups как способ установить ограничения или распределить ресурсы между определенными приложениями или пользователями. Это очень важно для эффективного управления системными ресурсами, особенно в таких средах, как контейнеры или облачные вычисления.

Файловая система /proc - это виртуальная файловая система, которая предоставляет информацию о процессах и другой системной информации. Файл /proc/cgroups содержит сведения о подсистемах cgroups, поддерживаемых вашим ядром.

Для просмотра доступных подсистем cgroups вы будете использовать команду cat. Команда cat - это базовая утилита Linux, используемая для отображения содержимого файлов.

Если терминал еще не открыт, откройте его. Для этого нажмите на значок Xfce Terminal слева на рабочем столе.

Теперь введите следующую команду в терминал и нажмите Enter:

cat /proc/cgroups

Вы должны увидеть вывод, похожий на следующий:

#subsys_name    hierarchy       num_cgroups     enabled
cpuset  0       1       1
cpu     0       1       1
cpuacct 0       1       1
blkio   0       1       1
memory  0       1       1
devices 0       1       1
freezer 0       1       1
net_cls 0       1       1
perf_event      0       1       1
net_prio        0       1       1
hugetlb 0       1       1
pids    0       1       1
rdma    0       1       1

Разберем вывод:

  • #subsys_name: Имя подсистемы cgroups (например, cpu, memory, blkio). Каждая подсистема контролирует определенный тип ресурсов.
  • hierarchy: Идентификатор иерархии, к которой присоединена подсистема. В этом выводе все подсистемы присоединены к иерархии 0, которая является стандартной объединенной иерархией в новых дистрибутивах Linux.
  • num_cgroups: Количество cgroups, в настоящее время созданных в иерархии этой подсистемы.
  • enabled: Указывает, включена (1) или отключена (0) подсистема в ядре.

Этот вывод показывает, какие функции управления ресурсами доступны и активны на вашей системе. Понимание этих подсистем - это первый шаг в изучении управления ресурсами с помощью cgroups.

Нажмите Продолжить, чтобы перейти к следующему шагу.

Проверка монтирования cgroups в /sys/fs/cgroup

На предыдущем шаге вы увидели доступные подсистемы cgroups. Теперь давайте узнаем, где эти cgroups смонтированы в файловой системе. В Linux cgroups обычно предоставляются через виртуальную файловую систему, которая обычно монтируется в каталоге /sys/fs/cgroup.

Файловая система /sys - это еще одна виртуальная файловая система, которая предоставляет интерфейс к структурам данных ядра. Она часто используется для настройки и мониторинга аппаратного обеспечения и функций ядра. Каталог /sys/fs/cgroup является стандартной точкой монтирования файловой системы cgroups.

Для просмотра содержимого этого каталога и понимания того, как организованы иерархии cgroups, вы будете использовать команду ls. Команда ls выводит список содержимого каталога.

Если терминал еще не открыт, откройте его.

Введите следующую команду в терминал и нажмите Enter:

ls /sys/fs/cgroup

Вы должны увидеть вывод, похожий на следующий:

cgroup.controllers  cgroup.max.depth  cgroup.max.descendants  cgroup.stat  cgroup.subtree_control  cgroup.threads  cpu  cpu.stat  cpu.pressure  cpuset  cpuset.cpus  cpuset.mems  cpuset.stat  io  io.stat  io.pressure  memory  memory.stat  memory.pressure  memory.swap.max  memory.high  memory.low  memory.min  memory.swap.current  memory.current  memory.events  memory.events.local  pids  pids.current  pids.max  systemd  user.slice

Этот вывод показывает каталоги и файлы в каталоге /sys/fs/cgroup. В системах, использующих объединенную иерархию cgroups (cgroup v2), вы увидите файлы, такие как cgroup.controllers, cgroup.stat, и каталоги, соответствующие смонтированным контроллерам (например, cpu, memory, io, pids).

Каждый из этих каталогов (например, cpu, memory и т.д.) представляет собой контроллер cgroups. Внутри этих каталогов вы найдете файлы, которые позволяют вам настраивать и отслеживать ограничения ресурсов для процессов в рамках этой cgroups.

Например, если вы войдете в каталог cpu, вы найдете файлы, связанные с контролем ресурсов CPU.

Давайте быстро посмотрим внутри каталога cpu с помощью команды ls:

ls /sys/fs/cgroup/cpu

Вы, возможно, увидите вывод, похожий на следующий:

cgroup.controllers  cgroup.events  cgroup.freeze  cgroup.max.depth  cgroup.max.descendants  cgroup.stat  cgroup.subtree_control  cgroup.threads  cpu.max  cpu.stat  cpu.weight  cpu.pressure

Эти файлы (например, cpu.max, cpu.weight) используются для установки ограничений и приоритетов CPU для cgroups.

Понимание структуры /sys/fs/cgroup является ключом к работе с cgroups, так как именно здесь вы напрямую взаимодействуете с ними.

Нажмите Продолжить, чтобы перейти к следующему шагу.

Проверка конфигурации cgroups с помощью команды cat /etc/cgconfig.conf

На предыдущих шагах вы узнали о доступных подсистемах cgroups и о том, где они смонтированы в файловой системе. Теперь давайте рассмотрим общий конфигурационный файл для cgroups: /etc/cgconfig.conf.

Хотя cgroups можно управлять напрямую через файловую систему /sys/fs/cgroup, конфигурационные файлы, такие как /etc/cgconfig.conf, часто используются для определения иерархий cgroups и начальных настроек при запуске системы. Этот файл является частью пакета cgroup-tools, который предоставляет утилиты для управления cgroups.

Файл /etc/cgconfig.conf считывается службой cgconfig (если она установлена и включена) для настройки иерархий cgroups и присоединения контроллеров при загрузке системы. Анализ этого файла позволит вам понять, как cgroups настроены на вашей системе.

Вы снова будете использовать команду cat для отображения содержимого этого конфигурационного файла.

Если терминал еще не открыт, откройте его.

Введите следующую команду в терминал и нажмите Enter:

cat /etc/cgconfig.conf

Вы должны увидеть вывод, похожий на следующий (точное содержимое может отличаться в зависимости от конфигурации системы):

#
## A sample configuration file for cgconfig.
#
## The file contains two sections:
##   mount: defines the hierarchy and where to mount it.
##   group: defines the cgroup and its parameters.
#
## Example:
#
#mount {
##       cpuset = /cgroup/cpuset;
##       cpu = /cgroup/cpu;
##       cpuacct = /cgroup/cpuacct;
##       memory = /cgroup/memory;
##       devices = /cgroup/devices;
##       freezer = /cgroup/freezer;
##       net_cls = /cgroup/net_cls;
##       blkio = /cgroup/blkio;
#}
#
#group staff {
##       perm {
##               task {
##                       uid = staff;
##                       gid = staff;
##               }
##               admin {
##                       uid = staff;
##                       gid = staff;
##               }
##       }
##       cpu {
##               cpu.shares = 1000;
##       }
##       memory {
##               memory.limit_in_bytes = 256M;
##       }
#}
#
#group / {
##       cpu {
##               cpu.shares = 1024;
##       }
#}

В этом примере вывода вы можете увидеть закомментированные разделы (#), которые показывают, как можно определить точки монтирования для различных контроллеров и создать группы cgroups (например, staff) с определенными ограничениями ресурсов (например, cpu.shares, memory.limit_in_bytes).

Если файл пуст или содержит только комментарии, это означает, что иерархии cgroups и начальные группы не настраиваются с помощью этого конкретного файла. В современных системах systemd часто управляет cgroups, используя объединенную иерархию, смонтированную в /sys/fs/cgroup.

Даже если этот файл не активно используется для настройки на вашей системе, знание о его существовании и назначении важно для понимания того, как можно управлять cgroups.

Вы теперь изучили доступные подсистемы cgroups, их точки монтирования в файловой системе и общий конфигурационный файл. Это дает вам основательное понимание того, как структурированы и могут быть настроены cgroups на системе Linux.

Нажмите Продолжить, чтобы завершить этот практический урок.

Резюме

В этом практическом уроке вы узнали, как проверить, настроены ли cgroups на системе Linux. Вы начали с использования команды cat /proc/cgroups для вывода списка доступных подсистем cgroups, поддерживаемых ядром, и поняли, что означают столбцы вывода, такие как subsys_name, hierarchy, num_cgroups и enabled. Этот шаг дал представление о том, какие механизмы контроля ресурсов активны.

Затем вы проверили точки монтирования cgroups, изучив каталог /sys/fs/cgroup, который является стандартным местом, где монтируются иерархии cgroups. Наконец, вы проверили файл /etc/cgconfig.conf, чтобы узнать, определены ли какие - либо постоянные конфигурации cgroups, хотя этот файл может отсутствовать или не использоваться на всех системах, особенно на тех, которые используют systemd для управления cgroups. Эти шаги в совокупности показывают, как определить наличие и базовую конфигурацию cgroups на системе Linux.