Je voudrais mieux comprendre les cgroups et je voudrais comprendre les cas d'utilisation pour appliquer les cgroups.
Les groupes de contrôle sont-ils un bon moyen de hiérarchiser différentes applications (c.-à-d. D'accorder une priorité plus élevée à des types d'applications spécifiques comme les serveurs Web)?
linux
scheduling
cgroups
priority
Johnnie
la source
la source
Réponses:
Il existe plusieurs utilisations pour les groupes de contrôle . De l'administration du système, le plus important est probablement la limitation des ressources - l'exemple classique ici est l'accès au processeur. Si vous créez un groupe pour, par exemple,
sshd
et lui donnez une part de temps CPU non négligeable (par rapport à d'autres groupes ou à la valeur par défaut sous laquelle relèvent tous les processus non triés), vous êtes assuré de pouvoir vous connecter même lorsque la machine fonctionnera une tâche gourmande en CPU.Plus intéressant, si vous donnez à ce processus "d'accès à distance" un partage CPU beaucoup plus élevé que le reste, vous pourrez vous connecter presque instantanément (car le démon ssh sera priorisé sur le reste des processus en cours d'exécution) sans vous blesser la puissance de calcul globale de la machine, car les ressources sont allouées uniquement en fonction des besoins. Vous souhaitez généralement effectuer cette opération avec la hiérarchisation des E / S (y compris le réseau). Cependant, comme John le souligne correctement dans le commentaire ci-dessous, on ne veut pas faire ces choses négligemment (car cela pourrait se déclencher de manière inattendue). Une chose importante à garder à l'esprit est que les groupes sont hérités par défaut - c'est-à-dire que l'on ne veut pas démarrer un porc mémoire / CPU à partir d'une telle session ssh. Pourtant, pour cela, il existe des mécanismes qui peuvent affecter des processus aux groupes de contrôle au démarrage.
Une autre utilisation consiste à isoler les processus les uns des autres - en combinaison avec d'autres fonctionnalités (isolation de l'espace de noms) dans les noyaux Linux récents, ils sont utilisés pour créer une virtualisation au niveau du système d'exploitation comme le LXC (Linux Containers) .
En dehors de cela, vous pouvez effectuer diverses tâches de comptabilité et de contrôle (geler certains groupes de processus, les affecter à des cœurs de processeur spécifiques, etc.).
Les deux liens ici devraient être un point de départ raisonnable si vous recherchez plus d'informations. Vous pouvez également vouloir vérifier le
Documentation/cgroups
répertoire dans l'arborescence des sources du noyau Linux.la source
systemd
, qui (ab) utilisent cgroups à ses propres fins - les fichiers d'unité systemd pour les services peuvent donner quelques indices sur ce qui pourrait être raisonnable. Mais au final, c'est toujours à l'administrateur système d'apprendre à la dure, ce qui n'est vraiment pas la "bonne idée (TM)".cgroup
pseudo-système de fichiers que vous devrez peut-être monter en premier. Dans la plupart des cas aujourd'hui, le système init fait cela pour vous et utilise déjà déjà les cgroups d'une manière ou d'une autre. La seule réponse définitive est de lire la documentation: documentation du noyau , OpenRC @ Gentoo , systemd @ freedesktop .