Outils pour utilisateurs

Outils du site


cgroups

CGRoups

Biblio

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 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 ↔ 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 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 cfqL
  • création des groupes : cgcreate -g blkio:/{high,low}
  • gestion des limites:
echo "8:0 1024" > blkio.throttle.write_bps_device
echo "8:0 1024" > blkio.throttle.read_bps_device

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

mount {
   SUBS = /cgroup/nom ;
   }

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:

[Service]
MemoryAccounting=true
CPUAccounting=true
BlockIOAccounting=true

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)