Es un mecanismo para organizar los procesos jerárquicamente y distribuir los recursos del sistema a lo largo de la jerarquía de una manera controlada y configurable. cgroup se compone principalmente de dos partes: el núcleo y los controladores. El núcleo de cgroup es el principal responsable de organizar los procesos jerárquicamente. Un controlador de cgroup suele ser responsable de distribuir un tipo específico de recurso del sistema a lo largo de la jerarquía, aunque existen controladores de utilidad que cumplen otros propósitos además de la distribución de recursos. A partir de la versión 4.20 del kernel existe un sistema llamado PSI [Pressure Stall Information], que proporciona información sobre cuánto se están estancando sus procesos en subsistemas seleccionados. Esta información se almacena en procfs [/proc/pressure/...], cgroupsv2 y se expresa en el siguiente formato:
some -- significa que algunos procesos están estancados
full -- todos los procesos (no inactivos) están estancados
avgX -- donde X significa segundos y se expresa como porcentaje del tiempo total estancado en uso
Distintas consultas que pueden realizarse:
$ cat /sys/fs/cgroup/cgroup.pressure
$ cat /sys/fs/cgroup/cpu.pressure
$ cat /sys/fs/cgroup/cpu.stat
$ cat /sys/fs/cgroup/memory.stat
$ cat /sys/fs/cgroup/memory.pressure
# cat /proc/cgroups
Un clásico ejemplo:
$ cat /sys/fs/cgroup/system.slice/cpu.pressure
some avg10=0.00 avg60=0.00 avg300=0.01 total=220679555
full avg10=0.00 avg60=0.00 avg300=0.00 total=128239145