cgroup小记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cgroup小记相关的知识,希望对你有一定的参考价值。

参考技术A 无脑记录了一些cgroup的信息,后续整理

Cgroups (Control Groups)是 Linux 下用于对一个或一组进程进行资源控制和监控的机制;
可以对诸如 CPU 使用时间、内存、磁盘 I/O 等进程所需的资源进行限制;
不同资源的具体管理工作由相应的 Cgroup 子系统(Subsystem)来实现 ;
针对不同类型的资源限制,只要将限制策略在不同的的子系统上进行关联即可 ;
Cgroups 在不同的系统资源管理子系统中以层级树(Hierarchy)的方式来组织管理:每个Cgroup 都可以 包含其他的子 Cgroup,因此子 Cgroup 能使用的资源除了受本 Cgroup 配置的资源参数限制,还受到父 Cgroup 设置的资源限制 。

cpu: 这个子系统使用调度程序为cgroup任务提供CPU的访问

cpuacct: 产生 cgroup 任务的 CPU 资源报告

cpuset: 如果是多核心的 CPU,这个子系统会为 cgroup 任务分配单独的 CPU 和内存

devices: 允许或拒绝 cgroup 任务对设备的访问

freezer: 暂停和恢复cgroup任务

memory:设置每个 cgroup 的内存限制以及产生内存资源报告

net_cls:标记每个网络包以供cgroup方便使用

ns:名称空间子系统

pid:进程标识子系统

• memory.usage_in_bytes
cgroup 下进程使用的内存,包含 cgroup 及其子 cgroup 下的进程使用的内存

• memory.max_usage_in_bytes
cgroup 下进程使用内存的最大值,包含子 cgroup 的内存使用量。

• memory.limit_in_bytes
设置 Cgroup 下进程最多能使用的内存。如果设置为 -1,表示对该 cgroup 的内存使用不做限制。

进程的内存使用量超过了cgroup 管控的 limit_in_bytes 的限定值,就会被系统kill掉

• memory.soft_limit_in_bytes
这个限制并不会阻止进程使用超过限额的内存,只是在系统内存足够时,会优先回收超过限额的内存,使之向限定值靠拢

• memory.oom_control
设置是否在 Cgroup 中使用 OOM(Out of Memory)Killer,默认为使用。当属于该 cgroup 的进程使用的内存超 过最大的限定值时,会立刻被 OOM Killer 处理。

以上是关于cgroup小记的主要内容,如果未能解决你的问题,请参考以下文章

cgroup

CGroup原理篇V11.2 CGroup的用法

CGroup原理篇V11.3 CGroup Kernel API介绍

CGroup系列三CGroup使用指南

cgroup限制内存

Linux容器:cgroup,namespace原理与实现