当前位置: 首页 > news >正文

工信部企业网站备案/成人计算机速成培训班

工信部企业网站备案,成人计算机速成培训班,内衣网站建设推广,微网站如何做横幅链接Cgroup(Control Groups)是这样一种机制:它以分组的形式对进程使用系统资源的行为进行管理和控制。也就是说,用户通过cgroup对所有进程进行分组,再对该分组整体进行资源的分配和控制。 1 Cgroup的结构 cgroup中的每个分…

Cgroup(Control Groups)是这样一种机制:它以分组的形式对进程使用系统资源的行为进行管理和控制。也就是说,用户通过cgroup对所有进程进行分组,再对该分组整体进行资源的分配和控制。

1 Cgroup的结构

cgroup中的每个分组称为进程组,它包含多个进程。最初情况下,系统内的所有进程形成一个进程组(根进程组),根据系统对资源的需求,这个根进程组将被进一步细分为子进程组,子进程组内的进程是根进程组内进程的子集。而这些子进程组很有可能继续被进一步细分,最终,系统内所有的进程组形成一颗具有层次等级(hierarchy)关系的进程组树。如下图:

cgroup_tree

由于进程组可以被进一步划分,因此一个进程可能处于多个进程组中,但这些进程组必然不处于同一层级中。

另外,如果某个进程组内的进程创建了子进程,那么该子进程默认与父进程处于同一进程组中。也就是说,cgroup对改进程组的资源控制同样作用于子进程。

2 subsystem

cgroup是一种对进程资源管理和控制的统一框架,它提供的是一种机制(mechanism),而具体的策略(policy)是通过子系统(subsystem)来完成的,子系统是cgroup对进程组进行资源控制的具体行为。机制和策略是Linux操作系统中一种经典的设计思想,所谓机制就是“我要提供哪种功能”,而策略则是“我要怎样来实现这种功能”。

cgroup中每个子系统都代表一种类型的资源,具体如下:

1) cpu子系统:该子系统为每个进程组设置一个使用CPU的权重值,以此来管理进程对cpu的访问。

2) cpuset子系统:对于多核cpu,该子系统可以设置进程组只能在指定的核上运行,并且还可以设置进程组在指定的内存节点上申请内存。

3) cpuacct子系统:该子系统只用于生成当前进程组内的进程对cpu的使用报告。

4) memory子系统:该子系统提供了以页面为单位对内存的访问,比如对进程组设置内存使用上限等,同时可以生成内存资源报告

5) blkio子系统:该子系统用于限制每个块设备的输入输出。首先,与CPU子系统类似,该系统通过为每个进程组设置权重来控制块设备对其的I/O时间;其次,该子系统也可以限制进程组的I/O带宽以及IOPS。

6) devices子系统:通过该子系统可以限制进程组对设备的访问,即该允许或禁止进程组对某设备的访问。

7) freezer子系统:该子系统可以使得进程组中的所有进程挂起。

8) net-cls子系统:该子系统提供对网络带宽的访问限制,比如对发送带宽和接收带宽进程限制。

如果要实现子系统对所属进程组的资源控制,那么就要实现该子系统对应的钩子函数。这个关系与虚拟文件系统类似,VFS提供统一的用户接口,而具体的文件操作则通过文件系统(比如ext3)对钩子函数的实现。具体关系如下图:

cgroup_struct

由图可以看出,cgroup在用户态提供统一的用户接口,而每个子系统对资源的控制功能则通过其钩子函数实现。这样使得cgroup在上层是一个统一的框架,而下层则可以实现多种资源的控制。每个子系统的钩子函数如下:

1structcgroup_subsys {
2        structcgroup_subsys_state *(*css_alloc)(structcgroup *cgrp);
3        int(*css_online)(structcgroup *cgrp);
4        void(*css_offline)(structcgroup *cgrp);
5        void(*css_free)(structcgroup *cgrp);
6 
7        int(*can_attach)(structcgroup *cgrp, structcgroup_taskset *tset);
8        void(*cancel_attach)(structcgroup *cgrp, structcgroup_taskset *tset);
9        void(*attach)(structcgroup *cgrp, structcgroup_taskset *tset);
10        void(*fork)(structtask_struct *task);
11        void(*exit)(structcgroup *cgrp, structcgroup *old_cgrp,
12                     structtask_struct *task);
13        void(*bind)(structcgroup *root);
14        …… ……
15}

3 cgroup文件系统

cgroup在Linux内核中是以文件系统的形式存在的,不过cgroup对应的这种文件系统与proc文件系统类似,都是只存在于内存中的“虚拟”文件系统。既然如此,就可以通过mount命令创建一个cgroup实例。

1$ sudo mount -t cgroup -o memory memory_cgroup /dev/cgroup/

即在/dev/cgroup/下创建了一个memory子系统。接下来就可以通过:

1$ cat /proc/filesystems | grep cgroup

可看到系统有了cgroup类型的文件系统。

当创建了一个cgroup实例后,对应的挂载点下会有一些文件,这些文件是用户与cgroup进行交互的接口。由于cgroup位于VFS层之下,因此用户可以通过统一的文件操作接口去读取或设置子系统的参数,当然也可以直接使用echo或者cat等命令。

参考:

1.Linux内核文档:

https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt


原文链接:http://edsionte.com/techblog/archives/4314

http://www.jmfq.cn/news/5220649.html

相关文章:

  • 专做和田玉的网站/0元入驻的电商平台
  • 旅游网站做模板素材/营销软文范例大全100
  • 如何对网站的图片做cdn/制造业中小微企业
  • 网站正在建设中 模板 下载/windows优化大师有什么功能
  • 如何做电子书网站/外链网站大全
  • 网站开发 合作协议/网站策划
  • 网站栏目建设调研/百度怎么做广告推广
  • 电脑端网站和手机网站区别/今日新闻头条新闻
  • 建设部住房城乡建设厅网站/关键词分布中对seo有危害的
  • 湖南做网站磐石网络案例/企业培训考试
  • 网页搜索功能怎么实现/网站推广seo招聘
  • 网站设计技术有哪些/深圳网络营销平台
  • 医社保增减员在什么网站做/免费b站推广
  • 做设计必知网站/小程序开发平台官网
  • html后台网站模板/产品关键词
  • 用表格做网站教程/app开发者需要更新此app
  • 网站建设责任分工/网址导航怎样推广
  • 朋友圈网站广告怎么做/网络推广的方法有多选题
  • 绛县做网站/搜索引擎优化规则
  • 百度贴吧有没有做网站的人/昆明seo排名外包
  • 小企业如何优化网站建设/天津seo培训机构
  • 网站建设公司位置/网页制作软件
  • php网站欣赏/seo网站优化价格
  • 宁夏网站建设优化/seo培训优化
  • 企业网站制作规划/关键词优化排名详细步骤
  • 云虚拟主机做视频网站/seo快速排名系统
  • 哪个网站做二手车买卖/最新小组排名
  • dw做网站怎么写弹出客服邮箱/企业网搭建
  • 电视盒子做网站服务器/中国最新军事新闻最新消息
  • 龙口做网站es158/赣州网站建设