组调度
通常调度器是针对单个任务。
用户A有两个任务在运行,用户B正在运行48个任务。组调度使CFS能够对用户A和用户B进行公平调度。
为了实现组调度,引入调度实体的概念。
sched_entity定义在include/linux/sched.h中。
成员:for load-balancing,调度实体上的运行节点,该调度实体上是否在运行队列(红黑树)上,任务开始运行的时间,任务总的运行时间,应当占用CPU的时间,任务最近一次执行前的sum_exec_runtime,......,
当我们定义了CONFIG_FAIR_GROUP_SCHED时,就开启了组调度。
在linux内核中,使用task_group结构来管理组调度的组。所有存在的task_group组成一个树型结构(与cgroup的目录结构相对应)。