- 浏览: 182562 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (99)
- 备忘录 (48)
- linux (19)
- oracle (10)
- shell (8)
- awk (1)
- java (48)
- just do it (29)
- more and more (46)
- common (29)
- 设计模式 (8)
- Java Web (9)
- Spring (0)
- Structs 2 (2)
- Java 高级 (4)
- 存储 (3)
- Virtual Box (1)
- ant (1)
- maven (0)
- 数据结构 (5)
- 算法 (5)
- javascript (1)
- ajax (1)
- jquery (1)
- xml (1)
- IBM (3)
- 转载 (3)
- English (2)
- html&css (0)
- hibernate (2)
- mysql (1)
- memcached (1)
最新评论
-
飞出四季做的茧:
kris_zhang 写道int temp = 0 ; ...
Java IO流 Zip文件的压缩和解压缩 -
kris_zhang:
int temp = 0 ; while(( ...
Java IO流 Zip文件的压缩和解压缩 -
welcomezhang:
学习了,这块自己还得深挖下
为什么HashMap不是线程安全的 -
fomeiherz:
这个写的最详细了,赞一个
Java的泛型类和泛型方法 -
beijishiqidu:
hanmiao 写道http://yangguangfu.it ...
Java设计模式之策略模式
Cgroups是control groups的缩写,最初由Google工程师提出,后来编进linux内核。
Cgroups是实现IaaS虚拟化(kvm、lxc等),PaaS容器沙箱(Docker等)的资源管理控制部分的底层基础。
首先来一张来对比下当前进行操作系统资源使用率的技术。
本文将采用三个示例来展示cgroups的作用。
测试环境准备:
1.win7下安装virtualbox,虚拟机中安装了centos6.8.
2.下文将会用到iotop命令进行io使用率的查看,这个版本中没有安装,请在有网络的情况下执行一下命令进行安装:
3.请确保cgroups服务已经启动了,如果没有请先启动服务,相关命令如下:
4.在/cgroup,有如下文件夹,默认是多挂载点的形式,即各个子系统的配置在不同的子文件夹下
cgroups管理进程cpu资源
模拟耗cpu很多的脚本:
当时在执行这个命令之前有一个疑问,就是我并没有创建上述几个文件,我只是创建了foo目录,实际上cgroups在你创建这个foo目录的时候已经帮你创建好了。
然后top的实时统计数据如下,cpu占用率将近50%,看来cgroups关于cpu的控制起了效果
cgroups管理进程内存资源
模拟耗内存很多的脚本:
下面用cgroups控制这个进程的内存资源
从上述结果可以看出来,实际上t2.sh进程的运行状态已经不正常了(D),一会又是S,一会又是D,其实表明状态异常。
有人说时间长了,会被cgroups干掉,但是我模拟了好长时间都没有出现这个情况,仅仅是进程状态异常。
针对内存的配置里面有很多的配置文件如下:
cgroups管理进程io资源
模拟一个耗io的脚本
通过iotop看io占用情况,磁盘速度
下面用cgroups控制这个进程的io资源
再通过iotop看,确实将读速度降到了1M/s(因为截图不太方便,所以图中的进程号对不上,不过不影响阅读)
跟cpu和memeory一样,io也有很多配置在/cgroup/blkio/foo/
参考:http://www.cnblogs.com/yanghuahui/p/3751826.html
Cgroups是实现IaaS虚拟化(kvm、lxc等),PaaS容器沙箱(Docker等)的资源管理控制部分的底层基础。
首先来一张来对比下当前进行操作系统资源使用率的技术。
本文将采用三个示例来展示cgroups的作用。
测试环境准备:
1.win7下安装virtualbox,虚拟机中安装了centos6.8.
2.下文将会用到iotop命令进行io使用率的查看,这个版本中没有安装,请在有网络的情况下执行一下命令进行安装:
yum install iotop
3.请确保cgroups服务已经启动了,如果没有请先启动服务,相关命令如下:
service cgconfig status #查看cgroups服务当前的运行状态 service cgconfig start #开启cgroups服务 chkconfig cgconfig on #开启开启启动,如果不想开机自启动时,此处可以不用执行
4.在/cgroup,有如下文件夹,默认是多挂载点的形式,即各个子系统的配置在不同的子文件夹下
[root@bogon ~]# ls /cgroup/ blkio cpu cpuacct cpuset devices freezer memory net_cls [root@bogon ~]#
cgroups管理进程cpu资源
模拟耗cpu很多的脚本:
[root@bogon ~]# cat t1.sh #!/bin/bash x=0; while [ true ] do x=$x+1 done; [root@bogon ~]#top可以看到这个脚本基本占了100%的cpu资源
[root@bogon foo]# top top - 22:13:41 up 1:52, 4 users, load average: 0.99, 1.09, 1.07 Tasks: 187 total, 2 running, 185 sleeping, 0 stopped, 0 zombie Cpu(s): 97.3%us, 2.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.7%hi, 0.0%si, 0.0%st Mem: 1020076k total, 929336k used, 90740k free, 165328k buffers Swap: 1257468k total, 202312k used, 1055156k free, 195172k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3834 root 20 0 103m 1348 1012 R 91.4 0.1 0:11.14 t1.sh下面用cgroups控制这个进程的cpu资源
mkdir -p /cgroup/cpu/foo/ #新建一个控制组foo echo 50000 > /cgroup/cpu/foo/cpu.cfs_quota_us #将cpu.cfs_quota_us设为50000,相对于cpu.cfs_period_us的100000是50% echo 3834 > /cgroup/cpu/foo/tasks #将当前的进程号写进这个文件中就能动态控制了,如果要控制多个进程的话,以添加模式写入此文件即可
当时在执行这个命令之前有一个疑问,就是我并没有创建上述几个文件,我只是创建了foo目录,实际上cgroups在你创建这个foo目录的时候已经帮你创建好了。
然后top的实时统计数据如下,cpu占用率将近50%,看来cgroups关于cpu的控制起了效果
[root@bogon foo]# top top - 22:16:18 up 1:55, 4 users, load average: 1.40, 1.21, 1.12 Tasks: 183 total, 2 running, 181 sleeping, 0 stopped, 0 zombie Cpu(s): 52.5%us, 0.7%sy, 0.0%ni, 46.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1020076k total, 929392k used, 90684k free, 165572k buffers Swap: 1257468k total, 193008k used, 1064460k free, 211440k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3834 root 20 0 104m 1808 1012 R 49.9 0.2 2:24.99 t1.sh
cgroups管理进程内存资源
模拟耗内存很多的脚本:
[root@bogon ~]# cat t2.sh #!/bin/bash x="a"; while [ true ] do x=$x$x done; [root@bogon ~]#top看内存占用持续上升,直至内存耗尽(此处模拟了好几次,因此伤处脚本运行太快了,导致机器卡死了,所以就不贴出对应的结果了)
下面用cgroups控制这个进程的内存资源
mkdir -p /cgroup/memory/foo echo 1048576 > /cgroup/memory/foo/memory.limit_in_bytes #分配1MB的内存给这个控制组 echo 3865 > /cgroup/memory/foo/tasks #当前t2.sh运行时的进程id
[root@bogon foo]# top top - 22:29:10 up 2:08, 4 users, load average: 0.96, 1.16, 1.21 Tasks: 184 total, 1 running, 183 sleeping, 0 stopped, 0 zombie Cpu(s): 2.2%us, 2.2%sy, 0.0%ni, 0.0%id, 94.5%wa, 0.7%hi, 0.4%si, 0.0%st Mem: 1020076k total, 755616k used, 264460k free, 8812k buffers Swap: 1257468k total, 543968k used, 713500k free, 189176k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3878 root 20 0 743m 129m 1020 D 4.3 13.0 0:19.92 t2.sh
从上述结果可以看出来,实际上t2.sh进程的运行状态已经不正常了(D),一会又是S,一会又是D,其实表明状态异常。
有人说时间长了,会被cgroups干掉,但是我模拟了好长时间都没有出现这个情况,仅仅是进程状态异常。
针对内存的配置里面有很多的配置文件如下:
[root@bogon ~]# ls /cgroup/memory/foo/ cgroup.event_control memory.move_charge_at_immigrate cgroup.procs memory.oom_control memory.failcnt memory.soft_limit_in_bytes memory.force_empty memory.stat memory.limit_in_bytes memory.swappiness memory.max_usage_in_bytes memory.usage_in_bytes memory.memsw.failcnt memory.use_hierarchy memory.memsw.limit_in_bytes notify_on_release memory.memsw.max_usage_in_bytes tasks memory.memsw.usage_in_bytes [root@bogon ~]#
cgroups管理进程io资源
模拟一个耗io的脚本
[root@bogon ~]# cat t3.sh #!/bin/bash dd if=/dev/sda of=/dev/null [root@bogon ~]#
通过iotop看io占用情况,磁盘速度
下面用cgroups控制这个进程的io资源
mkdir -p /cgroup/blkio/foo echo '8:0 1048576' > /cgroup/blkio/foo/blkio.throttle.read_bps_device #8:0对应主设备号和副设备号,可以通过ls -l /dev/sda查看 echo 4023 > /cgroup/blkio/foo/tasks
再通过iotop看,确实将读速度降到了1M/s(因为截图不太方便,所以图中的进程号对不上,不过不影响阅读)
跟cpu和memeory一样,io也有很多配置在/cgroup/blkio/foo/
[root@bogon ~]# ls /cgroup/blkio/foo/ blkio.io_merged blkio.sectors blkio.time blkio.io_queued blkio.throttle.io_service_bytes blkio.weight blkio.io_service_bytes blkio.throttle.io_serviced blkio.weight_device blkio.io_serviced blkio.throttle.read_bps_device cgroup.event_control blkio.io_service_time blkio.throttle.read_iops_device cgroup.procs blkio.io_wait_time blkio.throttle.write_bps_device notify_on_release blkio.reset_stats blkio.throttle.write_iops_device tasks [root@bogon ~]#
参考:http://www.cnblogs.com/yanghuahui/p/3751826.html
发表评论
-
新安装RedHat6.1 yum upgrade报错
2016-06-19 18:54 1311错误提示信息如下: --> Processing D ... -
安装rpm文件时出现“warning: rpmts_HdrFromFdno”解决办法
2016-06-19 18:28 976安装rpm文件时出现“warning: rpmts_HdrF ... -
rpm --nodeps——坑爹的参数啊
2016-06-19 18:05 2755序 最近都在virtualbox ... -
linux下设置ssh免密码登陆的配置步骤
2016-04-24 16:10 913预制条件: 两台linux主机,ip地址为: 192. ... -
CentOS启动邮件服务很慢的问题
2016-04-10 18:02 673一直在virtualbox下玩linux,但是最近无意间发 ... -
linux下安装memcached出错的解决办法
2015-08-16 16:05 2860在CentOS 5下安装memcached失败报如下错误: ... -
linux下文件描述符的介绍
2015-08-15 14:57 1838当某个程序打开文件时,操作系统返回相应的文件描述符,程序为 ... -
eclipse中查看jdk的源码
2014-11-23 11:43 1070最近一段时间跟jdk源码打交道的比较多,但是有的时候却是看 ... -
Oracle常见死锁发生的原因以及解决办法
2014-08-31 13:25 7563一,删除和更新之间引起的死锁 造成死锁的原因就是多个线程 ... -
Struts2学习初设系列(一)之环境搭建
2014-07-20 22:47 1106已经毕业很长时间了,回过头来想想都不知道自己做了什么,由于 ... -
KeyTool的简单用法介绍
2014-11-23 11:57 1430keytool 是个密钥和 ... -
HTTPS的七个误解(译文)
2014-04-03 22:23 698开发网页的时候,往往需要观察HTTP通信。 我使用的工具 ... -
Java的泛型类和泛型方法
2014-03-13 15:36 5426泛型(Generic Type)是JDK1.5引入的影响最深远 ... -
Java模式之适配器模式
2014-02-27 09:41 0首先,先来先讲讲适配器。适配就是由“源”到“目标”的适配,而 ... -
DWR框架的简单介绍
2014-01-12 21:58 2092概念: DWR是一种AJAX的JAVA实现,它提供了一种能在 ... -
Java Web的监听器简单介绍
2014-01-11 20:06 1520监听器的相关概念: 在Web应用中部署监听程序可以跟踪Web ... -
Java Web的过滤器简单介绍
2014-01-11 19:31 1508之前分享了一篇别人写 ... -
Java Web笔记 – Servlet中的Filter过滤器的介绍和使用 编写过滤器
2014-01-11 17:52 01、过滤器介绍: 在Servlet规范2.3中定义了过滤器 ... -
Java语言对国际化的支持
2014-01-11 14:37 1547最近在做项目的时候,由于用到Java基础的东西比较少,都是一些 ... -
SSH连接Virtualbox的Centos虚拟系统配置
2014-01-11 12:03 0首先,配置虚拟机的网络配置参数 选择Centos虚拟机- ...
相关推荐
其中,CPU 资源隔离是 Cgroup 中的一种重要机制,用于控制进程对 CPU 资源的占用和分配。在本文中,我们将详细介绍 Cgroup 在 CPU 资源隔离方面的机制和配置。 Cgroup 中的 CPU 资源隔离机制可以将进程绑定到指定的...
资源控制都以控制组为单位实现,一个进程可以加入不同的控制组,从一个控制组迁移到另一个控制组,并使用控制组分配的资源,同时受到资源限制。控制组可以形成层级结构,层级上的子节点控制组是父节点控制组的“孩子...
控制群组(control group)(在此指南中简写为 cgroup)是 Linux kernel 的一项功能:在一个系统中运行的层级制进程组,您可对其进行资源分配(如 CPU 时间、系统内存、网络带宽或者这些资源的组合)。通过使用 ...
通过这些控制器,Cgroup能够实现对进程资源使用的精细化管理。 #### 三、技术实现与应用场景 在本项目中,Cgroup技术被应用于xen虚拟机上运行的Java应用,旨在实现资源的动态分配。具体应用场景包括: 1. **...
Linux运维-运维课程MP4频-05容器-08Cgroup限制进程对memory使用案例.mp4
cgroup原理和实现,Cgroups 是 control groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组 (process groups)所使用的物理资源(如:cpu,memory,IO 等等)的机制。最初由 google 的 工程师提出,后来被...
例如,`/sys/fs/cgroup/cpu`用于管理CPU使用,`/sys/fs/cgroup/memory`用于内存控制。在Android系统中,cgroup控制器的配置通常在`/system/etc/cgroups.json`文件中定义,由init进程自动mount并应用配置。 F2_F3 ...
通过深入理解和熟练使用控制组,IT专业人员可以更有效地管理系统的资源,提升整体的系统效率和稳定性。在源码层面,理解cgroups的实现原理也有助于开发高效且资源友好的软件解决方案。因此,无论是系统管理员还是...
Android 使用 cgroup 控制及考量 CPU 和内存等系统资源的使用和分配情况。 cgroup 的概念是将进程分组,但是目的与 namespace 不一样,namespace 是为了隔离进程组之前的资源,而 cgroup 是为了对一组进程进行统一...
**Cgroup(控制组)**是Linux内核中一种强大的工具,用于限制、记录和隔离进程组的资源使用。在单机资源管理中,Cgroup扮演着至关重要的角色,它使得系统管理员能够精细化地控制各个应用程序对硬件资源的访问,如CPU...
通过将一组进程分配到不同的cgroup中,系统管理员可以分别控制这些进程可以使用的资源,例如CPU、内存、磁盘I/O等。 在Docker中,cgroup被用来为容器指定资源限制,确保容器不会消耗超出分配的资源,从而为系统中的...
例如,cpu子系统负责CPU资源的分配,memory子系统负责内存资源的分配,而blockIO子系统(blkcg)负责磁盘I/O资源。网络子系统(net_cls、net_prio)管理网络资源,而devices子系统控制设备访问权限,freezer子系统...
通过这个子系统,用户可以设定每个cgroup能使用的最大大页内存数量,限制各个进程或服务的大页内存使用,从而实现更精细的内存资源控制。 在提供的文件列表中,`hugetlb_cgroup.c`和`hugetlb_cgroup.h`是与实现和...
从路径/sys/fs/cgroup/memory/memory读取: 原始值: stat.rss :匿名和交换高速缓存内存的字节数 kmem.usage_in_bytes :当前内核内存分配 limit_in_bytes :内存使用限制 计算值: containerUsage() : stats....
创建CPU和内存cgroup $ sudo mkdir -p /sys/fs/cgroup/cpu/prison $ sudo mkdir -p /sys/fs/cgroup/memory/prison 设置CPU和内存限制 $ sudo sh -c 'echo 10000 > /sys/fs/cgroup/cpu/prison/cpu.cfs_period_us' $ ...
它允许系统管理员对进程进行细粒度的资源限制、隔离、配额和优先级控制,包括CPU时间、内存使用、磁盘I/O、网络带宽等。cgroups在云计算、容器技术(如Docker和LXC)以及系统调度等领域有广泛应用。 cgroups的核心...
Linux内核中的CGroup(Control Groups)是一种强大的系统资源管理工具,...正确配置和使用CGroup的内存管理功能,可以帮助优化系统资源利用率,防止资源耗尽导致的系统崩溃,尤其在运行大量服务和应用的服务器环境中。
在Linux系统中,可以使用`/proc/stat`文件或者`/sys/fs/cgroup/cpuacct/*`目录下的文件来获取CPU使用率;在Windows系统中,可以通过Performance Counter API来获取。 客户端(浏览器)端,可能使用JavaScript的...