搜索
简帛阁>技术文章>cgroup学习(1)

cgroup学习(1)

cgroup概念和介绍

1、什么是cgroup
Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等)。这个项目最早是由Google的工程师在2006年发起(主要是Paul Menage和Rohit Seth),最早的名称为进程容器(process containers)。在2007年时,因为在Linux内核中,容器(container)这个名词太过广泛,为避免混乱,被重命名为cgroup,并且被合并到2.6.24版的内核中去。然后,其它开始了他的发展。

Linux CGroupCgroup 可​​​让​​​您​​​为​​​系​​​统​​​中​​​所​​​运​​​行​​​任​​​务​​​(进​​​程​​​)的​​​用​​​户​​​定​​​义​​​组​​​群​​​分​​​配​​​资​​​源​​​ — 比​​​如​​​ CPU 时​​​间​​​、​​​系​​​统​​​内​​​存​​​、​​​网​​​络​​​带​​​宽​​​或​​​者​​​这​​​些​​​资​​​源​​​的​​​组​​​合​​​。​​​您​​​可​​​以​​​监​​​控​​​您​​​配​​​置​​​的​​​ cgroup,拒​​​绝​​​ cgroup 访​​​问​​​某​​​些​​​资​​​源​​​,甚​​​至​​​在​​​运​​​行​​​的​​​系​​​统​​​中​​​动​​​态​​​配​​​置​​​您​​​的​​​ cgroup。

cgroup ,控制组,它提供了一套机制用于控制一组特定进程对资源的使用。cgroup绑定一个进程集合到一个或多个子系统上。

2、cgroup相关概念

  • subsystem,cgroup子系统
    cgroup子系统是通过cgroup提供的工具和接口来管理进程集合的模块。一个子系统就是一个典型的“资源控制器”,用来调度资源或者控制资源使用的上限。一个子系统就是一个资源控制器,比如 cpu 子系统就是控制 cpu 时间分配的一个控制器。子系统必须附加(attach)到一个层级树节点上才能起作用,一个子系统附加到某个层级以后,这个层级上的所有进程都受到这个子系统的控制。

可以通过查看/proc/cgroups(since Linux 2.6.24)知道当前系统支持哪些subsystem

1、cpu 子系统,主要限制进程的 cpu 使用率。
2、cpuacct 子系统,可以统计 cgroups 中的进程的 cpu 使用报告。
3、cpuset 子系统,可以为 cgroups 中的进程分配单独的 cpu 节点或者内存节点。
4、memory 子系统,可以限制进程的 memory 使用量。
5、blkio 子系统,可以限制进程的块设备 io。
6、devices 子系统,可以控制进程能够访问某些设备。
7、net_cls 子系统,可以标记 cgroups 中进程的网络数据包,然后可以使用 tc 模块(traffic control)对数据包进行控制。
8、net_prio — 这个子系统用来设计网络流量的优先级
9、freezer 子系统,可以挂起或者恢复 cgroups 中的进程。
10、ns 子系统,可以使不同 cgroups 下面的进程使用不同的 namespace
11、hugetlb — 这个子系统主要针对于HugeTLB系统进行限制,这是一个大页文件系统。

这里是引用

  • hierarchy,cgroup层级结构
    cgroup层级结构是多个cgroup的集合,这些集合构成的树叫hierarchy。可以认为这是一个资源树,附着在这上面的进程可以使用的资源上限必须受树上节点关联的cgroup子系统控制器的控制。hierarchy上的层次关系通过cgroupfs虚拟文件系统显示。系统允许多个hierarchy同时存在,每个hierachy包含系统中的部分或者全部进程集合

相关链接:
LINUX CGROUP总结
cgroup从入门到懵圈——cgroup概念
Linux Cgroup系列(01):Cgroup概述
Cgroups 与 Systemd
linux kernel cgroups

cgroup概念和介绍1、什么是cgroupLinuxCGroup全称LinuxControlGroup,是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输
试环境centos7,内核版本420内核使用cgroup对进程进行分组,并限制进程资源和对进程进行跟踪。内核通过名为cgroupfs类型的虚拟文件系统来提供cgroup功能接口。cgroup有如下2
前置:这里使用的linux版本是48,x86体系。cgroup_init_early();聊这个函数就需要先了解cgroupcgroup概念这个函数就是初始化cgroup所需要的参数的。cgroup
1、导言:Linux系统每个进程都可以自由竞争系统资源,有时候会导致一些次要进程占用了系统某个资源(如CPU的绝大部分,主要进程就不能很好地执行,从而影响系统效率,重则在linux资源耗尽时可能会
inuxcgroupLinuxCGroup全称LinuxControlGroup,是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等。LinuxCG
标题Docker容器技术基础进程隔离与限制容器技术的兴起起源于PaaS技术的普及,Docker项目对此具有里程碑式的意义,Docker项目通过容器镜像解决应用打包这个根本性难题。接下来通过Linux操
cgroups(ControlGroups)是linux内核提供的一种机制,这种机制可以根据需求把一系列系统任务及其子任务整合(或分隔)到按资源划分等级的不同组内,从而为系统资源管理提供一个统一的框架
RunC源码通读指南之CgroupRunC源码通读指南之NameSpacelibcontainer/process_linuxgo:282func(p*initProcess)start()error
首先在cpu子系统下面创建了一个halfapi的子节点:cgcreateabc:abcgcpu:halfapi。然后在配置文件中写入配置数据:echo50000>/cgroup/cpu/half
Cgroups控制系统资源的分配(cpu、mem、io1cgroups概述CGroup是Linux内核提供的可以限制、隔离进程组(processgroups)所使用的物理资源(如cpumemor