Linux kernel code here provides, CPU scheduler that has multiple scheduling algorithms for scheduling the processes(including docker container processes).
A control group is a kernel construct, which allows for limiting access to, and accounting for, the usage of the physical resources of a host system, by a group of processes.
Control groups was originally implemented in Linux kernel in 2007.
This version 1 implementation was replaced by version 2 implementation in Linux kernel 4.5. Version 2 fixed some limitations associated with version 1 implementation.
Two of the six CGROUP subsystem in Linux kernel is cpu subsystem & cpuset subsystem.
cpu subsystem controls access to the system's CPU via scheduler
cpuset subsystem pins process belonging in CGROUPS to specific CPU cores or memory nodes.
How CPU scheduler different from cpu subsystem(of CGROUPS)? something to do with default namespace vs multiple namespaces?