Hadoop的CPU可以采用cgroup来控制,在默认的情况下NodeManager不会对CPU资源进行任何控制,但是可以通过配置cgroup来支持对CPU的控制。下面可以通过转载的这篇文章对cgroup有一个简单的了解,转载地址:
http://www.cnblogs.com/yjf512/p/3298582.html为什么要有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
分享到:
相关推荐
演示了 Docker 虚拟化的基础技术之一:Linux Cgroup 以及 该技术在智能手机 IO 优化方面的潜在应用。 2015/04/26 @ 泰晓沙龙 第二期
Linux下cgroup以及namespces相关知识,包括资源隔离与限制等
节点组 node.js通过Linux cgroup支持进程包含 笔记
cgroup-linux内存资源管理.pdf cgroup-linux内存资源管理.pdf cgroup-linux内存资源管理.pdf cgroup-linux内存资源管理.pdf cgroup-linux内存资源管理.pdf cgroup-linux内存资源管理.pdf cgroup-linux内存资源管理....
主要介绍了docker cgroup 资源监控的详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
Linux/Android cgroup架构分析研究总结 proc节点,控制命令和含义。
cgroup原理和实现,Cgroups 是 control groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组 (process groups)所使用的物理资源(如:cpu,memory,IO 等等)的机制。最初由 google 的 工程师提出,后来被...
控制群组(control group)(在此指南中简写为 cgroup)是 Linux kernel 的一项功能:在一个系统中运行的层级制进程组,您可对其进行资源分配(如 CPU 时间、系统内存、网络带宽或者这些资源的组合)。通过使用 ...
上一篇文章将到 Docker 容器使用 linux namespace 来隔离其... Linux Cgroup 可让您为系统中所运行任务(进程)的用
1. 我擦,内存用了好多,6个多G,可是我什么都没有运行啊 2. 嗯,根据我专业的眼光看出来,内存才用了1G多点,还有很多剩余内存可用 3. free显示的是这
Linux运维-运维课程MP4频-05容器-08Cgroup限制进程对memory使用案例.mp4
env/bin/activatepip install -r requirementsBoot2docker 安装 boot2docker sshgit clone <this> docker_cgroup_infowget http://www.tinycorelinux.net/5.x/x86/tcz/python.tcz && tce-load -i python.tcz && r
该文档来自于Docker Meetup深圳站的活动,Linux内核Maintainer李泽帆带来了关于cgroups内核特性的话题。
用于LXC技术在arm平台上移植的linux内核文件,已开启cgroup和命名空间等必要选项,已在zynq7045平台上成功使用 1、将uImage传输到路由器板子任意路径,如~/ 2、将EMMC加载到系统,命令: mount /dev/mmcblk0p1 /mnt ...
cgroups -fs用于管理Linux控制组(cgroup)的Native Rust库。 当前,此板条箱仅支持原始的V1层次结构。 您是cgroups-fs Native Rust库,用于管理Linux控制组(cgroups)。 当前,此板条箱仅支持原始的V1层次结构。 ...
Linux中的QoS分为入口(Ingress)部分和出口(Egress)部分,入口部分主要用于进行入口流量限速(policing),出口部分主要 用于队列调度(queuing scheduling)。 大多数排队规则(qdisc)都是用于输出方向的,输入方向只有一...
cgroups(Control Groups) 是 linux 内核提供的一种机制,这种机制可以根据需求把一系列系统任务及其子任务整合(或分隔)到按资源划分等级的不同组内,从而为系统资源管理提供一个统一的框架。这篇文章主要介绍了linux...
沙盒在 Linux 上使用 cgroups 和 Apparmor 对 ruby 内容进行沙箱处理的原型。盒子所有库都捆绑在一起Apparmor 禁止网络,删除功能磁盘几乎是隐藏的,只有 ruby 工具和代码可以读取。 UNIX 套接字是唯一可写...
Linux磁盘扩容 df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 197G 2.3G 195G 2% / devtmpfs 7.8G 0 7.8G 0% /dev tmpfs 7.8G 0 7.8G 0% /dev/shm tmpfs 7.8G 8.5M 7.8G 1% /run tmpfs...