`
qianshangding
  • 浏览: 127791 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Linux的Cgroup

 
阅读更多
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)来显示已经挂载的子系统:

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

参考文章

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 技术 与 智能手机系统 IO 优化

    Linux Cgroups(控制组)技术是Linux内核的一个功能,旨在限制、记录、隔离和优先级设定进程组对系统资源(如CPU、内存、磁盘IO和网络等)的使用。此技术自2006年由Google的工程师(主要是Paul Menage和Rohit Seth)...

    Linux下cgroup

    Linux下的cgroups(控制组,Control Groups)是一种强大的系统机制,用于实现进程资源的管理和隔离。它允许系统管理员对进程进行细粒度的资源限制、隔离、配额和优先级控制,包括CPU时间、内存使用、磁盘I/O、网络...

    docker cgroup 资源监控的详解

    cgroup是Linux内核的一个特性,它允许系统管理员对一组进程的资源使用情况进行限制、记录和隔离。通过将一组进程分配到不同的cgroup中,系统管理员可以分别控制这些进程可以使用的资源,例如CPU、内存、磁盘I/O等。 ...

    node-cgroups:node.js通过Linux cgroup支持进程包含

    在IT领域,尤其是在系统管理和资源调度方面,Linux控制组(Control Groups,简称cgroups)是一项至关重要的技术。Node.js作为一款流行的JavaScript运行环境,通过`node-cgroups`模块,为开发者提供了利用cgroups管理...

    cgroup-linux内存资源管理.pdf

    Linux内核中的CGroup(Control Groups)是一种强大的系统资源管理工具,特别用于限制、记录和隔离进程组的资源使用,包括内存资源。在Linux环境中,有效地管理内存对于系统的性能和稳定性至关重要。CGroup的内存子...

    藏经阁-FreeWheel 大数据处理实践.pdf

    15. Linux CGroup 隔离:FreeWheel 的 Linux CGroup 隔离功能可以帮助客户对计算服务和核⼼服务进行资源隔离和管理,提高计算效率和资源利用率。 16. tc htb 类别控制:FreeWheel 的 tc htb 类别控制功能可以帮助...

    Linux/Android cgroup架构分析研究总结

    Linux/Android cgroup架构是操作系统中用于管理进程资源限制的关键机制。cgroup,全称为control groups,它允许管理员或系统设定一组进程的资源使用限制,包括CPU、内存、磁盘I/O、网络带宽等。在Linux内核中,...

    cgroup原理和实现

    cgroup原理和实现,Cgroups 是 control groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组 (process groups)所使用的物理资源(如:cpu,memory,IO 等等)的机制。最初由 google 的 工程师提出,后来被...

    cgroup-linux内存资源管理1

    在深入理解Cgroup的内存资源管理之前,我们首先需要了解Linux操作系统是如何管理和使用内存的。Linux的内存管理系统复杂而精细,它包括了多种内存区域,如缓冲区(buffers)、缓存(cache)以及交换空间(swap)。`...

    智慧大数据中心总体建设方案.pptx

    多维度的多租户管理则允许不同部门或团队共享资源,通过Linux cgroup容器机制实现资源隔离,保证服务质量和SLA。 在数据分析方面,FusionInsight Hadoop发行版提供了强大的数据处理能力,FusionInsight MPP并行...

    通过cgroup来限制KVM虚拟机使用的cpu和内存性能调优实践

    控制群组(control group)(在此指南中简写为 cgroup)是 Linux kernel 的一项功能:在一个系统中运行的层级制进程组,您可对其进行资源分配(如 CPU 时间、系统内存、网络带宽或者这些资源的组合)。通过使用 ...

    Cgroup - 从 CPU 资源隔离说起.docx

    Cgroup(Control Group)是一种 Linux 内核机制,用于对系统资源进行隔离和限制。其中,CPU 资源隔离是 Cgroup 中的一种重要机制,用于控制进程对 CPU 资源的占用和分配。在本文中,我们将详细介绍 Cgroup 在 CPU ...

    Greenplum技术深入介绍及产品规划.pptx

    它允许指定用户组的最大CPU、内存和并发数,并通过Linux Cgroup实现磁盘配额,特别是在多租户场景下,磁盘配额成为服务级别协议(SLA)的一部分。 **快速集群扩展** Greenplum 6.0还引入了一种新的一致性哈希算法...

    李泽帆:Cgroup的过去、现状和开发计划

    cgroups的使用涉及到层次结构,创建和使用cgroup的步骤包括挂载cgroup文件系统(cgroupfs)、创建cgroup目录、配置cgroup、将进程添加到cgroup以及运行和删除cgroup。用户态接口提供了与cgroups交互的工具和方法。 ...

    淘宝主站Cgroup资源控制实践

    Cgroup(Control Groups)是Linux内核提供的一种用于资源管理和隔离的技术,它可以将多个进程组织成一个组,并对这些组的资源使用进行限制或监控。Cgroup支持多种不同的资源控制器,例如: - **cpuset子控制器:** ...

    hugetlb_cgroup.rar_cgroup hugetlb

    "hugetlb_cgroup.rar_cgroup hugetlb"这个标题提到了cgroups与hugetlbfs的结合,hugetlbfs是Linux内核提供的一种特殊的文件系统,用于支持大页内存(hugepages)。大页内存是一种优化内存分配的技术,它可以减少内存...

    Performance - cgroup介绍

    cgroup 名词是 Linux 下一种将进程按组管理的机制,在用户层面看,cgroup 技术就是可以把系统中的所有进程组织成一颗独立的树,每颗树都包含系统所有进程,树的每个节点就是一个进程组,而每颗树又和一个或者多个 ...

Global site tag (gtag.js) - Google Analytics