2019独角兽企业重金招聘Python工程师标准>>>

Cgroup 是Control groups的缩写,是Linux内核提供的一种可以限制,记录,隔离进程组所使用的物理资源,如

:CPU,Memory,IO等, 最初在Google被使用。最终被整合到了Linux的内核。groups也是LXC为实现虚拟化所使用的资源管理

手段,可以说没有cgroups就没有LXC。

Cgroups最初的目标是为资源管理提供的一个统一的框架,既整合现有的cpuset等子系统,也为未来开发新的子系统提供接口。现在的cgroups适用于多种应用场景,从单个进程的资源控制,到实现操作系统层次的虚拟化(OS Level Virtualization)。Cgroups提供了以下功能:

1.限制进程组可以使用的资源数量(Resource limiting )。比如:memory子系统可以为进程组设定一个memory使用上限,一旦进程组使用的内存达到限额再申请内存,就会出发OOM(out of memory)。

2.进程组的优先级控制(Prioritization )。比如:可以使用cpu子系统为某个进程组分配特定cpu share。

3.记录进程组使用的资源数量(Accounting )。比如:可以使用cpuacct子系统记录某个进程组使用的cpu时间

4.进程组隔离(Isolation)。比如:使用ns子系统可以使不同的进程组使用不同的namespace,以达到隔离的目的,不同的进程组有各自的进程、网络、文件系统挂载空间。

5.进程组控制(Control)。比如:使用freezer子系统可以将进程组挂起和恢复。

2相关概念及其关系

相关概念

1.任务(task)。在cgroups中,任务就是系统的一个进程。

2.控制族群(control group)。控制族群就是一组按照某种标准划分的进程。Cgroups中的资源控制都是以控制族群为单位实现。一个进程可以加入到某个控制族群,也从一个进程组迁移到另一个控制族群。一个进程组的进程可以使用cgroups以控制族群为单位分配的资源,同时受到cgroups以控制族群为单位设定的限制。

3.层级(hierarchy)。控制族群可以组织成hierarchical的形式,既一颗控制族群树。控制族群树上的子节点控制族群是父节点控制族群的孩子,继承父控制族群的特定的属性。

4.子系统(subsystem)。一个子系统就是一个资源控制器,比如cpu子系统就是控制cpu时间分配的一个控制器。子系统必须附加(attach)到一个层级上才能起作用,一个子系统附加到某个层级以后,这个层级上的所有控制族群都受到这个子系统的控制。

相互关系

1.每次在系统中创建新层级时,该系统中的所有任务都是那个层级的默认 cgroup(我们称之为 root cgroup ,此cgroup在创建层级时自动创建,后面在该层级中创建的cgroup都是此cgroup的后代)的初始成员。

2.一个子系统最多只能附加到一个层级。

3.一个层级可以附加多个子系统

4.一个任务可以是多个cgroup的成员,但是这些cgroup必须在不同的层级。

5.系统中的进程(任务)创建子进程(任务)时,该子任务自动成为其父进程所在 cgroup 的成员。然后可根据需要将该子任务移动到不同的 cgroup 中,但开始时它总是继承其父任务的cgroup。

3子系统介绍

blkio -- 这个子系统为块设备设定输入/输出限制,比如物理设备(磁盘,固态硬盘,USB 等等)。

cpu -- 这个子系统使用调度程序提供对 CPU 的 cgroup 任务访问。

cpuacct -- 这个子系统自动生成 cgroup 中任务所使用的 CPU 报告。

cpuset -- 这个子系统为 cgroup 中的任务分配独立 CPU(在多核系统)和内存节点。

devices -- 这个子系统可允许或者拒绝 cgroup 中的任务访问设备。

freezer -- 这个子系统挂起或者恢复 cgroup 中的任务。

memory -- 这个子系统设定 cgroup 中任务使用的内存限制,并自动生成由那些任务使用的内存资源报告。

net_cls -- 这个子系统使用等级识别符(classid)标记网络数据包,可允许 Linux 流量控制程序(tc)识别从具体 cgroup 中生成的数据包。

ns -- 名称空间子系统。

设计服务器,我的认知比较粗浅,如需要更为深入的研究,您可以访问如下:

1:

Linux cgroup机制分析之框架分析

2:

Cgroup用法解析-flycentos-ChinaUnix博客

转载于:https://my.oschina.net/infiniteSpace/blog/332859

Linux 【系统知识】 - Cgroup 初步了解相关推荐

  1. ubuntu/linux系统知识(36)linux网卡命名规则

    文章目录 背景 命名规范 系统默认命名规则 优势 背景 很久以前Linux 操作系统的网卡设备的传统命名方式是 eth0.eth1.eth2等,属于biosdevname 命名规范. 服务器通常有多块 ...

  2. 【实用】Linux系统知识小汇

    命令与配置 提示:一个知识点以多种方式来问答,才能更牢固的记忆,某些命令多实际操作,方可轻松记住. 执行(kill -9 0或kill -kill 0)命令可以使用户退出系统返回到login状态 在s ...

  3. ubuntu/linux系统知识(17)图形化的包管理工具Synaptic

    文章目录 Synaptic 软件包管理器是什么? 为什么你要使用像 Synaptic 软件包管理器这样的 "古老的" 软件? Synaptic 软件包管理器的功能 如何在 Ubun ...

  4. Linux系统知识全景个人笔记(一)——Linux结构与组成

    本章全景图如下,本次笔记分6次更新,通过6个篇章熟悉linux基础命令 一:Linux的组成 Linux的组成分为4个部分,常用的说法为:内核,Shell,文件系统与应用程序.这4个部分组成操作系统, ...

  5. ubuntu/linux系统知识(21)Ubuntu 22.04 个性化配置dock(应用程序启动栏)

    文章目录 Ubuntu 22.04 设置中的基本自定义 结束的想法 在本文中,我们将向您展示一些在Ubuntu 22.04 Jammy Jellyfish Linux 上自定义GNOME 桌面环境自带 ...

  6. linux系统知识 - 信号基础

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 参考链接 http://www.cnblogs.com/vamei/archive ...

  7. ubuntu/linux系统知识(6)Ubuntu安装软件的n种方法,你都会吗

    提示:本文经奇妙之二进制二次编辑和审核, 修正了一些错误,包括但不限于错别字,语句不通顺,代码编译不过,命令书写错误,图片缺失,排版优化等. 文章目录 一. 直接在`Ubuntu软件商店`安装 二. ...

  8. ubuntu/linux系统知识(7)Ubuntu国内镜像快速下载(华为云、阿里云、东莞理工)

    华为云镜像地址: http://mirrors.huaweicloud.com/repository/ubuntu-releases/ 阿里云镜像地址: http://mirrors.aliyun.c ...

  9. ubuntu/linux系统知识(25)ubuntu录屏软件含声音obs天下第一

    官网: obs是跨平台的,开源免费的视频录制.在线推流软件.功能着实强大,支持屏幕录制.窗口录制.摄像头录制.声音录制.直播推送,以及各种视频源和音频源的整合. 安装 sudo add-apt-rep ...

  10. ubuntu/linux系统知识(10)ubuntu打开终端的n种方式你都会吗

最新文章

  1. 深度解析Google Java 编程风格指南
  2. matlab gui创建,Matlab创建GUI
  3. Redis-Session无状态会话技术
  4. #386. 【UNR #3】鸽子固定器
  5. JS常用属性方法大全
  6. 关于如何将轮播图在移动端和pc端自适应的操作
  7. 将Amazon Cognito与单页面应用程序(Vue.js)集成
  8. 抽一个读者,送她一台MacBook!
  9. (转帖)如何在DE2上安裝μClinux作業系統? (Nios II )
  10. 云计算解决方案--百度文库
  11. c语言中不带任何修饰符的浮点常量是按,C语言练习题参考答案
  12. h3c交换机重启_华三交换机重启命令(范文篇).doc
  13. 【知识兔】Excel教程与数值或日期相关的8个快捷键,绝对实用,收藏备用
  14. ARM 编译工具keil 和 IAR 命令行编译和下载
  15. cad 工程师绘图技巧 (一)
  16. 深入剖析Tomcat第一章ERR_INVALID_HTTP_RESPONSE
  17. 集群、分布式、负载均衡区别(转)
  18. R语言客户端RStudio快捷键大全
  19. 企业4A架构--TOGAF
  20. python的枚举和for循环_python学习笔记4---分支、循环、条件与枚举

热门文章

  1. 本篇文章使用vue结合element-ui开发tab切换vue的不同组件,每一个tab切换的都是一个新的组件。
  2. c语言第三章作业3.13,2012年计算机等级二级C语言章节习题及答案(13)
  3. linux 内核dump,linux内核调试技巧之一 dump_stack【转】
  4. php 网路io是什么意思,io接口位于什么和什么之间
  5. Matplotlib从入门到精通
  6. 数据挖掘十大算法之C4.5
  7. 高频交易的思路模型简介
  8. 权重确定方法之主成分分析法
  9. 系统学习NLP(二十六)--NBSVM
  10. oracle连表图解,oracle 表连接方式解析