Rechercher

Chapitre 20. Utilisation de cgroupfs pour gérer manuellement les cgroups

download PDF

Vous pouvez gérer les hiérarchies cgroup sur votre système en créant des répertoires sur le système de fichiers virtuel cgroupfs. Le système de fichiers est monté par défaut sur le répertoire /sys/fs/cgroup/ et vous pouvez spécifier les configurations souhaitées dans des fichiers de contrôle dédiés.

Important

En général, Red Hat vous recommande d'utiliser systemd pour contrôler l'utilisation des ressources du système. Vous ne devez configurer manuellement le système de fichiers virtuel cgroups que dans des cas particuliers. Par exemple, lorsque vous devez utiliser des contrôleurs cgroup-v1 qui n'ont pas d'équivalents dans la hiérarchie cgroup-v2.

20.1. Création de cgroups et activation de contrôleurs dans le système de fichiers cgroups-v2

Vous pouvez gérer le répertoire control groups (cgroups) en créant ou en supprimant des répertoires et en écrivant sur les fichiers du système de fichiers virtuel cgroups. Le système de fichiers est monté par défaut sur le répertoire /sys/fs/cgroup/. Pour utiliser les paramètres des contrôleurs cgroups, vous devez également activer les contrôleurs souhaités pour l'enfant cgroups. La racine cgroup a, par défaut, activé les contrôleurs memory et pids pour son enfant cgroups. Par conséquent, Red Hat recommande de créer au moins deux niveaux d'enfants cgroups à l'intérieur de la racine /sys/fs/cgroup/ cgroup . De cette manière, vous pouvez éventuellement supprimer les contrôleurs memory et pids de l'enfant cgroups et maintenir une meilleure clarté organisationnelle des fichiers cgroup.

Conditions préalables

  • Vous disposez des droits d'accès à la racine.

Procédure

  1. Créez le répertoire /sys/fs/cgroup/Example/:

    # mkdir /sys/fs/cgroup/Example/

    Le répertoire /sys/fs/cgroup/Example/ définit un groupe enfant. Lorsque vous créez le répertoire /sys/fs/cgroup/Example/, certains fichiers d'interface cgroups-v2 sont automatiquement créés dans le répertoire. Le répertoire /sys/fs/cgroup/Example/ contient également des fichiers spécifiques aux contrôleurs memory et pids.

  2. Il est possible d'inspecter le groupe de contrôle enfant nouvellement créé :

    # ll /sys/fs/cgroup/Example/
    -r—​r—​r--. 1 root root 0 Jun  1 10:33 cgroup.controllers
    -r—​r—​r--. 1 root root 0 Jun  1 10:33 cgroup.events
    -rw-r—​r--. 1 root root 0 Jun  1 10:33 cgroup.freeze
    -rw-r—​r--. 1 root root 0 Jun  1 10:33 cgroup.procs
    …​
    -rw-r—​r--. 1 root root 0 Jun  1 10:33 cgroup.subtree_control
    -r—​r—​r--. 1 root root 0 Jun  1 10:33 memory.events.local
    -rw-r—​r--. 1 root root 0 Jun  1 10:33 memory.high
    -rw-r—​r--. 1 root root 0 Jun  1 10:33 memory.low
    …​
    -r—​r—​r--. 1 root root 0 Jun  1 10:33 pids.current
    -r—​r—​r--. 1 root root 0 Jun  1 10:33 pids.events
    -rw-r—​r--. 1 root root 0 Jun  1 10:33 pids.max

    L'exemple de sortie montre les fichiers généraux de l'interface de contrôle cgroup tels que cgroup.procs ou cgroup.controllers. Ces fichiers sont communs à tous les groupes de contrôle, quels que soient les contrôleurs activés.

    Les fichiers tels que memory.high et pids.max se rapportent aux contrôleurs memory et pids, qui se trouvent dans le groupe de contrôle racine (/sys/fs/cgroup/), et sont activés par défaut par systemd.

    Par défaut, le groupe enfant nouvellement créé hérite de tous les paramètres du parent cgroup. Dans ce cas, aucune limite n'est imposée par la racine cgroup.

  3. Vérifiez que les contrôleurs souhaités sont disponibles dans le fichier /sys/fs/cgroup/cgroup.controllers:

    # cat /sys/fs/cgroup/cgroup.controllers
    cpuset cpu io memory hugetlb pids rdma
  4. Activez les contrôleurs souhaités. Dans cet exemple, il s'agit des contrôleurs cpu et cpuset:

    # echo "+cpu" >> /sys/fs/cgroup/cgroup.subtree_control
    # echo "+cpuset" >> /sys/fs/cgroup/cgroup.subtree_control

    Ces commandes activent les contrôleurs cpu et cpuset pour les groupes enfants immédiats du groupe de contrôle racine /sys/fs/cgroup/. Y compris le groupe de contrôle Example nouvellement créé. Un site child group est l'endroit où vous pouvez spécifier des processus et appliquer des contrôles à chacun des processus en fonction de vos critères.

    Les utilisateurs peuvent lire le contenu du fichier cgroup.subtree_control à n'importe quel niveau pour avoir une idée des contrôleurs qui seront disponibles pour l'activation dans le groupe enfant immédiat.

    Note

    Par défaut, le fichier /sys/fs/cgroup/cgroup.subtree_control du groupe de contrôle racine contient les contrôleurs memory et pids.

  5. Activez les contrôleurs souhaités pour l'enfant cgroups du groupe de contrôle Example:

    # echo " cpu cpuset" >> /sys/fs/cgroup/Example/cgroup.subtree_control

    Cette commande garantit que le groupe de contrôle enfant immédiat only aura des contrôleurs pertinents pour réguler la distribution du temps CPU - et non des contrôleurs memory ou pids.

  6. Créez le répertoire /sys/fs/cgroup/Example/tasks/:

    # mkdir /sys/fs/cgroup/Example/tasks/

    Le répertoire /sys/fs/cgroup/Example/tasks/ définit un groupe enfant avec des fichiers qui se rapportent uniquement aux contrôleurs cpu et cpuset. Vous pouvez maintenant affecter des processus à ce groupe de contrôle et utiliser les options des contrôleurs cpu et cpuset pour vos processus.

  7. Optionnellement, inspecter le groupe de contrôle de l'enfant :

    # ll /sys/fs/cgroup/Example/tasks
    -r—​r—​r--. 1 root root 0 Jun  1 11:45 cgroup.controllers
    -r—​r—​r--. 1 root root 0 Jun  1 11:45 cgroup.events
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cgroup.freeze
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cgroup.max.depth
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cgroup.max.descendants
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cgroup.procs
    -r—​r—​r--. 1 root root 0 Jun  1 11:45 cgroup.stat
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cgroup.subtree_control
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cgroup.threads
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cgroup.type
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cpu.max
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cpu.pressure
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cpuset.cpus
    -r—​r—​r--. 1 root root 0 Jun  1 11:45 cpuset.cpus.effective
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cpuset.cpus.partition
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cpuset.mems
    -r—​r—​r--. 1 root root 0 Jun  1 11:45 cpuset.mems.effective
    -r—​r—​r--. 1 root root 0 Jun  1 11:45 cpu.stat
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cpu.weight
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cpu.weight.nice
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 io.pressure
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 memory.pressure
Important

Le contrôleur cpu n'est activé que si le groupe de contrôle enfant concerné comporte au moins deux processus qui se disputent le temps d'une seule unité centrale.

Verification steps

  • Facultatif : confirmez que vous avez créé un nouveau site cgroup avec uniquement les contrôleurs souhaités actifs :

    # cat /sys/fs/cgroup/Example/tasks/cgroup.controllers
    cpuset cpu
Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.