Linux的Cgroup
来源:互联网 发布:非诚勿扰杨宇航淘宝店 编辑:程序博客网 时间:2024/05/29 07:54
为什么要有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)来显示已经挂载的子系统:
可以看到这里的几个子系统,比如cpu是控制cpu时间片的,memory是控制内存使用的。
如何安装cgroup
安装cgroup:
apt-get install cgroup-bin
如何为cgroup分配限制的资源
首先明白下,是先挂载子系统,然后才有control group的。意思就是比如想限制某些进程的资源,那么,我会先挂载memory子系统,然后在memory子系统中创建一个cgroup节点,在这个节点中,将需要控制的进程id写入,并且将控制的属性写入。
拿memory子系统为例:
通过查看cgroup的配置文件:
cat /etc/cgconfig.conf
看到memory子系统是挂载在目录/sys/fs/cgroup/memory下
进入这个目录
创建一个文件夹,就创建了一个control group了
mkdir test
发现test目录下自动创建了许多文件:
这些文件的含义如下:
于是,限制内存使用我们就可以设置memory.limit_in_bytes
将一个进程加入到这个test中
echo $$ > tasks
这样就将当前这个终端进程加入到了内存限制的cgroup中了。
将这个cgroup删除只要删除目录就行了
rmdir test
参考文章
http://www.cnblogs.com/lisperl/archive/2012/04/17/2453838.html
http://www.cnblogs.com/lisperl/archive/2012/04/15/2450183.html
http://www.cnblogs.com/lisperl/archive/2012/04/18/2455027.html
http://blog.chinaunix.net/uid-20940095-id-3294134.html
- Linux的Cgroup
- Linux的Cgroup
- Linux Cgroup
- linux cgroup
- Linux cgroup
- linux的qos机制 - cgroup篇 (1)
- linux的qos机制 - cgroup篇 (2)
- linux的qos机制 - cgroup篇 (3)
- linux的qos机制 - cgroup篇 (4)
- linux的qos机制 - cgroup篇 (3)
- Cgroup - Linux 的 IO 资源隔离
- linux cgroup 学习的一些总结
- cgroup在Linux/Android几篇文章(主要关注cgroup在Android、Linux上的应用)
- linux cgroup详解
- Linux Cgroup cpu子系统
- Linux Cgroup详解
- Cgroup - Linux 内存资源管理
- LINUX CGROUP 概述
- respond.js IE8使用
- 玲珑杯1151
- win FlashFxp与ubuntu vsftpd共享文件
- Spring AspectJ JDBC Template
- PAT 乙级 1003
- Linux的Cgroup
- 最正确的姿势安装cudnn,网上大多数教程都太坑了
- Android高效加载大图,多图解决方案,有效避免OOM
- python 学习笔记
- linux下的虚拟内存和分页分段机制
- HDU 6061 RXD and functions(NTT+卷积)
- Android 开发之初识Kotlin
- 剑指offer:树的子结构
- 【LeetCode】004. Median of Two Sorted Arrays