Linux的Cgroup

简介:

为什么要有cgroup

Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源。也就是能完成一组容器的概念,在这个容器中,有分配好的特定比例的cpu时间,IO时间,可用内存大小等。于是就出现了cgroup的概念,cgroup就是controller group,最初由google的工程师提出,后来被整合进Linux内核中。

Cgroup是将任意进程进行分组化管理的Linux内核功能。cgroup本身提供将进程进行分组化管理的功能和接口的基础结构。

而后的Android操作系统也就凭借着这个技术,为每个应用程序分配不同的cgroup,将每个程序进行隔离,达到了一个应用程序不会影响其他应用程序环境的目的。

概念

task:

一个进程

control group:

控制族群,按照某种标准划分的进程组

hierarchy:

层级,control group可以形成树形的结构,有父节点,子节点,每个节点都是一个control group,子节点继承父节点的特定属性。

subsystem:

子系统。

子系统就是资源控制器,每种子系统就是一个资源的分配器,比如cpu子系统是控制cpu时间分配的。

可以使用lssubsys -al来列出系统支持多少种子系统,和使用ls /sys/fs/cgroup/ (ubuntu)来显示已经挂载的子系统:

Image(6)

可以看到这里的几个子系统,比如cpu是控制cpu时间片的,memory是控制内存使用的。

如何安装cgroup

安装cgroup:

apt-get install cgroup-bin

如何为cgroup分配限制的资源

首先明白下,是先挂载子系统,然后才有control group的。意思就是比如想限制某些进程的资源,那么,我会先挂载memory子系统,然后在memory子系统中创建一个cgroup节点,在这个节点中,将需要控制的进程id写入,并且将控制的属性写入。

拿memory子系统为例:

通过查看cgroup的配置文件:

cat /etc/cgconfig.conf

Image(7)

看到memory子系统是挂载在目录/sys/fs/cgroup/memory下

进入这个目录

创建一个文件夹,就创建了一个control group了

mkdir test

发现test目录下自动创建了许多文件:

Image(8)

这些文件的含义如下:

Image(9)

于是,限制内存使用我们就可以设置memory.limit_in_bytes

Image(10)

将一个进程加入到这个test中

echo $$ > tasks

这样就将当前这个终端进程加入到了内存限制的cgroup中了。

将这个cgroup删除只要删除目录就行了

rmdir test

目录
相关文章
|
7月前
|
Java Unix Linux
|
4月前
|
Linux 调度 开发工具
初识Linux
Linux 和 操作系统简介
|
7月前
|
Java Linux 应用服务中间件
|
10月前
|
网络协议 Linux Shell
Linux criu
Linux criu
380 0
|
10月前
|
Linux 网络安全 开发工具
Linux(超详细)
1.Linux简介 2.Linux安装 安装方式介绍
|
缓存 Java Unix
Linux 常见必备
Linux 常见必备
166 0
Linux 常见必备
|
Shell Linux
linux就该这么学3
vim 三种模式:命令,输入,末行 多练多熟悉 配置网卡信息 网卡重启: systemctl restart network shell 脚本 一般分两种:交互式  输入一条命令就执行一条       批处理     编写一个脚本,里面包含很多命令,执行脚本就执行完所有命令。
720 0
|
Linux 开发工具
Linux wired unmanageed
这是一个有线连接无法时行图形化界面管理的问题 在状态栏上有线连接的图标显示为 wired unmanageed image.png 插上网线也不知道是什么情况,这时要对它的配置文件进行设置一下 打开网络管理器的配置文件 huanyu@ubuntu:/etc/NetworkManager$ sudo vim NetworkManager.
1298 0
|
Linux
linux|管道符号
|管道符是什么:把前一个命令的输出结果输出给下一个命令使用。 为什么有管道符:对结果进行过滤。 使用方法: image.png 总结: image.png
949 0

热门文章

最新文章