Docker容器技术之cgroup搭建

本文详细介绍了Linux cgroup的概念、作用,包括资源限制、优先级控制、资源记录和进程隔离等功能。并具体阐述了如何部署cgroup,特别是针对CPU和内存的限制,通过实例展示了如何在Docker容器中限制CPU使用率和内存占用,帮助理解cgroup在容器技术中的应用。
摘要由CSDN通过智能技术生成

一、知识剖析

1.什么是cgroup

  • Cgroups 是 control groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。最初由 google 的工程师提出,后来被整合进 Linux内核。Cgroups 也是 LXC 为实现虚拟化所使用的资源管理手段,可以说没有cgroups就没有LXC。

2.cgroup可以干什么

  • 限制进程组可以使用的资源数量(Resource limiting)。比如:memory子系统可以为进程组设定一个memory使用上限,一旦进程组使用的内存达到限额再申请内存,就会出发OOM(out of memory)。
  • 进程组的优先级控制(Prioritization )。比如:可以使用cpu子系统为某个进程组分配特定cpu share。
  • 记录进程组使用的资源数量(Accounting )。比如:可以使用cpuacct子系统记录某个进程组使用的cpu时间
  • 进程组隔离(Isolation)。比如:使用ns子系统可以使不同的进程组使用不同的namespace,以达到隔离的目的,不同的进程组有各自的进程、网络、文件系统挂载空间。
  • 进程组控制(Control)。比如:使用freezer子系统可以将进程组挂起和恢复。

3.cgroup中需要了解的四个概念

  • Subsystems: 称之为子系统,一个子系统就是一个资源控制器,比如 cpu子系统就是控制cpu时间分配的一个控制器。
  • Hierarchies: 可以称之为层次体系也可以称之为继承体系,指的是Control Groups是按照层次体系的关系进行组织的。
  • Control Groups: 一组按照某种标准划分的进程。进程可以从一个Control Groups迁移到另外一个Control Groups中,同时Control Groups中的进程也会受到这个组的资源限制。
  • Tasks: 在cgroups中,Tasks就是系统的一个进程。

二、cgroup的部署

对cpu内存的限制

1.打开docker并检测cgroup是否开启

[root@foundation19 ~]# systemctl start docker
[root@foundation19 ~]# mount -t cgroup    ##都显示on即可

2.查看cgroup子系统的层级路径

[root@foundation19 ~]# cd /sys/fs/cgroup/
[root@foundation19 cgroup]# ll
total 0
drwxr-xr-x. 5 root root  0 Mar 23 08:57 blkio
lrwxrwxrwx. 1 root root 11 Mar 23 08:57 cpu -> cpu,cpuacct
lrwxrwxrwx. 1 root root 11 Mar 23 08:57 cpuacct -> cpu,cpuacct
drwxr-xr-x. 5 root root  0 Mar 23 08:57 cpu,cpuacct
drwxr-xr-x. 3 root root  0 Mar 23 08:57 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值