title: 在CentOS上使用CGroups隔离硬件资源
date: 2019-07-03 16:30:00
tags:
- CGroups
- docker
- 资源隔离
categories: - Linux
CGroups提供了进程级别的资源(CPU、内存、网络和磁盘等)分配机制,也就是可以限制某一个或者某一组进程的资源使用。
为什么需要这么一种技术呢?
如果你了解过docker,那应该知道容器之间是相互安全隔离的,它的底层实现就是采用的CGroups技术。资源隔离是必要的,在同一台机器上运行着非常多的进程,如果这台机器资源是共享给多个用户在使用,你肯定不想因为某个用户的程序负载过大而影响到所有其它用户,这就需要资源安全隔离,避免发生级联错误。再一个也为了保持大家都公平的使用资源,而不会出现一方过多或另一方过少的情况。
本文不介绍更深层次的实现原因,会把重点放在CGroups使用层面,下面会举个例子详细介绍。
限制CPU使用率
准备一段程序
将下面c代码保存到文件 cputime.c
之中。
void main() {
unsigned int i, end;
end = 1024 * 1024 * 1024;
for(i = 0; i < end; ) {
i ++;
}
}
用gcc命令进行文件编译,如果没有这个命令则使用 yum install -y gcc*
进行安装即可。
gcc cputtime.c -o cputime
执行完上面的命令后会在当前目录生成新可执行文件 cputime
,到这里我们的测试程序就准备完了。
创建控制组
我们将创建一个名称为 cpu_cputime
的控制组,在里面会自动生成cpu控制文件,修改里面的参数就可以达到限制cpu资源的目的了。<