实验环境: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、内存等)的更多相关文章

  1. 性能优化之基础资源cpu&内存(JVM)

    本章主要介绍计算机的一些基础资源以及操作系统处理后的一些基础资源. 主要包括 cpu 内存 磁盘 网络 线程 本章会介绍这些资源的一些原理,介绍如何查看资源的数量,使用情况,对性能和整体计算机执行的一 ...

  2. Linux下利用CGroup控制CPU、内存以及IO的操作记录

    CGroup及其子系统的介绍在这里就不赘述了,可以参考:Linux下CGroup使用说明梳理废话不多说,这里记录下利用CGroup控制CPU.内存以及IO的操作记录: libcgroup工具安装这里以 ...

  3. linux的cgroup控制

    cgroup:control group-控制群组:将用户(的进程)加入某个群组(又叫控制器controller), 通过 指定群组对资源-cpu 内存 network等的使用,来限制用户对计算机资源 ...

  4. 利用 cgroup 的 cpuset 控制器限制进程的 CPU 使用

    最近在做一些性能测试的事情,首要前提是控制住 CPU 的使用量.最直观的方法无疑是安装 Docker,在每个配置了参数的容器里运行基准程序. 对于计算密集型任务,在只限制 CPU 的需求下,直接用 L ...

  5. [daily][cgroup] 使用cgroup限制进程的CPU占用

    参考: https://segmentfault.com/a/1190000008323952 1. 找到cgroup设置的地方. [root@D128 ~]# mount -l |grep cpu ...

  6. Linux下如何查看哪些进程占用的CPU内存资源最多

    linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head linux下获取占用 ...

  7. 操作系统--进程管理1--单个CPU情况

    1.进程概念 进程:一个正在执行的程序:操作系统提出进程概念目的:是为了跟踪程序在执行期间的状态.而程序只是一段代码,是一个静态的概念 无法准确描述程序执行时候发生的一切.程序代码被加载进内存后就以进 ...

  8. linux进程、线程与cpu的亲和性(affinity)

    参考:http://www.cnblogs.com/wenqiang/p/6049978.html 最近的工作中对性能的要求比较高,下面简单做一下总结: 一.什么是cpu亲和性(affinity) C ...

  9. curl命令,curl实现post,curl监控网页shell脚本,curl多进程实现并控制进程数,

    cURL > Docs > Tutorial:  http://curl.haxx.se/docs/httpscripting.html 下载单个文件,默认将输出打印到标准输出中(STDO ...

随机推荐

  1. 2017 ACM区域赛(南宁站) 参赛流水账

    day0: 早上四点起床赶飞机,还好没有吵醒室友导致被打死.本来想在飞机上准备一下下周的小测,结果飞机一点都不平稳,只能全程和队友吹逼聊天.下午在宾馆里和johann通关了一部合金弹头,重温了童年的经 ...

  2. poj3683(2-SAT 求任意方案)

    基础的2-SAT求任意方案的题目. Priest John's Busiest Day Time Limit: 2000MS   Memory Limit: 65536K Total Submissi ...

  3. [Algorithms] Sorting Algorithms (Insertion Sort, Bubble Sort, Merge Sort and Quicksort)

    Recently I systematicall review some sorting algorithms, including insertion sort, bubble sort, merg ...

  4. lookcss在深夜23:32开通

    CSS在深夜23:32开通 话说 哥也耐不住寂寞搞个网站玩玩.顺便记录一些生活和学习和工作和思想和神马的点点滴滴~ 好吧 ~本来想起个名字叫涉趣.谁知道百度了一下,已经有人叫这个名字了,杯具,貌似还是 ...

  5. 【谷歌浏览器】在任意页面运行JS

    1.使用谷歌浏览器的调试功能: 在任何页面上运行代码片段 · Chrome 开发者工具中文文档 注:比较简单,直接,不过只能本地执行,只能自己使用.且需自行保存JS文件: 2.使用油猴插件: Tamp ...

  6. python中,有关正则表达式re函数:compile、match、search、findall

    1.全局匹配函数 re.compile(pattern=pattern,re.S).findall(text)函数: compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对 ...

  7. 巨蟒python全栈开发-第18天 核能来袭-类和类之间的关系

    一.今日主要内容: 1.类与类之间的关系 在我们的世界中事物和事物之间总会有一些联系. 在面向对象中,类和类之间也可以产生相关的关系 (1)依赖关系 执行某个动作(方法)的时候,需要xxx来帮助你完成 ...

  8. Oracle Schema Objects——Tables——Table Compression

    Oracle Schema Objects Table Compression 表压缩 The database can use table compression to reduce the amo ...

  9. 9.Query on Embedded/Nested Documents-官方文档摘录

    1.插入案例 db.inventory.insertMany( [ { item: "journal", qty: 25, size: { h: 14, w: 21, uom: & ...

  10. 流畅的python 对象引用 可变性和垃圾回收

    对象引用.可变性和垃圾回收 变量不是盒子 人们经常使用“变量是盒子”这样的比喻,但是这有碍于理解面向对象语言中的引用式变量.Python 变量类似于 Java 中的引用式变量,因此最好把它们理解为附加 ...