Les cgroups (pour Control Groups) sont une fonctionnalité du noyau Linux qui permet de limiter, comptabiliser et isoler l’utilisation des ressources (CPU, mémoire, disque I/O, réseau, etc.) par les processus.
LXC (pour Linux Containers) est une méthode de virtualisation au niveau du système d’exploitation qui permet de faire tourner plusieurs systèmes Linux isolés les uns des autres sur un même hôte Linux.
Voici comment vous pouvez utiliser les cgroups dans LXC:
1. Création d’un conteneur:
```
lxc-create -t download -n ma-machine — -d debian -r buster -a amd64
```
`lxc-create` est l’outil de création de conteneur, `-t download` permet de télécharger une image déjà faite, `-n ma-machine` donne un nom au conteneur. L’option `—` permet de passer des options supplémentaires à la commande de téléchargement : `-d debian -r buster -a amd64` demande une Debian Buster 64 bits.
1. Configuration du conteneur:
Vous pouvez configurer les limites de ressources en modifiant le fichier de configuration du conteneur. Par exemple, pour limiter l’utilisation du CPU à 2 cœurs, vous pouvez ajouter la ligne suivante au fichier de configuration du conteneur (`/var/lib/lxc/ma-machine/config`):
```
lxc.cgroup.cpuset.cpus = 0,1
```
1. Démarrage du conteneur:
```
lxc-start -n ma-machine
```
`lxc-start` démarre une machine virtuelle. Vous pouvez voir avec `lxc-ls —fancy` l’état de vos différentes machines.
1. Application des cgroups:
Une fois que le conteneur est démarré, vous pouvez modifier les limites de ressources en temps réel. Par exemple, pour modifier la limite de mémoire à 512M, vous pouvez exécuter la commande suivante:
```
lxc-cgroup -n ma-machine memory.limit_in_bytes 536870912
```
`lxc-cgroup` permet de changer les valeurs des cgroups. Attention, certaines valeurs nécessitent l’arrêt de la machine.
1. Arrêt du conteneur:
```
lxc-stop -n ma-machine
```
`lxc-stop` permet d’arrêter une machine. Celle-ci peut ensuite être redémarrée avec `lxc-start`.
Comme toujours, il est conseillé de voir la page de manuel (`man lxc`) pour plus d’informations sur l’utilisation de LXC et des cgroups.