实验环境: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. URL编码,空格和+

    下表中列出了一些URL特殊符号及编码 + URL 中+号表示空格 %2B 空格 URL中的空格可以用+号或者编码 %20 / 分隔目录和子目录 %2F ? 分隔实际的URL和参数 %3F % 指定特殊 ...

  2. windows下用Eclipse连接大数据环境得hbase

    1.解压hbase安装包 2.将大数据环境得hadoop安装包拷贝到windows(这里以d:/hadoop为例) 3.打开C:\Windows\System32\drivers\etc目录下的hos ...

  3. mstsc远程登录设置

    mstsc终于可以连上了, 1.系统属性 远程允许, 2.开启三个服务: Remote Desktop ConfigurationRemote Desktop ServicesRemote Deskt ...

  4. hdu 4050(概率dp)

    算是挺简单的一道概率dp了,如果做了前面的聪聪于可可的话,这题不需要什么预处理,直接概率dp就行了... #include <stdio.h> #include <stdlib.h& ...

  5. 【NOI2015】品酒大会[后缀数组]

    #131. [NOI2015]品酒大会 统计 描述 提交 自定义测试 一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品酒家”和“首席猎手”两个奖项, ...

  6. cocos2d-X学习之主要类介绍:场景(CCScene)

    场景(CCScene) 类结构: CCScene主要有以下两个函数: bool  init () //初始化函数 static CCScene *  node (void) //生CCScene 作为 ...

  7. 转义字符的理解(JAVA、字符串和正则表达式)

    一.原理总结: 要理解转义,首先要从正则表达式说起. 在正则表达式中:*和\是特殊字符:为了匹配这两个字符本身,正则表达式中需要写为\*和\\ 在Java中,只能用字符串表示正则表达式,所以需要把\* ...

  8. MD5-【验签】

    MD5是什么? MD5是message-digest algorithm 5(信息-摘要算法)的缩写,被广泛用于加密和解密技术上,它可以说是文件的"数字指纹".任何一个文件,无论是 ...

  9. C Plus Plus 基础

    C Plus Plus 基础 一.变量和基本类型 1.const 限定符号 const --> constant(中文意思:不停的,不断的,一直不变的) ①代替Magic Number(即『无意 ...

  10. When an HTTP server receives a request for a CGI script

    cgicc: Overview of the Common Gateway Interface https://www.gnu.org/software/cgicc/doc/cgi_overview. ...