Linux内核代码这里提供了CPU调度程序,它具有用于调度进程(包括停靠容器进程)的多个调度算法。
控制组是一个内核结构,它允许由一组进程限制对主机系统的物理资源的访问和使用。
控制组最初于2007年在Linux内核中实现。
这个版本1的实现被Linux内核4.5中的版本2实现所取代。版本2修正了与版本1实现相关的一些限制。
Linux内核中的六个CGROUP子系统中有两个是cpu子系统& cpuset子系统。
cpu子系统通过调度程序控制对系统CPU的访问
cpuset子系统引脚进程属于CGROUPS的特定核心或内存节点。
CPU调度程序与cpu子系统( CGROUPS)有何不同?与默认命名空间和多个命名空间有关的内容
发布于 2020-02-03 20:23:56
在不过分简单化的情况下,很难给出一个“简短的答案”。一个人可以写一本关于"CPU调度“的书,另一本写关于"Linux控制组”的书。
而不是“CPU调度程序与. Cgroups有何不同?”,更好的问题可能是“Linux与Linux进程有何不同?”
指南/ch01 如何组织控制组 Cgroups是按层次组织的,就像进程一样,子cgroup继承了它们的父级的一些属性。然而,这两种模式之间存在着差异。 Linux进程模型 Linux系统上的所有进程都是公共父进程的子进程: init进程,它在启动时由内核执行,并启动其他进程(这些进程可能启动自己的子进程)。因为所有进程都来自一个父进程,所以Linux进程模型是一个单一的层次结构或树。 此外,除init之外,每个Linux进程都继承其父进程的环境(例如路径变量)1和某些其他属性(如打开的文件描述符)。 Cgroup模型 Cgroup与流程类似,因为:
根本的区别在于,cgroup的许多不同层次可以同时存在于一个系统上。如果Linux进程模型是单个进程树,那么cgroup模型是一个或多个独立的、未连接的任务树(即进程)。
cgroups的多个独立层次结构是必要的,因为每个层次结构都附加到一个或多个子系统。subsystem2表示单个资源,例如CPU时间或内存。
回到你最初的问题:
CONFIG_CGROUP_SCHED组调度器扩展允许对任务进行分组,并在这些组之间公平地分配CPU时间。有关更多信息,请看这里:
https://stackoverflow.com/questions/60046244
复制相似问题