Chapitre 36. Utilisation de cgroupfs pour gérer manuellement les cgroups
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.
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.
36.1. Création de cgroups et activation de contrôleurs dans le système de fichiers cgroups-v2 Copier lienLien copié sur presse-papiers!
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
Créez le répertoire
/sys/fs/cgroup/Example/:mkdir /sys/fs/cgroup/Example/
# mkdir /sys/fs/cgroup/Example/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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'interfacecgroups-v2sont automatiquement créés dans le répertoire. Le répertoire/sys/fs/cgroup/Example/contient également des fichiers spécifiques aux contrôleursmemoryetpids.Il est possible d'inspecter le groupe de contrôle enfant nouvellement créé :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow L'exemple de sortie montre les fichiers généraux de l'interface de contrôle
cgrouptels quecgroup.procsoucgroup.controllers. Ces fichiers sont communs à tous les groupes de contrôle, quels que soient les contrôleurs activés.Les fichiers tels que
memory.highetpids.maxse rapportent aux contrôleursmemoryetpids, qui se trouvent dans le groupe de contrôle racine (/sys/fs/cgroup/), et sont activés par défaut parsystemd.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 racinecgroup.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
# cat /sys/fs/cgroup/cgroup.controllers cpuset cpu io memory hugetlb pids rdmaCopy to Clipboard Copied! Toggle word wrap Toggle overflow Activez les contrôleurs souhaités. Dans cet exemple, il s'agit des contrôleurs
cpuetcpuset:echo "+cpu" >> /sys/fs/cgroup/cgroup.subtree_control echo "+cpuset" >> /sys/fs/cgroup/cgroup.subtree_control
# echo "+cpu" >> /sys/fs/cgroup/cgroup.subtree_control # echo "+cpuset" >> /sys/fs/cgroup/cgroup.subtree_controlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Ces commandes activent les contrôleurs
cpuetcpusetpour les groupes enfants immédiats du groupe de contrôle racine/sys/fs/cgroup/. Y compris le groupe de contrôleExamplenouvellement 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.NotePar défaut, le fichier
/sys/fs/cgroup/cgroup.subtree_controldu groupe de contrôle racine contient les contrôleursmemoryetpids.Activez les contrôleurs souhaités pour l'enfant
cgroupsdu groupe de contrôleExample:echo " cpu cpuset" >> /sys/fs/cgroup/Example/cgroup.subtree_control
# echo " cpu cpuset" >> /sys/fs/cgroup/Example/cgroup.subtree_controlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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
memoryoupids.Créez le répertoire
/sys/fs/cgroup/Example/tasks/:mkdir /sys/fs/cgroup/Example/tasks/
# mkdir /sys/fs/cgroup/Example/tasks/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Le répertoire
/sys/fs/cgroup/Example/tasks/définit un groupe enfant avec des fichiers qui se rapportent uniquement aux contrôleurscpuetcpuset. Vous pouvez maintenant affecter des processus à ce groupe de contrôle et utiliser les options des contrôleurscpuetcpusetpour vos processus.Optionnellement, inspecter le groupe de contrôle de l'enfant :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
cgroupavec uniquement les contrôleurs souhaités actifs :cat /sys/fs/cgroup/Example/tasks/cgroup.controllers cpuset cpu
# cat /sys/fs/cgroup/Example/tasks/cgroup.controllers cpuset cpuCopy to Clipboard Copied! Toggle word wrap Toggle overflow