cgroups
Paul Menage | |
kernel.org (Tejun Heo | |
2007 | |
编程语言 | C |
Linux | |
类型 | |
许可协议 | GPL |
网站 | www |
cgroups,其
這個
功 能
[编辑]cgroups
- 资源
限 制 (Resource limiting):组可 以被设置不 超 过设定 的 内 存 限 制 (这也包括 页面缓存)[9] [10]、I/O带宽限 制 [11]、CPU配 额限制 [12]、CPU集合 限 制 [13]或 最大 打 开文件数 [14]。 - 优先级设
定 (Prioritization):一 些组可能 会得 到 更 大 的 CPU[15]或 磁盘IO吞吐量 。[16] - 结算(Accounting):衡量
一 个组的 资源使用 情 况,可 以用于计费等目的 [17] 控 制 (Control):冻结组中 的 进程,运行检查点 和重 新 启动。[17]
使用
[编辑]手 动读写 cgroup的 虚 拟文件 系 统。使用 cgcreate
、cgexec
和 cgclassify
(来 自 libcgroup
)等 工具 ,即 时创建 和 管理 群 组。通 过“规则引擎守 护程序 ”,可 以根据 配置 自 动将特定 用 户、组或命令 的 进程移 动到cgroups中 。- 间接
通 过使用 cgroups的 其他软件,如Docker、Firejail、LXC[19]、libvirt、systemd、Open Grid Scheduler/Grid Engine[20],以及Google已 停止 开发的 lmctfy。
Linux
也可以systemd-cgtop
重 新 设计
[编辑]cgroups
命名 空 间隔离
[编辑]虽然
- PID namespace (PID
命名 空 间)提供 了 进程标识符 (PID)、进程列 表 及其详细信 息 的 分 离。虽然新 的 命名 空 间与其他同 级命名 空 间隔离,但 其“父 ”命名 空 间中的 进程仍然可 以看到 子 命名 空 间中的 所有 进程,尽 管 PID号 码不同 。[28] - Network namespace (网络
命名 空 间)隔 离了(物理 或 虚 拟的)网络接 口 控 制 器 、iptables防火 墙规则、路 由 表 等 。网络命名 空 间可以使用 "veth"虚 拟以太 网设备连接 在 一 起 。 - "UTS" namespace
允 许更改 主 机 名 。 - Mount namespace
允 许创建 不同 的 文 件 系 统布局 ,或 将 某 些挂载点设置为只读。[29] - IPC namespace
隔 离了命名 空 间之间的System V进程间通信 。 - User namespace
在 命名 空 间之间隔离用户ID。[30] - Cgroup namespace [31]
Linux
统一层次结构(Unified hierarchy)
[编辑]Kernfs于2014
内 核 内 存 控 制 组(kmemcg)
[编辑]cgroup对OOM killer的 感知
[编辑]Linux
应用
[编辑]2019
参 见
[编辑]- 实现
了 操作 系 统级虚 拟化的 项目列 表 - 进程组
- Tc (Linux)
工作 对象 - Windows平台 的 等 效 概念 ,由 该平台 的 对象管理 器 管理 。
引用
[编辑]- ^ Control Group v2 — The Linux Kernel documentation. www.kernel.org. [2024-02-29]. (
原始 内容 存 档于2018-11-07). - ^ Jonathan Corbet. Process containers. LWN.net. 2007-05-29 [2012-06-16]. (
原始 内容 存 档于2017-06-12). - ^ Jonathan Corbet. Notes from a container. LWN.net. 2007-10-29 [2012-06-16]. (
原始 内容 存 档于2012-06-22). - ^ LKML: Tejun Heo: [PATCHSET cgroup/for-3.15] cgroup: convert to kernfs. lkml.org. [2024-02-29]. (
原始 内容 存 档于2018-10-12). - ^ [PATCH 12/12] netfilter: x_tables: lightweight process control group matching — Linux Network Development. web.archive.org. 2014-04-24 [2024-02-29].
原始 内容 存 档于2014-04-24. - ^ LKML: Tejun Heo: [PATCHSET cgroup/for-3.15] cgroup: prepare for the default unified hierarchy. lkml.org. [2024-02-29]. (
原始 内容 存 档于2014-03-20). - ^ kernel/git/torvalds/linux.git - Linux kernel source tree. git.kernel.org. [2024-02-29].
- ^ Control Group v2 — The Linux Kernel documentation. www.kernel.org. [2024-02-29]. (
原始 内容 存 档于2018-11-07). - ^ Jonathan Corbet. Controlling memory use in containers. LWN. 2007-07-31 [2012-06-16]. (
原始 内容 存 档于2018-01-29). - ^ Balbir Singh, Vaidynathan Srinivasan. Containers: Challenges with the memory resource controller and its performance (PDF). Ottawa Linux Symposium. July 2007 [2012-06-16]. (
原始 内容 存 档 (PDF)于2012-05-23). - ^ Using cgroups to limit I/O · André Carvalho. andrestc.com. [2024-02-29].
- ^ The container throttling problem. danluu.com. [2024-02-29].
- ^ Derr, Simon (2004). "CPUSETS".
- ^ setrlimit(2) — Arch manual pages. man.archlinux.org. [2024-02-29].
- ^ Jonathan Corbet. Kernel space: Fair user scheduling for Linux. Network World. 2007-10-23 [2012-06-16]. (
原始 内容 存 档于2009-05-24). - ^ Kamkamezawa Hiroyu. Cgroup and Memory Resource Controller (PDF). Japan Linux Symposium. 2008-11-19 [2012-06-16]. (
原始 内容 (PDF presentation slides)存 档于2011-07-22). - ^ 17.0 17.1 Dave Hansen. Resource Management (PDF). Linux Foundation. [2012-06-16]. (
原始 内容 (PDF presentation slides)存 档于2011-10-09). - ^ Notes from a container [LWN.net]. lwn.net. [2024-02-29]. (
原始 内容 存 档于2018-02-04). - ^ IBM Developer. developer.ibm.com. [2024-02-29]. (
原始 内容 存 档于2013-10-03). - ^ Rayson. Grid Engine cgroups Integration. [2024-02-29]. (
原始 内容 存 档于2013-01-22) (英 语). - ^ v1.
- ^ linux/Documentation/admin-guide/cgroup-v2.rst at master · torvalds/linux. GitHub. [2024-02-29] (
英 语). - ^ systemd-cgtop. www.freedesktop.org. [2024-02-29].
- ^ All About the Linux Kernel: Cgroup's Redesign. Linux.com. 2013-08-15 [2014-05-19]. (
原始 内容 存 档于2019-04-28). - ^ The unified control group hierarchy in 3.16. LWN.net. 2014-06-11.
- ^ Pull cgroup updates for 3.15 from Tejun Heo. kernel.org. 2014-04-03.
- ^ Pull cgroup updates for 3.16 from Tejun Heo. kernel.org. 2014-06-09.
- ^ Pavel Emelyanov, Kir Kolyshkin. PID namespaces in the 2.6.24 kernel. LWN.net. 19 November 2007 [2024-03-01]. (
原始 内容 存 档于2017-12-08). - ^ Serge E. Hallyn, Ram Pai. Applying mount namespaces. IBM developerWorks. 17 September 2007.
- ^ Michael Kerrisk. Namespaces in operation, part 5: User namespaces. lwn.net Linux Info from the Source. 27 February 2013 [2024-03-01]. (
原始 内容 存 档于2022-06-04). - ^ LKML: Linus Torvalds: Linux 4.6-rc1.
- ^ Janak Desai. Linux kernel documentation on unshare. 11 January 2006.
- ^ The Use of Name Spaces in Plan 9. 1992 [15 February 2015]. (
原始 内容 存 档于6 September 2014). - ^ kernfs, sysfs, driver-core: implement synchronous self-removal. LWN.net. 2014-02-03 [2014-04-07].
- ^ memcg: kmem controller infrastructure. kernel.org source code. 2012-12-18.
- ^ memcg: kmem accounting basic infrastructure. kernel.org source code. 2012-12-18.
- ^ memcg: add documentation about the kmem controller. kernel.org. 2012-12-18.
- ^ Linux_4.19 - Linux Kernel Newbies.
- ^ Mesosphere to Bring Google’s Kubernetes to Mesos - Mesosphere. web.archive.org. 2015-09-06 [2024-02-29].
原始 内容 存 档于2015-09-06. - ^ Mesosphere to Bring Google’s Kubernetes to Mesos - Mesosphere. web.archive.org. 2015-09-06 [2024-02-29].
原始 内容 存 档于2015-09-06. - ^ "6.0 Release Notes" (PDF). redhat.com.
- ^ 1732114 – Modify Fedora 31 to use CgroupsV2 by default. bugzilla.redhat.com. [2024-02-29].