- 浏览: 183160 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 1314错误提示信息如下: --> Processing D ... -
安装rpm文件时出现“warning: rpmts_HdrFromFdno”解决办法
2016-06-19 18:28 979安装rpm文件时出现“warning: rpmts_HdrF ... -
rpm --nodeps——坑爹的参数啊
2016-06-19 18:05 2766序 最近都在virtualbox ... -
linux下设置ssh免密码登陆的配置步骤
2016-04-24 16:10 918预制条件: 两台linux主机,ip地址为: 192. ... -
CentOS启动邮件服务很慢的问题
2016-04-10 18:02 679一直在virtualbox下玩linux,但是最近无意间发 ... -
linux下安装memcached出错的解决办法
2015-08-16 16:05 2865在CentOS 5下安装memcached失败报如下错误: ... -
linux下文件描述符的介绍
2015-08-15 14:57 1846当某个程序打开文件时,操作系统返回相应的文件描述符,程序为 ... -
eclipse中查看jdk的源码
2014-11-23 11:43 1080最近一段时间跟jdk源码打交道的比较多,但是有的时候却是看 ... -
Oracle常见死锁发生的原因以及解决办法
2014-08-31 13:25 7574一,删除和更新之间引起的死锁 造成死锁的原因就是多个线程 ... -
Struts2学习初设系列(一)之环境搭建
2014-07-20 22:47 1110已经毕业很长时间了,回过头来想想都不知道自己做了什么,由于 ... -
KeyTool的简单用法介绍
2014-11-23 11:57 1437keytool 是个密钥和 ... -
HTTPS的七个误解(译文)
2014-04-03 22:23 703开发网页的时候,往往需要观察HTTP通信。 我使用的工具 ... -
Java的泛型类和泛型方法
2014-03-13 15:36 5429泛型(Generic Type)是JDK1.5引入的影响最深远 ... -
Java模式之适配器模式
2014-02-27 09:41 0首先,先来先讲讲适配器。适配就是由“源”到“目标”的适配,而 ... -
DWR框架的简单介绍
2014-01-12 21:58 2101概念: DWR是一种AJAX的JAVA实现,它提供了一种能在 ... -
Java Web的监听器简单介绍
2014-01-11 20:06 1526监听器的相关概念: 在Web应用中部署监听程序可以跟踪Web ... -
Java Web的过滤器简单介绍
2014-01-11 19:31 1511之前分享了一篇别人写 ... -
Java Web笔记 – Servlet中的Filter过滤器的介绍和使用 编写过滤器
2014-01-11 17:52 01、过滤器介绍: 在Servlet规范2.3中定义了过滤器 ... -
Java语言对国际化的支持
2014-01-11 14:37 1552最近在做项目的时候,由于用到Java基础的东西比较少,都是一些 ... -
SSH连接Virtualbox的Centos虚拟系统配置
2014-01-11 12:03 0首先,配置虚拟机的网络配置参数 选择Centos虚拟机- ...
相关推荐
1. **资源限制**:允许设定每个cgroup可使用的资源总量上限,例如CPU使用率、内存大小等。一旦超出限制,系统会采取相应的措施,如触发OOM(Out Of Memory)杀手,防止系统崩溃。 2. **优先级分配**:通过调整任务在...
* 优先级分配:通过控制分配的 CPU 时间片数量和磁盘 IO 带宽,实际上就等同于控制了任务运行的优先级了。 * 资源统计:Cgroups 可以统计系统的资源使用量,cpu 使用时间、内存用量等。这个功能适用于云端按照使用量...
在内存管理方面,容器内的内存使用情况由Cgroup控制,包括RSS(Resident Set Size)、共享内存和OOM(Out-of-Memory)机制。文件中提到,内存泄漏可能导致容器性能下降,因此需要有策略的内存回收机制,如NUMA(Non-...
- **监控**:对CPU使用率的监控至关重要,以确保容器性能优化和资源平衡。 3. **容器的内存管理** - **Cgroups**:同样用于内存限制,防止一个容器占用过多内存而导致其他容器或系统问题。 - **OOM(Out-of-...
在菜单上选择要控制的用户, 并修改下面两项: Soft FILE size [aaa] Hard FILE size [aaa] 则修改后用户的文件大小最大为aaa×512 bytes. >如何验证? 可以用该用户登录系统, 使用命令“ulimit -f”和“ulimit -...