Loading AI tools
来自维基百科,自由的百科全书
cgroups,其名稱源自控制群組(英語:control groups)的簡寫,是Linux内核的一个功能,用来限制、控制與分離一个行程群組的资源(如CPU、内存、磁盘输入输出等)[1]。
原作者 | Paul Menage 與 Rohit Seth |
---|---|
開發者 | kernel.org (Tejun Heo與其他成員)以及freedesktop.org |
首次发布 | 2007年 |
编程语言 | C語言 |
操作系统 | Linux |
类型 | 行程群組的資源管理功能 |
许可协议 | GPL 與 LGPL |
网站 | www |
這個專案最早是由Google的工程師(主要是Paul Menage和Rohit Seth)在2006年發起,最早的名稱為进程容器(process containers)[2]。在2007年時,因為在Linux內核中,容器(container)這個名詞有許多不同的意義,為避免混亂,被重新命名為cgroup,並且被合併到2.6.24版的内核中去(该版本于2008年1月发布)[3]。自那以后,开发人员陆续添加了许多新功能和控制器,例如2014年对kernfs的支持[4],防火墙功能[5]和统一层次结构[6]。cgroup v2在Linux内核4.5中被合并[7],接口和内部功能发生了重大变化[8]。
cgroups的一个设计目标是为不同的用例提供统一的接口,从控制单一进程(像nice)到作業系統層虛擬化(像OpenVZ,Linux-VServer,LXC)。cgroups提供:
控制组(cgroup)是一组受相同条件约束的进程,并与一组参数或限制相关联。这些组可以是层次结构的,意味着每个组都从其父组继承限制。
内核通过cgroup接口提供对多个控制器(也称为子系统)的访问[18];例如,“memory”控制器限制内存使用,“cpuacct”记录CPU使用情况等。
控制组可以通过多种方式使用:
cgcreate
、 cgexec
和 cgclassify
(来自 libcgroup
)等工具,即时创建和管理群组。Linux 内核文档包含了控制组版本1(cgroup v1)[21] 和版本2(cgroup v2)[22]的一些设置和使用的技术细节。
也可以使用 systemd-cgtop
命令[23]按资源使用情况显示顶级控制组。
cgroups的重新设计始于2013年[24],随后在Linux内核的3.15和3.16版本中引入了额外的改变。[25][26][27]
虽然不是cgroups工作的技术部分,但Linux内核的一个相关特性是命名空间隔离,它将一组进程分离开来,使它们无法“看到”其他组中的资源。例如,PID命名空间在每个命名空间中提供了一个独立的进程标识符枚举。还有可用的挂载、用户、UTS、网络和SysV IPC命名空间。
命名空间是通过"unshare"命令或系统调用创建的,或者作为"clone"系统调用中的"new"标志。[32]
在 cgroups 开发早期,添加了"ns"子系统,以整合命名空间和控制组。如果挂载了"ns"控制组,每个命名空间也会在控制组层次结构中创建一个新的组。这是一个实验,后来被认为与cgroups API不太匹配,并从内核中移除。
Kernfs于2014年3月引入Linux内核,版本为3.14,主要作者是Tejun Heo。[34]一个独立的kernfs的主要动机之一是cgroups文件系统。Kernfs基本上是通过将一些sysfs逻辑拆分为一个独立实体来创建的,从而为其他内核子系统实现自己的虚拟文件系统提供了便利,包括处理设备连接和断开连接、动态创建和删除以及其他属性。重设计继续到Linux内核的3.15版本。
内核内存控制组(kmemcg)已合并到Linux内核主线版本3.8(2013年2月18日 )。[35][36][37]kmemcg控制器可以限制内核用于管理其自身内部进程所使用的内存量。
Linux内核4.19(2018年10月)引入了对OOM killer实现的cgroup感知,这增加了以cgroup为单位杀死进程的能力,从而保证了工作负载的完整性。[38]
各种项目都使用cgroups作为基础,包括CoreOS、Docker(2013年)、Hadoop、Jelastic、Kubernetes[39]、lmctfy(Let Me Contain That For You)、LXC(LinuX Containers)、systemd、Mesos和Mesosphere[40],以及HTCondor。主要的Linux发行版也采用了它,例如Red Hat Enterprise Linux(RHEL)6.0在2010年11月采用[41],比主线Linux内核晚三年。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.