做了两个简单的关于cgroup的实验,记录一下步骤:
1,ubuntu下安装cgroup-bin
sudo apt-get install cgroup-bin
安装以后并没有出现网上教程讲的两个配置文件,/etc/cgconfig.conf和/etc/cgrules.conf,但在/sys/fs里已经出现了cgroup的目录。
2,cpu
1)进入cd /sys/fs/cgroup/cpu
2)mkdir foo(创建一个实验用的cgroup)
3)sudo echo 50000 cpu.cfs_quota_us (设置cpu的时间分配)
4)写一个脚本,在连续不断的使用cpu做运算
============================
#!/bin/sh
x=0
while [ True ];do
x=$x+1
done;
===========================
运行脚本,然后使用top命令可以看到这个脚本使用了100%的cpu
5)将这个进程的pid写到tasks文件中,
6)此时可以看到cpu负载降到50%
3,memory
1)进入cd /sys/fs/cgroup/memory
2)mkdir foo2(创建一个实验用的cgroup)
3)cd foo2, sudo echo 1024 > memory.limit_in_bytes
4)写一个脚本,连续不断的分配内存
===========================
#!/usr/bin/env python
import os
import time
pid_num = os.getpid()
#print pid_num
var = 1
a = "abcdefgh"
b = "abcdefgh"
c = ""
time.sleep(10)
#while var == 1:
for i in range(1,30000000):
c = "####".join([a,b]) + c
===========================================
5)将这个进程的pid写到tasks文件中,
echo pid > /sys/fs/cgroup/memory/foo/tasks
6)过了不久,可以看到这个进程被杀掉了
song@song-Lenovo-ideapad-300S-14ISK:~/cgroups-studying$ python3 run_mem.py
Killed
cgroup是一个相对复杂的模块,涉及到cpu的调度,内存的管理,以及device,IO等模块,接下来我会继续看看cgroup在内核和userspace中的代码,尝试了解一下原理。
echo pid > /sys/fs/cgroup/cpu/foo/tasks
6)此时可以看到cpu负载降到50%
3,memory
1)
1)进入cd /sys/fs/cgroup/memory
2)mkdir foo2(创建一个实验用的cgroup)
3)cd foo2, sudo echo 1024 > memory.limit_in_bytes
4)写一个脚本,连续不断的分配内存
===========================
#!/usr/bin/env python
import os
import time
pid_num = os.getpid()
#print pid_num
var = 1
a = "abcdefgh"
b = "abcdefgh"
c = ""
time.sleep(10)
#while var == 1:
for i in range(1,30000000):
c = "####".join([a,b]) + c
===========================================
5)将这个进程的pid写到tasks文件中,
echo pid > /sys/fs/cgroup/memory/foo/tasks
6)过了不久,可以看到这个进程被杀掉了
song@song-Lenovo-ideapad-300S-14ISK:~/cgroups-studying$ python3 run_mem.py
Killed
cgroup是一个相对复杂的模块,涉及到cpu的调度,内存的管理,以及device,IO等模块,接下来我会继续看看cgroup在内核和userspace中的代码,尝试了解一下原理。
优酷里有一个系列的视频,关于CPU资源分配,做的实验比较复杂,分析的也比较透彻,可以参考。
http://v.youku.com/v_show/id_XMTQyNTMyMjI3Ng==.html?from=s1.8-1-1.2&spm=a2h0k.8191407.0.0
http://v.youku.com/v_show/id_XMTQyNTM3Mzg5Ng==.html?spm=a2h0j.8191423.module_basic_relation.5~5!2~5~5!3~5~5~A
http://v.youku.com/v_show/id_XMTQyNTM5ODY3Ng==.html?spm=a2h0j.8191423.module_basic_relation.5~5!2~5~5!4~5~5~A