利用cgroup控制进程使用的资源(cpu、内存等)
实验环境:centos 6.10
1.安装libcgroup
yum install -y libcgroup
2.进入资源控制器默认挂载目录/cgroup
[root@hadoop1 cgroup]# cd /cgroup/
[root@hadoop1 cgroup]# ll
total
drwxr-xr-x. root root Nov : blkio
drwxr-xr-x. root root Nov : cpu
drwxr-xr-x. root root Nov : cpuacct
drwxr-xr-x. root root Nov : cpuset
drwxr-xr-x. root root Nov : devices
drwxr-xr-x. root root Nov : freezer
drwxr-xr-x. root root Nov : memory
drwxr-xr-x. root root Nov : net_cls
3.创建两个测试脚本,use_cpu.sh模拟使用cpu的进程,use_mem.sh模拟使用内存的进程
[root@hadoop1 cgroup]# ll
total
drwxr-xr-x. root root Nov : blkio
drwxr-xr-x. root root Nov : cpu
drwxr-xr-x. root root Nov : cpuacct
drwxr-xr-x. root root Nov : cpuset
drwxr-xr-x. root root Nov : devices
drwxr-xr-x. root root Nov : freezer
drwxr-xr-x. root root Nov : memory
drwxr-xr-x. root root Nov : net_cls
-rwxr-xr-x. root root Nov : use_cpu.sh
-rwxr-xr-x. root root Nov : use_mem.sh [root@hadoop1 cgroup]# cat use_cpu.sh
#!/bin/bash
x=0
while [ true ]; do
x=$x+1
done;
[root@hadoop1 cgroup]# cat use_mem.sh
#!/bin/bash
x="a"
while [ true ];do
x=$x$x
done;
4.直接运行脚本,分别查看cpu和内存的使用情况
[root@hadoop1 cgroup]# nohup ./use_cpu.sh &
[]
[root@hadoop1 cgroup]# nohup: ignoring input and appending output to `nohup.out'
[root@hadoop1 cgroup]# top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7817 root 20 0 103m 1724 1148 R 100.0 0.1 0:52.89 use_cpu.sh
[root@hadoop1 cgroup]# kill -9 7817
[root@hadoop1 cgroup]# nohup ./use_mem.sh &
[3] 7822
[root@hadoop1 cgroup]# nohup: ignoring input and appending output to `nohup.out'
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7822 root 20 0 2151m 1.3g 1132 R 100.0 73.3 1:04.15 use_mem.sh
可以看到,cpu使用量几乎达到100%,内存使用量在不断增长,截图为止显示为73.3M。
5.创建一个cpu控制组,然后在其中运行任务,使用top观察结果
[root@hadoop1 cpu]# cgcreate -g cpu:foo
[root@hadoop1 cpu]# echo > foo/cpu.cfs_quota_us # cpu.cfs_period_us中的值为100000,配置50000即使用50%
[root@hadoop1 cgroup]# cgexec -g cpu:foo nohup ./use_cpu.sh &
[]
[root@hadoop1 cgroup]# nohup: ignoring input and appending output to `nohup.out'
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7832 root 20 0 103m 1500 1148 R 49.9 0.1 0:16.01 use_cpu.sh
root S 0.3 0.0 :01.96 jbd2/dm--
root S 0.0 0.0 :02.84 init
root S 0.0 0.0 :00.01 kthreadd
root RT S 0.0 0.0 :00.03 migration/
可以看到,测试进程使用了约50%的cpu。同理测试控制内存,分配10M给进程组
[root@hadoop1 cgroup]# cgcreate -g memory:foo
[root@hadoop1 cgroup]# echo > memory/foo/memory.limit_in_bytes
[root@hadoop1 cgroup]# cgexec -g memory:foo nohup ./use_mem.sh &
[]
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
root 871m 11m R 87.1 0.6 :07.82 use_mem.sh
计算可知,测试进程大约使用了10M内存
利用cgroup控制进程使用的资源(cpu、内存等)的更多相关文章
- 性能优化之基础资源cpu&内存(JVM)
本章主要介绍计算机的一些基础资源以及操作系统处理后的一些基础资源. 主要包括 cpu 内存 磁盘 网络 线程 本章会介绍这些资源的一些原理,介绍如何查看资源的数量,使用情况,对性能和整体计算机执行的一 ...
- Linux下利用CGroup控制CPU、内存以及IO的操作记录
CGroup及其子系统的介绍在这里就不赘述了,可以参考:Linux下CGroup使用说明梳理废话不多说,这里记录下利用CGroup控制CPU.内存以及IO的操作记录: libcgroup工具安装这里以 ...
- linux的cgroup控制
cgroup:control group-控制群组:将用户(的进程)加入某个群组(又叫控制器controller), 通过 指定群组对资源-cpu 内存 network等的使用,来限制用户对计算机资源 ...
- 利用 cgroup 的 cpuset 控制器限制进程的 CPU 使用
最近在做一些性能测试的事情,首要前提是控制住 CPU 的使用量.最直观的方法无疑是安装 Docker,在每个配置了参数的容器里运行基准程序. 对于计算密集型任务,在只限制 CPU 的需求下,直接用 L ...
- [daily][cgroup] 使用cgroup限制进程的CPU占用
参考: https://segmentfault.com/a/1190000008323952 1. 找到cgroup设置的地方. [root@D128 ~]# mount -l |grep cpu ...
- Linux下如何查看哪些进程占用的CPU内存资源最多
linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head linux下获取占用 ...
- 操作系统--进程管理1--单个CPU情况
1.进程概念 进程:一个正在执行的程序:操作系统提出进程概念目的:是为了跟踪程序在执行期间的状态.而程序只是一段代码,是一个静态的概念 无法准确描述程序执行时候发生的一切.程序代码被加载进内存后就以进 ...
- linux进程、线程与cpu的亲和性(affinity)
参考:http://www.cnblogs.com/wenqiang/p/6049978.html 最近的工作中对性能的要求比较高,下面简单做一下总结: 一.什么是cpu亲和性(affinity) C ...
- curl命令,curl实现post,curl监控网页shell脚本,curl多进程实现并控制进程数,
cURL > Docs > Tutorial: http://curl.haxx.se/docs/httpscripting.html 下载单个文件,默认将输出打印到标准输出中(STDO ...
随机推荐
- linx常用查看命令和内存分配及释放
1.命令行 运行时间多久:uptime 查看时间日期: date:date -s '2014-7-4 10:35:20' hwcloc 查看内存分配: top free:http://blog.cs ...
- (转)Java NIO框架
java nio系列文章,转自:http://ifeve.com/overview/ java nio selector深度解析1:http://blog.csdn.net/haoel/article ...
- js 判断数组
这么基础的东西实在不应该再记录了,不过嘛,温故知新~就先从数据类型开始吧 js六大数据类型:number.string.object.Boolean.null.undefined string: 由单 ...
- Ubuntu使用yah3c连接校园网
虽然网上有,但是我还是把这当作学习的一个过程记录下来,以备不时之需. 刚开始总是以为要上校园网就要用inode,所以总是百度谷歌不到方法,后来才知道yah3c不等同于inode,二者应该是并行的关系. ...
- 国内Android源码下载
因国内网络被墙的原因,按照Google提供下载Android源码的方式很难下载到,所以记录一下国内下载Android源码的步骤,主要利用的是清华大学的镜像下载. 说明: 下载环境:Ubuntu14.0 ...
- js一个数组变为指定长度的多个数组
var dataArr = [0,1,2,3,4,5,6,7,8,9,10]; var newArr = []; var s = parseInt(dataArr.length / 4); var n ...
- poj2046
Gap Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 1829 Accepted: 829 Description Le ...
- mvc jsonresult 前台、后台解析
背景介绍:asp.net中使用json对象传参;mvc中可以直接使用jsonresult这个对象 一:怎么使用jsonresult public JsonResult text() { var str ...
- Mac下安装apk(命令形式)
1 连接上设备 2 卸载原有程序 3 进入adb程序目录/Applications/adt-bundle-mac-x86_64-20131030/sdk/platform-tools 4 键入命令 . ...
- 转载:Eslint 规则说明
原文: http://blog.csdn.net/helpzp2008/article/details/51507428 ,//禁止使用alert confirm prompt ,//禁止使用数组构造 ...