Cgroup 的全称是control group,早期由谷歌的工程师开发,用来对系统的cpu,内存,磁盘,带宽进行分组,然后分配程序在这些组里面运行。下面的实验是在cento中做的。
-
1:安装group:yum install libcgroup
-
2:通过这个命令可以查找到安装的cgroup相关文件的路径:rpm –query –list libcgroup | less
-
3:通过 less /etc/cgcconfig.conf 可以查看到cgroup的子系统。
d: 开启cgroup服务 service cgconfig start
e: 这时候在 /cgroup目录下面的子目录就可以显示出来了。
-
4: 查看其中一个目录下面的内容:ls -l /cgroup /blkio
task 中包含的是由这个cgroup组控制的进程。可以通过echo “pid” > tasks 的命令向这个组中增加进程。
-
5:在blkio目录下创建一个子文件夹,在这个子文件夹中会发现内容和父目录的一样。
-
6:通过lscgroup 可以看到当前存在的cgroup控制组。
由于没有比较好的可视化的工具,所以不做磁盘读写速率的实验,而是做内存的控制实验.
-
7: 写一个程序,每次申请1M的空间,循环50次。
-
8:在memory目录下面创建一个文件夹(test_memory).
-
9:配置内存限制为5M.
-
10:指定程序memory_limit 在test_memory的cgroup下运行。在申请的内存超过5M后程序就会被杀死。
cgexec -g memory:/test_memory ~/github/memory_limit
通过dmsg命令也可以看到进程被kill掉的信息。
其它相关命令:
1:创建文件的命令:
dd if=/dev/zero of=file-abc bs=1M count=3000
2:drop cache 的命令:
echo 3 > /proc/sys/vm/drop_caches.
3:cgroup 各项参数的说明:
https://www.kernel.org/doc/Documentation/cgroup-v1/
4:查看linux的磁盘命令:
ls -l /dev/sda*
5:iotop 工具可以查看io的读写速率。通过yum install iotop 进行安装后运行就可以了。
6:sync 命令可以将数据刷到磁盘中。
7:cgroup的一些其它的调试命令:
cgsnapshot -s 可以查看当前配置的cgroup组。
/etc/cgrules.conf 可以配置一些规则。如配置某一个用户归哪一个cgroup组管。
8:chkconfig –list | grep cg. 有空可以研究一下 cgred
本文中的内容按照如下的博客进行。
https://sysadmincasts.com/episodes/14-introduction-to-linux-control-groups-cgroups
网友评论