Comment vérifier si un cgroup est configuré sur Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à vérifier si les cgroups sont configurés sur votre système Linux. Les cgroups sont une fonctionnalité puissante du noyau (kernel) pour gérer et contrôler l'utilisation des ressources par les processus.

Vous y parviendrez en listant les sous-systèmes cgroup disponibles à l'aide de la commande cat /proc/cgroups, en examinant les points de montage des cgroups dans le répertoire /sys/fs/cgroup et en vérifiant le fichier de configuration des cgroups /etc/cgconfig.conf. Ces étapes vous permettront d'obtenir une vue d'ensemble complète de la configuration des cgroups de votre système.


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{{"Comment vérifier si un cgroup est configuré sur Linux"}} linux/cat -.-> lab-558700{{"Comment vérifier si un cgroup est configuré sur Linux"}} end

Lister les cgroups avec cat /proc/cgroups

Dans cette étape, vous apprendrez à lister les sous-systèmes cgroup disponibles sur votre système Linux. Les cgroups (groupes de contrôle) sont une fonctionnalité du noyau Linux qui vous permet d'organiser les processus en groupes hiérarchiques et de contrôler leur utilisation des ressources (processeur, mémoire, E/S disque, réseau, etc.).

Imaginez les cgroups comme un moyen de fixer des limites ou d'allouer des ressources à des applications ou des utilisateurs spécifiques. Cela est crucial pour gérer efficacement les ressources du système, notamment dans des environnements tels que les conteneurs ou l'informatique cloud.

Le système de fichiers /proc est un système de fichiers virtuel qui fournit des informations sur les processus et d'autres informations système. Le fichier /proc/cgroups contient des détails sur les sous-systèmes cgroup pris en charge par votre noyau.

Pour afficher les sous-systèmes cgroup disponibles, vous utiliserez la commande cat. La commande cat est un utilitaire de base de Linux utilisé pour afficher le contenu des fichiers.

Ouvrez votre terminal s'il n'est pas déjà ouvert. Vous pouvez le faire en cliquant sur l'icône Xfce Terminal sur le côté gauche de votre bureau.

Maintenant, tapez la commande suivante dans le terminal et appuyez sur Entrée :

cat /proc/cgroups

Vous devriez voir une sortie similaire à celle-ci :

#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

Décortiquons la sortie :

  • #subsys_name : Le nom du sous-système cgroup (par exemple, cpu, memory, blkio). Chaque sous-système contrôle un type spécifique de ressource.
  • hierarchy : L'ID de la hiérarchie à laquelle le sous-système est attaché. Dans cette sortie, tous les sous-systèmes sont attachés à la hiérarchie 0, qui est la hiérarchie unifiée par défaut dans les distributions Linux plus récentes.
  • num_cgroups : Le nombre de cgroups actuellement créés dans la hiérarchie de ce sous-système.
  • enabled : Indique si le sous-système est activé (1) ou désactivé (0) dans le noyau.

Cette sortie vous montre quelles fonctionnalités de contrôle des ressources sont disponibles et actives sur votre système. Comprendre ces sous-systèmes est la première étape pour apprendre à gérer les ressources avec les cgroups.

Cliquez sur Continuer pour passer à l'étape suivante.

Vérifier les montages de cgroups dans /sys/fs/cgroup

Dans l'étape précédente, vous avez vu les sous-systèmes cgroup disponibles. Maintenant, explorons où ces cgroups sont montés dans le système de fichiers. Sous Linux, les cgroups sont généralement exposés via un système de fichiers virtuel, habituellement monté sous /sys/fs/cgroup.

Le système de fichiers /sys est un autre système de fichiers virtuel qui fournit une interface aux structures de données du noyau (kernel). Il est souvent utilisé pour configurer et surveiller le matériel et les fonctionnalités du noyau. Le répertoire /sys/fs/cgroup est le point de montage standard pour le système de fichiers des cgroups.

Pour voir le contenu de ce répertoire et comprendre comment les hiérarchies de cgroups sont organisées, vous utiliserez la commande ls. La commande ls liste le contenu d'un répertoire.

Ouvrez votre terminal s'il n'est pas déjà ouvert.

Tapez la commande suivante dans le terminal et appuyez sur Entrée :

ls /sys/fs/cgroup

Vous devriez voir une sortie similaire à celle-ci :

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

Cette sortie montre les répertoires et les fichiers dans le répertoire /sys/fs/cgroup. Dans les systèmes utilisant la hiérarchie unifiée de cgroups (cgroup v2), vous verrez des fichiers tels que cgroup.controllers, cgroup.stat, et des répertoires correspondant aux contrôleurs montés (comme cpu, memory, io, pids).

Chacun de ces répertoires (comme cpu, memory, etc.) représente un contrôleur de cgroup. À l'intérieur de ces répertoires, vous trouverez des fichiers qui vous permettent de configurer et de surveiller les limites de ressources pour les processus au sein de ce cgroup.

Par exemple, si vous vous dirigez dans le répertoire cpu, vous trouverez des fichiers liés au contrôle des ressources CPU.

Jetons rapidement un coup d'œil à l'intérieur du répertoire cpu en utilisant ls :

ls /sys/fs/cgroup/cpu

Vous pourriez voir une sortie comme celle-ci :

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

Ces fichiers (comme cpu.max, cpu.weight) sont utilisés pour définir les limites et les priorités CPU pour les cgroups.

Comprendre la structure de /sys/fs/cgroup est essentiel pour travailler avec les cgroups, car c'est là que vous interagissez directement avec eux.

Cliquez sur Continuer pour passer à l'étape suivante.

Vérifier la configuration des cgroups avec cat /etc/cgconfig.conf

Dans les étapes précédentes, vous avez appris à connaître les sous-systèmes cgroup disponibles et où ils sont montés dans le système de fichiers. Maintenant, examinons un fichier de configuration courant pour les cgroups : /etc/cgconfig.conf.

Bien que les cgroups puissent être gérés directement via le système de fichiers /sys/fs/cgroup, des fichiers de configuration tels que /etc/cgconfig.conf sont souvent utilisés pour définir les hiérarchies de cgroups et les paramètres initiaux au démarrage du système. Ce fichier fait partie du paquet cgroup-tools, qui fournit des utilitaires pour gérer les cgroups.

Le fichier /etc/cgconfig.conf est lu par le service cgconfig (si installé et activé) pour configurer les hiérarchies de cgroups et attacher les contrôleurs au démarrage. L'examen de ce fichier peut vous aider à comprendre comment les cgroups sont configurés sur votre système.

Vous utiliserez à nouveau la commande cat pour afficher le contenu de ce fichier de configuration.

Ouvrez votre terminal s'il n'est pas déjà ouvert.

Tapez la commande suivante dans le terminal et appuyez sur Entrée :

cat /etc/cgconfig.conf

Vous devriez voir une sortie similaire à celle-ci (le contenu exact peut varier en fonction de la configuration du système) :

#
## 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;
##       }
#}

Dans cet exemple de sortie, vous pouvez voir des sections commentées (#) qui montrent comment vous pourriez définir des points de montage pour différents contrôleurs et créer des groupes de cgroups (comme staff) avec des limites de ressources spécifiques (par exemple, cpu.shares, memory.limit_in_bytes).

Si le fichier est vide ou ne contient que des commentaires, cela signifie que les hiérarchies de cgroups et les groupes initiaux ne sont pas configurés via ce fichier spécifique. Dans les systèmes modernes, systemd gère souvent la gestion des cgroups, en utilisant la hiérarchie unifiée montée sur /sys/fs/cgroup.

Même si ce fichier n'est pas utilisé activement pour la configuration sur votre système, il est important de connaître son existence et son objectif pour comprendre comment les cgroups peuvent être gérés.

Vous avez maintenant exploré les sous-systèmes cgroup disponibles, leurs points de montage dans le système de fichiers et un fichier de configuration courant. Cela vous donne une compréhension de base de la structure et de la configuration potentielle des cgroups sur un système Linux.

Cliquez sur Continuer pour terminer ce laboratoire.

Résumé

Dans ce laboratoire, vous avez appris à vérifier si les cgroups sont configurés sur un système Linux. Vous avez commencé par utiliser la commande cat /proc/cgroups pour lister les sous-systèmes cgroup disponibles pris en charge par le noyau (kernel), en comprenant les colonnes de sortie telles que subsys_name, hierarchy, num_cgroups et enabled. Cette étape vous a permis de comprendre quels mécanismes de contrôle des ressources sont actifs.

Ensuite, vous avez vérifié les points de montage des cgroups en examinant le répertoire /sys/fs/cgroup, qui est l'emplacement standard où les hiérarchies de cgroups sont montées. Enfin, vous avez vérifié le fichier /etc/cgconfig.conf pour voir si des configurations persistantes de cgroups sont définies, bien que ce fichier puisse ne pas exister ou être utilisé sur tous les systèmes, en particulier ceux qui reposent sur systemd pour la gestion des cgroups. Ces étapes démontrent collectivement comment déterminer la présence et la configuration de base des cgroups sur un système Linux.