17.8. Utilisation des fichiers unitaires de systemd pour fixer des limites aux applications

Chaque unité existante ou en cours d'exécution est supervisée par systemd, qui crée également des groupes de contrôle pour ces unités. Les unités ont des fichiers de configuration dans le répertoire /usr/lib/systemd/system/. Vous pouvez modifier manuellement les fichiers d'unité pour fixer des limites, établir des priorités ou contrôler l'accès aux ressources matérielles pour des groupes de processus.

Conditions préalables

  • Vous disposez des privilèges root.

Procédure

  1. Modifier le fichier /usr/lib/systemd/system/example.service pour limiter l'utilisation de la mémoire d'un service :

    …​
    [Service]
    MemoryMax=1500K
    …​

    La configuration ci-dessus impose une limite de mémoire maximale que les processus d'un groupe de contrôle ne peuvent pas dépasser. Le service example.service fait partie d'un tel groupe de contrôle auquel des limites ont été imposées. Vous pouvez utiliser les suffixes K, M, G ou T pour identifier le kilo-octet, le méga-octet, le giga-octet ou le téra-octet comme unité de mesure.

  2. Recharger tous les fichiers de configuration de l'unité :

    # systemctl daemon-reload
  3. Redémarrer le service :

    # systemctl restart example.service
Note

Vous pouvez consulter l'ensemble des options de configuration pour systemd dans les pages suivantes du manuel :

  • systemd.resource-control(5)
  • systemd.exec(5)

Vérification

  1. Vérifiez que les modifications ont bien été prises en compte :

    # cat /sys/fs/cgroup/system.slice/example.service/memory.max
    1536000

    L'exemple montre que la consommation de mémoire a été limitée à environ 1 500 Ko.

Ressources supplémentaires