Les cgroups permettent de coller une balise sur un processus. C'est particulièrement utile parce que cela permet notamment :
d'affecter des ressources à ce cgroup ;
d'en contrôler l'exécution ;
de garder toujours trace de ce processus et de ses descendants.
Le 1 est tout simple : on peut limiter le volume de mémoire, la quantité de processeur ou d'entrée/sortie auquel le cgroup aura accès.
Le 2 rend possible de suspendre une application pour la redémarrer plus tard. Une sorte d'hibernation partielle.
Le 3 est à mes yeux fondamental, c'est le seul moyen que je connaisse pour surveiller totalement un processus, et c'est ce que fait systemd, cf systemd for Administrators, Part II. Sinon, à coup de forks et autres astuces, une application peut fausser compagnie à son moniteur.
D'ailleurs, le besoin tout simple de lancer une appli en mode démon avec redémarrage automatique en cas d'arrêt, ce besoin naturel était très dur à satisfaire avec sysvinit. start-stop-demon ne suffit pas, et si le processus n'écrit pas son pid, monit non plus. Il fallait bidouiller ou recourir à runit et toute sa complexité. Désormais, ça se fait en 5 lignes évidentes.
[^] # Re: Le bon chasseur et le mauvais chasseur
Posté par rogo . En réponse à la dépêche systemd : l’init martyrisé, l’init bafoué, mais l’init libéré !. Évalué à 5.
Les cgroups permettent de coller une balise sur un processus. C'est particulièrement utile parce que cela permet notamment :
Le 1 est tout simple : on peut limiter le volume de mémoire, la quantité de processeur ou d'entrée/sortie auquel le cgroup aura accès.
Le 2 rend possible de suspendre une application pour la redémarrer plus tard. Une sorte d'hibernation partielle.
Le 3 est à mes yeux fondamental, c'est le seul moyen que je connaisse pour surveiller totalement un processus, et c'est ce que fait systemd, cf systemd for Administrators, Part II. Sinon, à coup de forks et autres astuces, une application peut fausser compagnie à son moniteur.
D'ailleurs, le besoin tout simple de lancer une appli en mode démon avec redémarrage automatique en cas d'arrêt, ce besoin naturel était très dur à satisfaire avec sysvinit. start-stop-demon ne suffit pas, et si le processus n'écrit pas son pid, monit non plus. Il fallait bidouiller ou recourir à runit et toute sa complexité. Désormais, ça se fait en 5 lignes évidentes.