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
分享到:
相关推荐
Linux Cgroups(控制组)技术是Linux内核的一个功能,旨在限制、记录、隔离和优先级设定进程组对系统资源(如CPU、内存、磁盘IO和网络等)的使用。此技术自2006年由Google的工程师(主要是Paul Menage和Rohit Seth)...
Linux下的cgroups(控制组,Control Groups)是一种强大的系统机制,用于实现进程资源的管理和隔离。它允许系统管理员对进程进行细粒度的资源限制、隔离、配额和优先级控制,包括CPU时间、内存使用、磁盘I/O、网络...
cgroup是Linux内核的一个特性,它允许系统管理员对一组进程的资源使用情况进行限制、记录和隔离。通过将一组进程分配到不同的cgroup中,系统管理员可以分别控制这些进程可以使用的资源,例如CPU、内存、磁盘I/O等。 ...
在IT领域,尤其是在系统管理和资源调度方面,Linux控制组(Control Groups,简称cgroups)是一项至关重要的技术。Node.js作为一款流行的JavaScript运行环境,通过`node-cgroups`模块,为开发者提供了利用cgroups管理...
Linux内核中的CGroup(Control Groups)是一种强大的系统资源管理工具,特别用于限制、记录和隔离进程组的资源使用,包括内存资源。在Linux环境中,有效地管理内存对于系统的性能和稳定性至关重要。CGroup的内存子...
15. Linux CGroup 隔离:FreeWheel 的 Linux CGroup 隔离功能可以帮助客户对计算服务和核⼼服务进行资源隔离和管理,提高计算效率和资源利用率。 16. tc htb 类别控制:FreeWheel 的 tc htb 类别控制功能可以帮助...
Linux/Android cgroup架构是操作系统中用于管理进程资源限制的关键机制。cgroup,全称为control groups,它允许管理员或系统设定一组进程的资源使用限制,包括CPU、内存、磁盘I/O、网络带宽等。在Linux内核中,...
cgroup原理和实现,Cgroups 是 control groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组 (process groups)所使用的物理资源(如:cpu,memory,IO 等等)的机制。最初由 google 的 工程师提出,后来被...
在深入理解Cgroup的内存资源管理之前,我们首先需要了解Linux操作系统是如何管理和使用内存的。Linux的内存管理系统复杂而精细,它包括了多种内存区域,如缓冲区(buffers)、缓存(cache)以及交换空间(swap)。`...
多维度的多租户管理则允许不同部门或团队共享资源,通过Linux cgroup容器机制实现资源隔离,保证服务质量和SLA。 在数据分析方面,FusionInsight Hadoop发行版提供了强大的数据处理能力,FusionInsight MPP并行...
控制群组(control group)(在此指南中简写为 cgroup)是 Linux kernel 的一项功能:在一个系统中运行的层级制进程组,您可对其进行资源分配(如 CPU 时间、系统内存、网络带宽或者这些资源的组合)。通过使用 ...
Cgroup(Control Group)是一种 Linux 内核机制,用于对系统资源进行隔离和限制。其中,CPU 资源隔离是 Cgroup 中的一种重要机制,用于控制进程对 CPU 资源的占用和分配。在本文中,我们将详细介绍 Cgroup 在 CPU ...
它允许指定用户组的最大CPU、内存和并发数,并通过Linux Cgroup实现磁盘配额,特别是在多租户场景下,磁盘配额成为服务级别协议(SLA)的一部分。 **快速集群扩展** Greenplum 6.0还引入了一种新的一致性哈希算法...
cgroups的使用涉及到层次结构,创建和使用cgroup的步骤包括挂载cgroup文件系统(cgroupfs)、创建cgroup目录、配置cgroup、将进程添加到cgroup以及运行和删除cgroup。用户态接口提供了与cgroups交互的工具和方法。 ...
Cgroup(Control Groups)是Linux内核提供的一种用于资源管理和隔离的技术,它可以将多个进程组织成一个组,并对这些组的资源使用进行限制或监控。Cgroup支持多种不同的资源控制器,例如: - **cpuset子控制器:** ...
"hugetlb_cgroup.rar_cgroup hugetlb"这个标题提到了cgroups与hugetlbfs的结合,hugetlbfs是Linux内核提供的一种特殊的文件系统,用于支持大页内存(hugepages)。大页内存是一种优化内存分配的技术,它可以减少内存...
cgroup 名词是 Linux 下一种将进程按组管理的机制,在用户层面看,cgroup 技术就是可以把系统中的所有进程组织成一颗独立的树,每颗树都包含系统所有进程,树的每个节点就是一个进程组,而每颗树又和一个或者多个 ...