cgroup--cpu spuset 子系统功能测试

1.       测试目的

  目前最新的稳定版Linux内核(3.2.6)中cgroup的功能和特性都已经比较丰富和完善,用户空间的工具也有了。Cgroup中对于CPU资源的控制主要集中cpu和cpuset这两个子系统,其中cpu子系统主要用来控制进程调度,设置进程占用CPU资源的比重;cpuset则主要是控制进程能够使用哪些CPU和内存节点(NUMA)。

测试的目的主要是对  cgroup 中 cpu 和cpuset这两个子系统的功能进行验证,探索cpu.shares、cpu.rt_period_us 、cpu.rt_runtime_us 等参数功能和使用方法。

2    测试平台:

ubuntu 11.10
3.0.0-26-generic-pae
4  Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz

3 测试过程

挂载:

mount -t tmpfs cgroup_root /sys/fs/cgroup
mkdir /sys/fs/cgroup/cpuset
mount -t cgroup -ocpuset cpuset /sys/fs/cgroup/cpuset
创建目录:
root@ubuntu:/sys/fs/cgroup/cpuset# mkdir tailor tinker

挂载 :

root@ubuntu:~# mount -t cgroup -o cpu none /sys/fs/cgroup/cpu

创建目录:

root@ubuntu:/sys/fs/cgroup/cpu# mkdir tailor tinker

启动两个测试程序:

sina@ubuntu:~$ ./a.out &

[2] 3944

sina@ubuntu:~$ ./a.out &

[2] 3945


将测试进程放到 cpu cpuset分支里面:

sina@ubuntu:/sys/fs/cgroup/cpuset/tinker$ echo 3944 > tasks
sina@ubuntu:/sys/fs/cgroup/cpuset/tailor$ echo 3945 > tasks
sina@ubuntu:/sys/fs/cgroup/cpu/tailor$ echo 3945 > tasks
sina@ubuntu:/sys/fs/cgroup/cpu/tinker$ echo 3944 > tasks

设置 cpu分支里面的 cpu.shares
sina@ubuntu:/sys/fs/cgroup/cpu/tailor$ echo 1024 > cpu.shares
sina@ubuntu:/sys/fs/cgroup/cpu/tinker$ echo 512 > cpu.shares
设置两个组的cpu affinity:
sina@ubuntu:/sys/fs/cgroup/cpuset/tailor$ echo 3 > cpuset.cpus
sina@ubuntu:/sys/fs/cgroup/cpuset/tinker$ echo 3 > cpuset.cpus

一段时间之后观察cpu使用率:(因为 内核调度等方面的原因,需要等待很久才能得到如下结果)

root@ubuntu:~# ps -C a.out -opid,%cpu,psr,args
  PID %CPU PSR COMMAND
 3944 33.6   3 ./a.out
 3945 66.4   3 ./a.out
再启动一个测试程序:
sina@ubuntu:~$ ./a.out &
[2] 5503


可观察到cpu使用率是 100%:

root@ubuntu:~# ps -C a.out -opid,%cpu,psr,args
  PID %CPU PSR COMMAND
 5503 99.6   1 ./a.out


仅将进程 5503 放到 cpu子系统中,一段时间后观察cpu使用率:

root@ubuntu:/sys/fs/cgroup/cpu/tailor# echo 5503 > tasks

可看到几乎没什么变化:(因为这个时候还没有设置 进程的cpu affinity 属性)

root@ubuntu:~# ps -C a.out -opid,%cpu,psr,args
  PID %CPU PSR COMMAND
 3944 33.6   3 ./a.out
 3945 66.4   3 ./a.out
 5503 99.6   1 ./a.out

再将进程 5503 放到 cpuset 子系统中,一段时间后观察cpu使用率:
root@ubuntu:/sys/fs/cgroup/cpuset/tailor# echo 5503 > tasks

root@ubuntu:~# ps -C a.out -opid,%cpu,psr,args
  PID %CPU PSR COMMAND
 3944 33.4   3 ./a.out
 3945 33.3   3 ./a.out
 5503 33.3  3 ./a.out

结论:从上面的测试结果可以看出,各个 cgroup 之间基本上能够按照 cpu.shares 设定的比例共享CPU资源,对于同一个cgroup中的一组进程则被公平的调度。

测试运用 cpu.rt_period_us 和 cpu.rt_runtime_us 来控制CPU资源的分配

root@ubuntu:/sys/fs/cgroup/cpu/tailor# echo 200000 > cpu.rt_runtime_us

一段时间之后观察 3 进程的cpu使用率:
root@ubuntu:~# ps -C a.out -opid,%cpu,psr,args
  PID %CPU PSR COMMAND
 3944 33.4   3 ./a.out
 3945 10.0   3 ./a.out
 5503 9.9   3 ./a.out


通过上面结果可以看出   设置  cpu.rt_runtime_us   和  cpu.rt_period_us  可以 设置CPU的利用率上限,不会让某个进程或虚拟机占用过多的CPU资源。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值