Outils pour utilisateurs

Outils du site


cgroups

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

cgroups [2017/06/17 23:00] (Version actuelle)
Ligne 1: Ligne 1:
 +
 +===== CGRoups ====
 +
 +==== Biblio ====
 +
 +RHEL 6 Ressource management.
 +
 +http://​kernel.org/​Documentations/​cgroups/​cgroups.txt
 +
 +https://​www.certdepot.net/​rhel7-get-started-cgroups/​
 +
 +Mise à jour 07/2017
 +
 +==== Introduction ====
 +
 +Permet l'​allocation de ressources (cpu, ram, BP réseau) à un ensemble de processus. Les //​c(ontrol)groups//​ sont des ensembles de tâches (processus) auxquels sont affectés des //​ressouces//​
 +
 +Ces cgroupes peuvent être surveillés,​ configurés à chaud, et conservés d'un reboot à l'​autre via l'​utilisation du service //​cgconfig//​.
 +
 +Les [[:​cgroups|cgroups]] sont organisés de manière hiérarchique,​ avec possibilité d'​hériter les caractéristiques du cgroup parent, à l'​instar du modèle des processus unix.
 +
 +Plusieurs hiérarchies peuvent cohabiter. Chaque hiérarchie est connecté à 1 ou plusieurs //​sous-système//​.
 +
 +=== Sous-système ===
 +
 +Appelé également //​contrôleur de ressource//​. objet permettant de gouverner l'​utilisation d'une ressource particulière:​
 +  * blkio - limites sur les entrées/​sorties sur périphériques.
 +  * cpu - contrôle l'​accès au cpu
 +  * cpuacct - génération de rapports sur l'​utilisation cpu
 +  * cpuset - allocations de //coeurs// et noeux mémoires à des groupes.
 +  * devices - autorise (ou pas) l'​accès à des périphériques.
 +  * freezer - suspend ou reprend des groups
 +  * memory - contrôle l'​utilisation de la mémoire, et rapporte son utilisation.
 +  * net_cls - marque des paquets réseau pour une utilisation par //[[tc]]//
 +  * net_prio - configure la priorité du trafic en fonction de l'​interface.
 +
 +==== règles d'​affectation ====
 +
 +1. 1 hiérarchie de [[:​cgroups|cgroups]] <-> 1 ou plusieurs SSSysteme
 +
 +2. 1 SSUBs ne peut être associé à plusieurs hcg si elles sont associées à plusieurs subs.
 +
 +3. lors de la création d'une HCG, toutes les tâches du système sont liées au cgroup //​principal//​ de cette HCG.
 +
 +4. L'​appartenance à un cgroup est héritée par les processus enfants, mais cela peut être modifié ultérieurement.
 +
 +==== Conseils ====
 +
 +
 +plusieurs SSSystemes (par ex cpu + mem ) connectés à une hiérarchie dans laquelle se trouvent autant de [[:​cgroups|cgroups]] différents que de politiques d'​affectations de ressource cpu+mem
 +
 +On peut également associer 1 SSSystem à 1 hiérarchie pour bénéficier d'un contrôle particulièrement fin.
 +==== Mise en oeuvre ====
 +
 +=== Limiter la charge induite par les I/O ===
 +
 +  * Utilisation du sous système //blkio// avec ordonnanceur **cfq**L
 +  * création des groupes : cgcreate -g blkio:/​{high,​low}
 +  * gestion des limites:
 +<​code>​
 +echo "8:0 1024" > blkio.throttle.write_bps_device
 +echo "8:0 1024" > blkio.throttle.read_bps_device
 +</​code>​
 +avec 8:0 : id de périphérique mineur et majeur, 1024 la taille en octet
 +
 +  * test: exécution d'une tache dans le groupe high
 +
 +La définition des hiérarchies,​ de leur association avec des subsys se fait via le montage de fichiers spéciaux dans // /cgroup//
 +
 +
 +
 +le fichier // /​etc/​cgconfig.conf //
 +
 +<​code>​
 +mount {
 +   SUBS = /cgroup/nom ;
 +   }
 +</​code>​
 +
 +==== Démarrer dans un cgroup spécifique ====
 +
 + === Services ===
 +
 +
 + === manuellement ===
 +
 +cgexec
 +
 + === via //cgred// et // /​etc/​cgrules.conf//​ ===
 +
 +==== Intégration avec systemd ====
 +
 +systemd utilise les cgroups lorsqu'​il démarre les différents services.
 +
 +On peut faire du monitoring de ressources vite fait bien fait. Pour chaque service important, créer un répertoire dans /​etc/​systemd/​system reprenant le nom de l'​unité complète à monitorer, avec le suffice "​.d"​ (par exemple /​etc/​systemd/​system/​httpd.service.d)
 +
 +Dans ce répertoire,​ créer le fichier suivant:
 +<​code>​
 +[Service]
 +MemoryAccounting=true
 +CPUAccounting=true
 +BlockIOAccounting=true
 +</​code>​
 +
 +relancer (systemctl daemon-reload)
 +
 +Les informations sont ensuite disponibles via la commande systemd-cgtop
 +
 +
 +# vim: set filetype=dokuwiki:​
  
cgroups.txt · Dernière modification: 2017/06/17 23:00 (modification externe)